From e7e17b20fc3ac9f9dc11fefdc4c733c86a67cfca Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 27 Oct 2024 19:19:06 +0100 Subject: [PATCH 001/338] Make util.scand a bit more flexible with dates which don't match the given format (bug 1910431) --- src/scripting_api/aform.js | 117 +++--------------------------------- src/scripting_api/util.js | 95 ++++++++++++++++++++++++++++- test/unit/scripting_spec.js | 6 ++ 3 files changed, 108 insertions(+), 110 deletions(-) diff --git a/src/scripting_api/aform.js b/src/scripting_api/aform.js index 355fc8450f976..78a9a312df26c 100644 --- a/src/scripting_api/aform.js +++ b/src/scripting_api/aform.js @@ -38,7 +38,6 @@ class AForm { "m/d/yy HH:MM", ]; this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"]; - this._dateActionsCache = new Map(); // The e-mail address regex below originates from: // https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address @@ -53,120 +52,20 @@ class AForm { return event.target ? `[ ${event.target.name} ]` : ""; } - _tryToGuessDate(cFormat, cDate) { - // We use the format to know the order of day, month, year, ... - - let actions = this._dateActionsCache.get(cFormat); - if (!actions) { - actions = []; - this._dateActionsCache.set(cFormat, actions); - cFormat.replaceAll( - /(d+)|(m+)|(y+)|(H+)|(M+)|(s+)/g, - function (match, d, m, y, H, M, s) { - if (d) { - actions.push((n, date) => { - if (n >= 1 && n <= 31) { - date.setDate(n); - return true; - } - return false; - }); - } else if (m) { - actions.push((n, date) => { - if (n >= 1 && n <= 12) { - date.setMonth(n - 1); - return true; - } - return false; - }); - } else if (y) { - actions.push((n, date) => { - if (n < 50) { - n += 2000; - } else if (n < 100) { - n += 1900; - } - date.setYear(n); - return true; - }); - } else if (H) { - actions.push((n, date) => { - if (n >= 0 && n <= 23) { - date.setHours(n); - return true; - } - return false; - }); - } else if (M) { - actions.push((n, date) => { - if (n >= 0 && n <= 59) { - date.setMinutes(n); - return true; - } - return false; - }); - } else if (s) { - actions.push((n, date) => { - if (n >= 0 && n <= 59) { - date.setSeconds(n); - return true; - } - return false; - }); - } - return ""; - } - ); - } - - const number = /\d+/g; - let i = 0; - let array; - const date = new Date(); - while ((array = number.exec(cDate)) !== null) { - if (i < actions.length) { - if (!actions[i++](parseInt(array[0]), date)) { - return null; - } - } else { - break; - } - } - - if (i === 0) { - return null; - } - - return date; - } - _parseDate(cFormat, cDate, strict = false) { let date = null; try { - date = this._util.scand(cFormat, cDate); + date = this._util._scand(cFormat, cDate, strict); } catch {} - if (!date) { - if (strict) { - return null; - } - let format = cFormat; - if (/mm(?!m)/.test(format)) { - format = format.replace("mm", "m"); - } - if (/dd(?!d)/.test(format)) { - format = format.replace("dd", "d"); - } - try { - date = this._util.scand(format, cDate); - } catch {} + if (date) { + return date; } - if (!date) { - date = Date.parse(cDate); - date = isNaN(date) - ? this._tryToGuessDate(cFormat, cDate) - : new Date(date); + if (strict) { + return null; } - return date; + + date = Date.parse(cDate); + return isNaN(date) ? null : new Date(date); } AFMergeChange(event = globalThis.event) { diff --git a/src/scripting_api/util.js b/src/scripting_api/util.js index 551a3fb600797..cd2f2a6b4502b 100644 --- a/src/scripting_api/util.js +++ b/src/scripting_api/util.js @@ -16,6 +16,8 @@ import { PDFObject } from "./pdf_object.js"; class Util extends PDFObject { + #dateActionsCache = null; + constructor(data) { super(data); @@ -338,7 +340,98 @@ class Util extends PDFObject { return buf.join(""); } + #tryToGuessDate(cFormat, cDate) { + // We use the format to know the order of day, month, year, ... + + let actions = (this.#dateActionsCache ||= new Map()).get(cFormat); + if (!actions) { + actions = []; + this.#dateActionsCache.set(cFormat, actions); + cFormat.replaceAll( + /(d+)|(m+)|(y+)|(H+)|(M+)|(s+)/g, + function (match, d, m, y, H, M, s) { + if (d) { + actions.push((n, date) => { + if (n >= 1 && n <= 31) { + date.setDate(n); + return true; + } + return false; + }); + } else if (m) { + actions.push((n, date) => { + if (n >= 1 && n <= 12) { + date.setMonth(n - 1); + return true; + } + return false; + }); + } else if (y) { + actions.push((n, date) => { + if (n < 50) { + n += 2000; + } else if (n < 100) { + n += 1900; + } + date.setYear(n); + return true; + }); + } else if (H) { + actions.push((n, date) => { + if (n >= 0 && n <= 23) { + date.setHours(n); + return true; + } + return false; + }); + } else if (M) { + actions.push((n, date) => { + if (n >= 0 && n <= 59) { + date.setMinutes(n); + return true; + } + return false; + }); + } else if (s) { + actions.push((n, date) => { + if (n >= 0 && n <= 59) { + date.setSeconds(n); + return true; + } + return false; + }); + } + return ""; + } + ); + } + + const number = /\d+/g; + let i = 0; + let array; + const date = new Date(0); + while ((array = number.exec(cDate)) !== null) { + if (i < actions.length) { + if (!actions[i++](parseInt(array[0]), date)) { + return null; + } + } else { + break; + } + } + + if (i === 0) { + return null; + } + + return date; + } + scand(cFormat, cDate) { + return this._scand(cFormat, cDate); + } + + _scand(cFormat, cDate, strict = false) { if (typeof cDate !== "string") { return new Date(cDate); } @@ -508,7 +601,7 @@ class Util extends PDFObject { const matches = new RegExp(`^${re}$`, "g").exec(cDate); if (!matches || matches.length !== actions.length + 1) { - return null; + return strict ? null : this.#tryToGuessDate(cFormat, cDate); } const data = { diff --git a/test/unit/scripting_spec.js b/test/unit/scripting_spec.js index 12c7161c21c9c..94ed4aa7f8118 100644 --- a/test/unit/scripting_spec.js +++ b/test/unit/scripting_spec.js @@ -243,6 +243,12 @@ describe("Scripting", function () { value = await myeval(`util.scand(2, "4/15/07 3:14:15 am").toString()`); expect(new Date(value)).toEqual(date); + + value = await myeval(`util.scand("mmddyyyy", "07/15/2007").toString()`); + expect(new Date(value)).toEqual(new Date("07/15/2007")); + + value = await myeval(`util.scand("mmddyyyy", "07a15b2007").toString()`); + expect(new Date(value)).toEqual(new Date("07/15/2007")); }); }); From 93ab7501caf13b7e8ae13590aa63535514f78713 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 27 Oct 2024 20:24:24 +0100 Subject: [PATCH 002/338] [Editor] Split the long words when showing the alt-text tooltip (bug 1903588) --- test/integration/stamp_editor_spec.mjs | 18 +++++++++++++----- web/annotation_editor_layer_builder.css | 1 + 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index b7603a0f99db9..1b4aecd1d722f 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -337,13 +337,14 @@ describe("Stamp Editor", () => { expect(tooltipText).toEqual("Hello World"); // Now we change the alt-text and check that the tooltip is updated. + const longString = "a".repeat(512); await page.click(buttonSelector); await page.waitForSelector("#altTextDialog", { visible: true }); await page.evaluate(sel => { document.querySelector(`${sel}`).value = ""; }, textareaSelector); await page.click(textareaSelector); - await page.type(textareaSelector, "Dlrow Olleh"); + await page.type(textareaSelector, longString); await page.click(saveButtonSelector); await page.waitForSelector(`${buttonSelector}.done`); await page.hover(buttonSelector); @@ -352,7 +353,14 @@ describe("Stamp Editor", () => { sel => document.querySelector(`${sel}`).innerText, tooltipSelector ); - expect(tooltipText).toEqual("Dlrow Olleh"); + expect(tooltipText).toEqual(longString); + const dims = await page.evaluate(sel => { + const { width, height } = document + .querySelector(`${sel}`) + .getBoundingClientRect(); + return { width, height }; + }, tooltipSelector); + expect(dims.width / dims.height).toBeLessThan(2); // Now we just check that cancel didn't change anything. await page.click(buttonSelector); @@ -371,8 +379,8 @@ describe("Stamp Editor", () => { sel => document.querySelector(`${sel}`).innerText, tooltipSelector ); - // The tooltip should still be "Dlrow Olleh". - expect(tooltipText).toEqual("Dlrow Olleh"); + // The tooltip should still be longString. + expect(tooltipText).toEqual(longString); // Now we switch to decorative. await page.click(buttonSelector); @@ -402,7 +410,7 @@ describe("Stamp Editor", () => { sel => document.querySelector(`${sel}`).innerText, tooltipSelector ); - expect(tooltipText).toEqual("Dlrow Olleh"); + expect(tooltipText).toEqual(longString); // Now we remove the alt-text and check that the tooltip is removed. await page.click(buttonSelector); diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index 82129fa72c225..ec539946a7ce2 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -451,6 +451,7 @@ .tooltip { display: none; + word-wrap: anywhere; &.show { --alt-text-tooltip-bg: #f0f0f4; From e15e210d8d9e8f4a51666c0b12cd50ebf1bab5ae Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 18 Oct 2024 17:23:48 +0200 Subject: [PATCH 003/338] Use a BMP decoder when resizing an image The image decoding won't block the main thread any more. For now, it isn't enabled for Chrome because issue6741.pdf leads to a crash. --- src/core/evaluator.js | 10 +++++- src/core/image_resizer.js | 69 +++++++++++++++++++++++++++++++++++---- src/display/api.js | 12 +++++++ 3 files changed, 84 insertions(+), 7 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 27ba453fd441c..d6d70bbdbc2d7 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -83,6 +83,7 @@ const DefaultPartialEvaluatorOptions = Object.freeze({ ignoreErrors: false, isEvalSupported: true, isOffscreenCanvasSupported: false, + isChrome: false, canvasMaxAreaInBytes: -1, fontExtraProperties: false, useSystemFonts: true, @@ -232,7 +233,14 @@ class PartialEvaluator { this._regionalImageCache = new RegionalImageCache(); this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); - ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); + } else { + ImageResizer.setOptions({ + isChrome: this.options.isChrome, + maxArea: this.options.canvasMaxAreaInBytes, + }); + } } /** diff --git a/src/core/image_resizer.js b/src/core/image_resizer.js index 946b03a1cc1c6..8652a828b60b2 100644 --- a/src/core/image_resizer.js +++ b/src/core/image_resizer.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { FeatureTest, ImageKind, shadow } from "../shared/util.js"; +import { FeatureTest, ImageKind, shadow, warn } from "../shared/util.js"; const MIN_IMAGE_DIM = 2048; @@ -34,11 +34,28 @@ const MAX_ERROR = 128; class ImageResizer { static #goodSquareLength = MIN_IMAGE_DIM; + static #isChrome = false; + constructor(imgData, isMask) { this._imgData = imgData; this._isMask = isMask; } + static get canUseImageDecoder() { + // TODO: remove the isChrome, once Chrome doesn't crash anymore with + // issue6741.pdf. + // https://issues.chromium.org/issues/374807001. + return shadow( + this, + "canUseImageDecoder", + // eslint-disable-next-line no-undef + this.#isChrome || typeof ImageDecoder === "undefined" + ? Promise.resolve(false) + : // eslint-disable-next-line no-undef + ImageDecoder.isTypeSupported("image/bmp") + ); + } + static needsToBeResized(width, height) { if (width <= this.#goodSquareLength && height <= this.#goodSquareLength) { return false; @@ -113,6 +130,14 @@ class ImageResizer { } } + static setOptions(opts) { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + throw new Error("Not implemented: setOptions"); + } + this.setMaxArea(opts.maxArea ?? -1); + this.#isChrome = opts.isChrome ?? false; + } + static _areGoodDims(width, height) { try { // This code is working in either Firefox or Chrome. @@ -157,10 +182,38 @@ class ImageResizer { async _createImage() { const data = this._encodeBMP(); - const blob = new Blob([data.buffer], { - type: "image/bmp", - }); - const bitmapPromise = createImageBitmap(blob); + let decoder, imagePromise; + + if (await ImageResizer.canUseImageDecoder) { + // eslint-disable-next-line no-undef + decoder = new ImageDecoder({ + data, + type: "image/bmp", + preferAnimation: false, + transfer: [data.buffer], + }); + imagePromise = decoder + .decode() + .catch(reason => { + warn(`BMP image decoding failed: ${reason}`); + // It's a bit unfortunate to create the BMP twice but we shouldn't be + // here in the first place. + return createImageBitmap( + new Blob([this._encodeBMP().buffer], { + type: "image/bmp", + }) + ); + }) + .finally(() => { + decoder.close(); + }); + } else { + imagePromise = createImageBitmap( + new Blob([data.buffer], { + type: "image/bmp", + }) + ); + } const { MAX_AREA, MAX_DIM } = ImageResizer; const { _imgData: imgData } = this; @@ -185,7 +238,8 @@ class ImageResizer { let newWidth = width; let newHeight = height; - let bitmap = await bitmapPromise; + const result = await imagePromise; + let bitmap = result.image || result; for (const step of steps) { const prevWidth = newWidth; @@ -210,6 +264,9 @@ class ImageResizer { newWidth, newHeight ); + + // Release the resources associated with the bitmap. + bitmap.close(); bitmap = canvas.transferToImageBitmap(); } diff --git a/src/display/api.js b/src/display/api.js index 2488837622238..6c0b9d2a8fd5c 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -21,6 +21,7 @@ import { AbortException, AnnotationMode, assert, + FeatureTest, getVerbosityLevel, info, InvalidPDFException, @@ -177,6 +178,9 @@ const DefaultStandardFontDataFactory = * `OffscreenCanvas` in the worker. Primarily used to improve performance of * image conversion/rendering. * The default value is `true` in web environments and `false` in Node.js. + * @property {boolean} [isChrome] - Determines if we can use bmp ImageDecoder. + * NOTE: Temporary option until [https://issues.chromium.org/issues/374807001] + * is fixed. * @property {number} [canvasMaxAreaInBytes] - The integer value is used to * know when an image must be resized (uses `OffscreenCanvas` in the worker). * If it's -1 then a possibly slow algorithm is used to guess the max value. @@ -281,6 +285,13 @@ function getDocument(src = {}) { typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !isNodeJS; + const isChrome = + typeof src.isChrome === "boolean" + ? src.isChrome + : (typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) && + !FeatureTest.platform.isFirefox && + typeof window !== "undefined" && + !!window?.chrome; const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1; @@ -385,6 +396,7 @@ function getDocument(src = {}) { ignoreErrors, isEvalSupported, isOffscreenCanvasSupported, + isChrome, canvasMaxAreaInBytes, fontExtraProperties, useSystemFonts, From 3baf2dc3000beec48395e20ace4c4b18dd9779dc Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 28 Oct 2024 14:34:12 +0100 Subject: [PATCH 004/338] [Editor] Utilize Fluent "better" when localizing the AltText Currently we manually localize and update the DOM-elements of the AltText-button, and it seems nicer to utilize Fluent "properly" for that task. This can be achieved by introducing an explicit `span`-element on the AltText-button (similar to e.g. the regular toolbar-buttons), and adding a few more l10n-strings, since that allows just setting the `data-l10n-id`-attribute on all the relevant DOM-elements. Finally, note how we no longer need to localize any strings eagerly when initializing the various editors. --- l10n/en-US/viewer.ftl | 11 +++- src/display/editor/alt_text.js | 85 ++++++++++++++------------ src/display/editor/editor.js | 21 ++----- test/integration/stamp_editor_spec.mjs | 11 ++++ 4 files changed, 70 insertions(+), 58 deletions(-) diff --git a/l10n/en-US/viewer.ftl b/l10n/en-US/viewer.ftl index 29848cd992fce..fbff0d86a9c36 100644 --- a/l10n/en-US/viewer.ftl +++ b/l10n/en-US/viewer.ftl @@ -360,9 +360,12 @@ pdfjs-ink-canvas = ## Alt-text dialog # Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt text pdfjs-editor-alt-text-button-label = Alt text -pdfjs-editor-alt-text-edit-button-label = Edit alt text +pdfjs-editor-alt-text-edit-button = + .aria-label = Edit alt text pdfjs-editor-alt-text-dialog-label = Choose an option pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load. pdfjs-editor-alt-text-add-description-label = Add a description @@ -457,12 +460,18 @@ pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text A .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alt text added pdfjs-editor-new-alt-text-added-button-label = Alt text added # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Missing alt text pdfjs-editor-new-alt-text-missing-button-label = Missing alt text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Review alt text pdfjs-editor-new-alt-text-to-review-button-label = Review alt text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. diff --git a/src/display/editor/alt_text.js b/src/display/editor/alt_text.js index cc7181d855a8c..6ccdea85f4b94 100644 --- a/src/display/editor/alt_text.js +++ b/src/display/editor/alt_text.js @@ -22,6 +22,8 @@ class AltText { #altTextButton = null; + #altTextButtonLabel = null; + #altTextTooltip = null; #altTextTooltipTimeout = null; @@ -40,38 +42,46 @@ class AltText { static #l10nNewButton = null; - static _l10nPromise = null; + static _l10n = null; constructor(editor) { this.#editor = editor; this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow; AltText.#l10nNewButton ||= Object.freeze({ - added: "pdfjs-editor-new-alt-text-added-button-label", - missing: "pdfjs-editor-new-alt-text-missing-button-label", - review: "pdfjs-editor-new-alt-text-to-review-button-label", + added: "pdfjs-editor-new-alt-text-added-button", + "added-label": "pdfjs-editor-new-alt-text-added-button-label", + missing: "pdfjs-editor-new-alt-text-missing-button", + "missing-label": "pdfjs-editor-new-alt-text-missing-button-label", + review: "pdfjs-editor-new-alt-text-to-review-button", + "review-label": "pdfjs-editor-new-alt-text-to-review-button-label", }); } - static initialize(l10nPromise) { - AltText._l10nPromise ||= l10nPromise; + static initialize(l10n) { + AltText._l10n ??= l10n; } async render() { const altText = (this.#altTextButton = document.createElement("button")); altText.className = "altText"; - let msg; + altText.tabIndex = "0"; + + const label = (this.#altTextButtonLabel = document.createElement("span")); + altText.append(label); + if (this.#useNewAltTextFlow) { altText.classList.add("new"); - msg = await AltText._l10nPromise.get(AltText.#l10nNewButton.missing); - } else { - msg = await AltText._l10nPromise.get( - "pdfjs-editor-alt-text-button-label" + altText.setAttribute("data-l10n-id", AltText.#l10nNewButton.missing); + label.setAttribute( + "data-l10n-id", + AltText.#l10nNewButton["missing-label"] ); + } else { + altText.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-button"); + label.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-button-label"); } - altText.textContent = msg; - altText.setAttribute("aria-label", msg); - altText.tabIndex = "0"; + const signal = this.#editor._uiManager._signal; altText.addEventListener("contextmenu", noContextMenu, { signal }); altText.addEventListener("pointerdown", event => event.stopPropagation(), { @@ -144,9 +154,10 @@ class AltText { return; } this.#guessedText = guessedText; - this.#textWithDisclaimer = await AltText._l10nPromise.get( - "pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer" - )({ generatedAltText: guessedText }); + this.#textWithDisclaimer = await AltText._l10n.get( + "pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer", + { generatedAltText: guessedText } + ); this.#setState(); } @@ -229,6 +240,7 @@ class AltText { destroy() { this.#altTextButton?.remove(); this.#altTextButton = null; + this.#altTextButtonLabel = null; this.#altTextTooltip = null; this.#badge?.remove(); this.#badge = null; @@ -242,19 +254,12 @@ class AltText { if (this.#useNewAltTextFlow) { button.classList.toggle("done", !!this.#altText); - AltText._l10nPromise - .get(AltText.#l10nNewButton[this.#label]) - .then(msg => { - button.setAttribute("aria-label", msg); - // We can't just use button.textContent here, because it would remove - // the existing tooltip element. - for (const child of button.childNodes) { - if (child.nodeType === Node.TEXT_NODE) { - child.textContent = msg; - break; - } - } - }); + button.setAttribute("data-l10n-id", AltText.#l10nNewButton[this.#label]); + + this.#altTextButtonLabel?.setAttribute( + "data-l10n-id", + AltText.#l10nNewButton[`${this.#label}-label`] + ); if (!this.#altText) { this.#altTextTooltip?.remove(); return; @@ -266,11 +271,7 @@ class AltText { return; } button.classList.add("done"); - AltText._l10nPromise - .get("pdfjs-editor-alt-text-edit-button-label") - .then(msg => { - button.setAttribute("aria-label", msg); - }); + button.setAttribute("data-l10n-id", "pdfjs-editor-alt-text-edit-button"); } let tooltip = this.#altTextTooltip; @@ -315,11 +316,15 @@ class AltText { { signal } ); } - tooltip.innerText = this.#altTextDecorative - ? await AltText._l10nPromise.get( - "pdfjs-editor-alt-text-decorative-tooltip" - ) - : this.#altText; + if (this.#altTextDecorative) { + tooltip.setAttribute( + "data-l10n-id", + "pdfjs-editor-alt-text-decorative-tooltip" + ); + } else { + tooltip.removeAttribute("data-l10n-id"); + tooltip.textContent = this.#altText; + } if (!tooltip.parentNode) { button.append(tooltip); diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index d345c21a9befb..6320d7a592f80 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -88,7 +88,7 @@ class AnnotationEditor { _focusEventsAllowed = true; - static _l10nPromise = null; + static _l10n = null; static _l10nResizer = null; @@ -210,6 +210,8 @@ class AnnotationEditor { * @param {Object} l10n */ static initialize(l10n, _uiManager) { + AnnotationEditor._l10n ??= l10n; + AnnotationEditor._l10nResizer ||= Object.freeze({ topLeft: "pdfjs-editor-resizer-top-left", topMiddle: "pdfjs-editor-resizer-top-middle", @@ -221,21 +223,6 @@ class AnnotationEditor { middleLeft: "pdfjs-editor-resizer-middle-left", }); - AnnotationEditor._l10nPromise ||= new Map([ - ...[ - "pdfjs-editor-alt-text-button-label", - "pdfjs-editor-alt-text-edit-button-label", - "pdfjs-editor-alt-text-decorative-tooltip", - "pdfjs-editor-new-alt-text-added-button-label", - "pdfjs-editor-new-alt-text-missing-button-label", - "pdfjs-editor-new-alt-text-to-review-button-label", - ].map(str => [str, l10n.get(str)]), - ...[ - // Strings that need l10n-arguments. - "pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer", - ].map(str => [str, l10n.get.bind(l10n, str)]), - ]); - if (AnnotationEditor._borderLineWidth !== -1) { return; } @@ -1003,7 +990,7 @@ class AnnotationEditor { if (this.#altText) { return; } - AltText.initialize(AnnotationEditor._l10nPromise); + AltText.initialize(AnnotationEditor._l10n); this.#altText = new AltText(this); if (this.#accessibilityData) { this.#altText.data = this.#accessibilityData; diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 1b4aecd1d722f..c8c4275e3c011 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -94,6 +94,14 @@ const copyImage = async (page, imagePath, number) => { await waitForImage(page, getEditorSelector(number)); }; +async function waitForTranslation(page) { + return page.evaluate(async () => { + await new Promise(resolve => { + window.requestAnimationFrame(resolve); + }); + }); +} + const switchToStamp = switchToEditor.bind(null, "Stamp"); describe("Stamp Editor", () => { @@ -987,6 +995,7 @@ describe("Stamp Editor", () => { const buttonSelector = `${editorSelector} button.altText.new`; await page.waitForSelector(buttonSelector, { visible: true }); + await waitForTranslation(page); // Check the text in the button. let text = await page.evaluate( sel => document.querySelector(sel).textContent, @@ -1036,6 +1045,7 @@ describe("Stamp Editor", () => { await waitForSelectedEditor(page, editorSelector); await page.waitForSelector(buttonSelector, { visible: true }); + await waitForTranslation(page); // Check the text in the button. text = await page.evaluate( sel => document.querySelector(sel).textContent, @@ -1078,6 +1088,7 @@ describe("Stamp Editor", () => { await page.click("#newAltTextSave"); await page.waitForSelector("#newAltTextDialog", { visible: false }); + await waitForTranslation(page); // Check the text in the button. text = await page.evaluate( sel => document.querySelector(sel).firstChild.textContent, From 8f18c7c711ae0fa047adbbb8f5106a6b824cb7ea Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 29 Oct 2024 08:52:14 +0100 Subject: [PATCH 005/338] Allow `StreamsSequenceStream` to skip sub-streams that are not actual Streams (issue 18973) This extends PR 13796 to also handle the case where sub-streams contain invalid data, i.e. anything that isn't a Stream, however please note that in these cases there's no guarantee that we'll render the page "correctly". Note that Adobe Reader, i.e. the PDF reference implementation, cannot render the last page of the referenced PDF document. --- src/core/decode_stream.js | 2 ++ test/pdfs/issue18973.pdf.link | 1 + test/test_manifest.json | 9 +++++++++ 3 files changed, 12 insertions(+) create mode 100644 test/pdfs/issue18973.pdf.link diff --git a/src/core/decode_stream.js b/src/core/decode_stream.js index 1d963b4e4502e..dd93121fbb839 100644 --- a/src/core/decode_stream.js +++ b/src/core/decode_stream.js @@ -132,6 +132,8 @@ class DecodeStream extends BaseStream { class StreamsSequenceStream extends DecodeStream { constructor(streams, onError = null) { + streams = streams.filter(s => s instanceof BaseStream); + let maybeLength = 0; for (const stream of streams) { maybeLength += diff --git a/test/pdfs/issue18973.pdf.link b/test/pdfs/issue18973.pdf.link new file mode 100644 index 0000000000000..cb4580ff37831 --- /dev/null +++ b/test/pdfs/issue18973.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/17550758/doc1520828609.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index da0e82f7f77c3..7cfd0356ee2fc 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2057,6 +2057,15 @@ "firstPage": 3, "type": "eq" }, + { + "id": "issue18973", + "file": "pdfs/issue18973.pdf", + "md5": "b9bbd312269862bf39bb2a31023a9d02", + "link": true, + "rounds": 1, + "firstPage": 45, + "type": "eq" + }, { "id": "issue9262", "file": "pdfs/issue9262_reduced.pdf", From 87c2e83d61466e36138f74ffcd80227f87888b0c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 31 Mar 2024 12:43:07 +0200 Subject: [PATCH 006/338] Improve the implementation of the `PDFDocument.fingerprints`-getter - Add explicit `length` validation of the /ID entries. Given the `EMPTY_FINGERPRINT` constant we're already *implicitly* assuming a particular length. - Move the constants into the `fingerprints`-getter, since they're not used anywhere else. - Replace the `hexString` helper function with the standard `Uint8Array.prototype.toHex` method; see https://github.com/tc39/proposal-arraybuffer-base64 --- src/core/document.js | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/src/core/document.js b/src/core/document.js index 2dab34d062000..625c7f903de63 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -862,10 +862,6 @@ const STARTXREF_SIGNATURE = new Uint8Array([ ]); const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]); -const FINGERPRINT_FIRST_BYTES = 1024; -const EMPTY_FINGERPRINT = - "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - function find(stream, signature, limit = 1024, backwards = false) { if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { assert(limit > 0, 'The "limit" must be a positive integer.'); @@ -1548,30 +1544,24 @@ class PDFDocument { } get fingerprints() { + const FINGERPRINT_FIRST_BYTES = 1024; + const EMPTY_FINGERPRINT = "\x00".repeat(16); + function validate(data) { return ( typeof data === "string" && - data.length > 0 && + data.length === 16 && data !== EMPTY_FINGERPRINT ); } - function hexString(hash) { - const buf = []; - for (const num of hash) { - const hex = num.toString(16); - buf.push(hex.padStart(2, "0")); - } - return buf.join(""); - } - - const idArray = this.xref.trailer.get("ID"); + const id = this.xref.trailer.get("ID"); let hashOriginal, hashModified; - if (Array.isArray(idArray) && validate(idArray[0])) { - hashOriginal = stringToBytes(idArray[0]); + if (Array.isArray(id) && validate(id[0])) { + hashOriginal = stringToBytes(id[0]); - if (idArray[1] !== idArray[0] && validate(idArray[1])) { - hashModified = stringToBytes(idArray[1]); + if (id[1] !== id[0] && validate(id[1])) { + hashModified = stringToBytes(id[1]); } } else { hashOriginal = calculateMD5( @@ -1582,8 +1572,8 @@ class PDFDocument { } return shadow(this, "fingerprints", [ - hexString(hashOriginal), - hashModified ? hexString(hashModified) : null, + hashOriginal.toHex(), + hashModified?.toHex() ?? null, ]); } From f8e3618a9015f9c36f8b7f5538c5f6d1ea9ae5d8 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 10 Apr 2024 12:45:22 +0200 Subject: [PATCH 007/338] Introduce some `Uint8Array.fromBase64` and `Uint8Array.prototype.toBase64` usage in the main code-base See https://github.com/tc39/proposal-arraybuffer-base64 --- src/core/xfa/template.js | 4 ++-- src/display/font_loader.js | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/core/xfa/template.js b/src/core/xfa/template.js index 8ec158ff888fe..454ceb5f0fca2 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -102,7 +102,7 @@ import { getStringOption, HTMLResult, } from "./utils.js"; -import { stringToBytes, Util, warn } from "../../shared/util.js"; +import { Util, warn } from "../../shared/util.js"; import { getMetrics } from "./fonts.js"; import { recoverJsURL } from "../core_utils.js"; import { searchNode } from "./som.js"; @@ -3427,7 +3427,7 @@ class Image extends StringObject { } if (!buffer && this.transferEncoding === "base64") { - buffer = stringToBytes(atob(this[$content])); + buffer = Uint8Array.fromBase64(this[$content]); } if (!buffer) { diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 1014c536b67e0..4115a71eb5d79 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -15,7 +15,6 @@ import { assert, - bytesToString, FontRenderOps, isNodeJS, shadow, @@ -399,9 +398,8 @@ class FontFaceObject { if (!this.data || this.disableFontFace) { return null; } - const data = bytesToString(this.data); // Add the @font-face rule to the document. - const url = `url(data:${this.mimetype};base64,${btoa(data)});`; + const url = `url(data:${this.mimetype};base64,${this.data.toBase64()});`; let rule; if (!this.cssFontInfo) { rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; From 87f34480878acbe092929cab499a856f2f0be647 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 14 Oct 2024 14:26:11 +0200 Subject: [PATCH 008/338] Add helper functions to allow using new `Uint8Array` methods This allows using the new methods in browsers that support them, e.g. Firefox 133+, while still providing fallbacks where necessary; see https://github.com/tc39/proposal-arraybuffer-base64 *Please note:* These are not actual polyfills, but only implements what we need in the PDF.js code-base. Eventually this patch should be reverted, once support is generally available. --- src/core/document.js | 5 +++-- src/core/xfa/template.js | 4 ++-- src/display/font_loader.js | 3 ++- src/shared/util.js | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/core/document.js b/src/core/document.js index 625c7f903de63..434cbac2a6325 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -26,6 +26,7 @@ import { stringToBytes, stringToPDFString, stringToUTF8String, + toHexUtil, unreachable, Util, warn, @@ -1572,8 +1573,8 @@ class PDFDocument { } return shadow(this, "fingerprints", [ - hashOriginal.toHex(), - hashModified?.toHex() ?? null, + toHexUtil(hashOriginal), + hashModified ? toHexUtil(hashModified) : null, ]); } diff --git a/src/core/xfa/template.js b/src/core/xfa/template.js index 454ceb5f0fca2..96d18930c1c53 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -90,6 +90,7 @@ import { XFAObject, XFAObjectArray, } from "./xfa_object.js"; +import { fromBase64Util, Util, warn } from "../../shared/util.js"; import { getBBox, getColor, @@ -102,7 +103,6 @@ import { getStringOption, HTMLResult, } from "./utils.js"; -import { Util, warn } from "../../shared/util.js"; import { getMetrics } from "./fonts.js"; import { recoverJsURL } from "../core_utils.js"; import { searchNode } from "./som.js"; @@ -3427,7 +3427,7 @@ class Image extends StringObject { } if (!buffer && this.transferEncoding === "base64") { - buffer = Uint8Array.fromBase64(this[$content]); + buffer = fromBase64Util(this[$content]); } if (!buffer) { diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 4115a71eb5d79..1ec7160c8500a 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -19,6 +19,7 @@ import { isNodeJS, shadow, string32, + toBase64Util, unreachable, warn, } from "../shared/util.js"; @@ -399,7 +400,7 @@ class FontFaceObject { return null; } // Add the @font-face rule to the document. - const url = `url(data:${this.mimetype};base64,${this.data.toBase64()});`; + const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`; let rule; if (!this.cssFontInfo) { rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`; diff --git a/src/shared/util.js b/src/shared/util.js index eccd578974b92..700f9f87104bb 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1097,6 +1097,35 @@ const FontRenderOps = { TRANSLATE: 8, }; +// TODO: Remove this once `Uint8Array.prototype.toHex` is generally available. +function toHexUtil(arr) { + if (Uint8Array.prototype.toHex) { + return arr.toHex(); + } + const buf = []; + for (const num of arr) { + buf.push(num.toString(16).padStart(2, "0")); + } + return buf.join(""); +} + +// TODO: Remove this once `Uint8Array.prototype.toBase64` is generally +// available. +function toBase64Util(arr) { + if (Uint8Array.prototype.toBase64) { + return arr.toBase64(); + } + return btoa(bytesToString(arr)); +} + +// TODO: Remove this once `Uint8Array.fromBase64` is generally available. +function fromBase64Util(str) { + if (Uint8Array.fromBase64) { + return Uint8Array.fromBase64(str); + } + return stringToBytes(atob(str)); +} + export { AbortException, AnnotationActionEventType, @@ -1120,6 +1149,7 @@ export { FONT_IDENTITY_MATRIX, FontRenderOps, FormatError, + fromBase64Util, getModificationDate, getUuid, getVerbosityLevel, @@ -1149,6 +1179,8 @@ export { stringToPDFString, stringToUTF8String, TextRenderingMode, + toBase64Util, + toHexUtil, UnexpectedResponseException, UnknownErrorException, unreachable, From 342f68a32e4eaf8b79135d523240a5dbd93bbf03 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 29 Oct 2024 13:21:25 +0100 Subject: [PATCH 009/338] Simplify the "ReaderHeadersReady" message-handler in the API We can convert the handler to an `async` function, which removes the need to create a temporary Promise here. Given the age of this code it shouldn't hurt to simplify it a little bit. --- src/display/api.js | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 6c0b9d2a8fd5c..211c37862c867 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2646,32 +2646,27 @@ class WorkerTransport { }; }); - messageHandler.on("ReaderHeadersReady", data => { - const headersCapability = Promise.withResolvers(); - const fullReader = this._fullReader; - fullReader.headersReady.then(() => { - // If stream or range are disabled, it's our only way to report - // loading progress. - if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { - if (this._lastProgress) { - loadingTask.onProgress?.(this._lastProgress); - } - fullReader.onProgress = evt => { - loadingTask.onProgress?.({ - loaded: evt.loaded, - total: evt.total, - }); - }; - } + messageHandler.on("ReaderHeadersReady", async data => { + await this._fullReader.headersReady; - headersCapability.resolve({ - isStreamingSupported: fullReader.isStreamingSupported, - isRangeSupported: fullReader.isRangeSupported, - contentLength: fullReader.contentLength, - }); - }, headersCapability.reject); + const { isStreamingSupported, isRangeSupported, contentLength } = + this._fullReader; + + // If stream or range are disabled, it's our only way to report + // loading progress. + if (!isStreamingSupported || !isRangeSupported) { + if (this._lastProgress) { + loadingTask.onProgress?.(this._lastProgress); + } + this._fullReader.onProgress = evt => { + loadingTask.onProgress?.({ + loaded: evt.loaded, + total: evt.total, + }); + }; + } - return headersCapability.promise; + return { isStreamingSupported, isRangeSupported, contentLength }; }); messageHandler.on("GetRangeReader", (data, sink) => { From 713f1a8ae276499df4195f2ce58c5cb3546d11d5 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 28 Oct 2024 20:29:50 +0100 Subject: [PATCH 010/338] [Editor] Refactor the free highlight stuff in order to be able to use the code for more general drawing One goal is to make the code for drawing with the Ink tool similar to the one to free highlighting: it doesn't really make sense to have so different ways to do almost the same thing. When the zoom level is high, it'll avoid to create a too big canvas covering all the page which consume more memory, makes the drawing very slow and the overall user xp pretty bad. A second goal is to be able to easily implement more drawing tools where we would just have to implement how to draw from the pointer coordinates. --- src/display/draw_layer.js | 22 +- .../{outliner.js => drawers/freedraw.js} | 604 +++++------------- src/display/editor/drawers/highlight.js | 369 +++++++++++ src/display/editor/drawers/outline.js | 55 ++ src/display/editor/highlight.js | 39 +- src/pdf.js | 4 +- test/driver.js | 10 +- 7 files changed, 630 insertions(+), 473 deletions(-) rename src/display/editor/{outliner.js => drawers/freedraw.js} (56%) create mode 100644 src/display/editor/drawers/highlight.js create mode 100644 src/display/editor/drawers/outline.js diff --git a/src/display/draw_layer.js b/src/display/draw_layer.js index 0b114bbe1d279..34e4c02053d41 100644 --- a/src/display/draw_layer.js +++ b/src/display/draw_layer.js @@ -86,13 +86,11 @@ class DrawLayer { return clipPathId; } - highlight(outlines, color, opacity, isPathUpdatable = false) { + draw(outlines, color, opacity, isPathUpdatable = false) { const id = this.#id++; const root = this.#createSVG(outlines.box); - root.classList.add("highlight"); - if (outlines.free) { - root.classList.add("free"); - } + root.classList.add(...outlines.classNamesForDrawing); + const defs = DrawLayer._svgFactory.createElement("defs"); root.append(defs); const path = DrawLayer._svgFactory.createElement("path"); @@ -119,14 +117,14 @@ class DrawLayer { return { id, clipPathId: `url(#${clipPathId})` }; } - highlightOutline(outlines) { + drawOutline(outlines) { // We cannot draw the outline directly in the SVG for highlights because // it composes with its parent with mix-blend-mode: multiply. // But the outline has a different mix-blend-mode, so we need to draw it in // its own SVG. const id = this.#id++; const root = this.#createSVG(outlines.box); - root.classList.add("highlightOutline"); + root.classList.add(...outlines.classNamesForOutlining); const defs = DrawLayer._svgFactory.createElement("defs"); root.append(defs); const path = DrawLayer._svgFactory.createElement("path"); @@ -137,8 +135,7 @@ class DrawLayer { path.setAttribute("vector-effect", "non-scaling-stroke"); let maskId; - if (outlines.free) { - root.classList.add("free"); + if (outlines.mustRemoveSelfIntersections) { const mask = DrawLayer._svgFactory.createElement("mask"); defs.append(mask); maskId = `mask_p${this.pageIndex}_${id}`; @@ -188,11 +185,6 @@ class DrawLayer { path.setAttribute("d", line.toSVGPath()); } - removeFreeHighlight(id) { - this.remove(id); - this.#toUpdate.delete(id); - } - updatePath(id, line) { this.#toUpdate.get(id).setAttribute("d", line.toSVGPath()); } @@ -230,6 +222,7 @@ class DrawLayer { } remove(id) { + this.#toUpdate.delete(id); if (this.#parent === null) { return; } @@ -243,6 +236,7 @@ class DrawLayer { root.remove(); } this.#mapping.clear(); + this.#toUpdate.clear(); } } diff --git a/src/display/editor/outliner.js b/src/display/editor/drawers/freedraw.js similarity index 56% rename from src/display/editor/outliner.js rename to src/display/editor/drawers/freedraw.js index 8d52eeeac0ee5..38ded7ff81e7f 100644 --- a/src/display/editor/outliner.js +++ b/src/display/editor/drawers/freedraw.js @@ -1,4 +1,4 @@ -/* Copyright 2023 Mozilla Foundation +/* 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. @@ -13,337 +13,10 @@ * limitations under the License. */ -import { Util } from "../../shared/util.js"; +import { Outline } from "./outline.js"; +import { Util } from "../../../shared/util.js"; -class Outliner { - #box; - - #verticalEdges = []; - - #intervals = []; - - /** - * Construct an outliner. - * @param {Array} boxes - An array of axis-aligned rectangles. - * @param {number} borderWidth - The width of the border of the boxes, it - * allows to make the boxes bigger (or smaller). - * @param {number} innerMargin - The margin between the boxes and the - * outlines. It's important to not have a null innerMargin when we want to - * draw the outline else the stroked outline could be clipped because of its - * width. - * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine - * the last point of the boxes. - */ - constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) { - let minX = Infinity; - let maxX = -Infinity; - let minY = Infinity; - let maxY = -Infinity; - - // We round the coordinates to slightly reduce the number of edges in the - // final outlines. - const NUMBER_OF_DIGITS = 4; - const EPSILON = 10 ** -NUMBER_OF_DIGITS; - - // The coordinates of the boxes are in the page coordinate system. - for (const { x, y, width, height } of boxes) { - const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON; - const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON; - const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON; - const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON; - const left = [x1, y1, y2, true]; - const right = [x2, y1, y2, false]; - this.#verticalEdges.push(left, right); - - minX = Math.min(minX, x1); - maxX = Math.max(maxX, x2); - minY = Math.min(minY, y1); - maxY = Math.max(maxY, y2); - } - - const bboxWidth = maxX - minX + 2 * innerMargin; - const bboxHeight = maxY - minY + 2 * innerMargin; - const shiftedMinX = minX - innerMargin; - const shiftedMinY = minY - innerMargin; - const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2); - const lastPoint = [lastEdge[0], lastEdge[2]]; - - // Convert the coordinates of the edges into box coordinates. - for (const edge of this.#verticalEdges) { - const [x, y1, y2] = edge; - edge[0] = (x - shiftedMinX) / bboxWidth; - edge[1] = (y1 - shiftedMinY) / bboxHeight; - edge[2] = (y2 - shiftedMinY) / bboxHeight; - } - - this.#box = { - x: shiftedMinX, - y: shiftedMinY, - width: bboxWidth, - height: bboxHeight, - lastPoint, - }; - } - - getOutlines() { - // We begin to sort lexicographically the vertical edges by their abscissa, - // and then by their ordinate. - this.#verticalEdges.sort( - (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2] - ); - - // We're now using a sweep line algorithm to find the outlines. - // We start with the leftmost vertical edge, and we're going to iterate - // over all the vertical edges from left to right. - // Each time we encounter a left edge, we're going to insert the interval - // [y1, y2] in the set of intervals. - // This set of intervals is used to break the vertical edges into chunks: - // we only take the part of the vertical edge that isn't in the union of - // the intervals. - const outlineVerticalEdges = []; - for (const edge of this.#verticalEdges) { - if (edge[3]) { - // Left edge. - outlineVerticalEdges.push(...this.#breakEdge(edge)); - this.#insert(edge); - } else { - // Right edge. - this.#remove(edge); - outlineVerticalEdges.push(...this.#breakEdge(edge)); - } - } - return this.#getOutlines(outlineVerticalEdges); - } - - #getOutlines(outlineVerticalEdges) { - const edges = []; - const allEdges = new Set(); - - for (const edge of outlineVerticalEdges) { - const [x, y1, y2] = edge; - edges.push([x, y1, edge], [x, y2, edge]); - } - - // We sort lexicographically the vertices of each edge by their ordinate and - // by their abscissa. - // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge. - // So for every vertical edge, we're going to add the two vertical edges - // which are connected to it through a horizontal edge. - edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]); - for (let i = 0, ii = edges.length; i < ii; i += 2) { - const edge1 = edges[i][2]; - const edge2 = edges[i + 1][2]; - edge1.push(edge2); - edge2.push(edge1); - allEdges.add(edge1); - allEdges.add(edge2); - } - const outlines = []; - let outline; - - while (allEdges.size > 0) { - const edge = allEdges.values().next().value; - let [x, y1, y2, edge1, edge2] = edge; - allEdges.delete(edge); - let lastPointX = x; - let lastPointY = y1; - - outline = [x, y2]; - outlines.push(outline); - - while (true) { - let e; - if (allEdges.has(edge1)) { - e = edge1; - } else if (allEdges.has(edge2)) { - e = edge2; - } else { - break; - } - - allEdges.delete(e); - [x, y1, y2, edge1, edge2] = e; - - if (lastPointX !== x) { - outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2); - lastPointX = x; - } - lastPointY = lastPointY === y1 ? y2 : y1; - } - outline.push(lastPointX, lastPointY); - } - return new HighlightOutline(outlines, this.#box); - } - - #binarySearch(y) { - const array = this.#intervals; - let start = 0; - let end = array.length - 1; - - while (start <= end) { - const middle = (start + end) >> 1; - const y1 = array[middle][0]; - if (y1 === y) { - return middle; - } - if (y1 < y) { - start = middle + 1; - } else { - end = middle - 1; - } - } - return end + 1; - } - - #insert([, y1, y2]) { - const index = this.#binarySearch(y1); - this.#intervals.splice(index, 0, [y1, y2]); - } - - #remove([, y1, y2]) { - const index = this.#binarySearch(y1); - for (let i = index; i < this.#intervals.length; i++) { - const [start, end] = this.#intervals[i]; - if (start !== y1) { - break; - } - if (start === y1 && end === y2) { - this.#intervals.splice(i, 1); - return; - } - } - for (let i = index - 1; i >= 0; i--) { - const [start, end] = this.#intervals[i]; - if (start !== y1) { - break; - } - if (start === y1 && end === y2) { - this.#intervals.splice(i, 1); - return; - } - } - } - - #breakEdge(edge) { - const [x, y1, y2] = edge; - const results = [[x, y1, y2]]; - const index = this.#binarySearch(y2); - for (let i = 0; i < index; i++) { - const [start, end] = this.#intervals[i]; - for (let j = 0, jj = results.length; j < jj; j++) { - const [, y3, y4] = results[j]; - if (end <= y3 || y4 <= start) { - // There is no intersection between the interval and the edge, hence - // we keep it as is. - continue; - } - if (y3 >= start) { - if (y4 > end) { - results[j][1] = end; - } else { - if (jj === 1) { - return []; - } - // The edge is included in the interval, hence we remove it. - results.splice(j, 1); - j--; - jj--; - } - continue; - } - results[j][2] = start; - if (y4 > end) { - results.push([x, end, y4]); - } - } - } - return results; - } -} - -class Outline { - /** - * @returns {string} The SVG path of the outline. - */ - toSVGPath() { - throw new Error("Abstract method `toSVGPath` must be implemented."); - } - - /** - * @type {Object|null} The bounding box of the outline. - */ - get box() { - throw new Error("Abstract getter `box` must be implemented."); - } - - serialize(_bbox, _rotation) { - throw new Error("Abstract method `serialize` must be implemented."); - } - - get free() { - return this instanceof FreeHighlightOutline; - } -} - -class HighlightOutline extends Outline { - #box; - - #outlines; - - constructor(outlines, box) { - super(); - this.#outlines = outlines; - this.#box = box; - } - - toSVGPath() { - const buffer = []; - for (const polygon of this.#outlines) { - let [prevX, prevY] = polygon; - buffer.push(`M${prevX} ${prevY}`); - for (let i = 2; i < polygon.length; i += 2) { - const x = polygon[i]; - const y = polygon[i + 1]; - if (x === prevX) { - buffer.push(`V${y}`); - prevY = y; - } else if (y === prevY) { - buffer.push(`H${x}`); - prevX = x; - } - } - buffer.push("Z"); - } - return buffer.join(" "); - } - - /** - * Serialize the outlines into the PDF page coordinate system. - * @param {Array} _bbox - the bounding box of the annotation. - * @param {number} _rotation - the rotation of the annotation. - * @returns {Array>} - */ - serialize([blX, blY, trX, trY], _rotation) { - const outlines = []; - const width = trX - blX; - const height = trY - blY; - for (const outline of this.#outlines) { - const points = new Array(outline.length); - for (let i = 0; i < outline.length; i += 2) { - points[i] = blX + outline[i] * width; - points[i + 1] = trY - outline[i + 1] * height; - } - outlines.push(points); - } - return outlines; - } - - get box() { - return this.#box; - } -} - -class FreeOutliner { +class FreeDrawOutliner { #box; #bottom = []; @@ -381,7 +54,7 @@ class FreeOutliner { static #MIN_DIFF = 2; - static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF; + static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF; constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) { this.#box = box; @@ -389,16 +62,12 @@ class FreeOutliner { this.#isLTR = isLTR; this.#last.set([NaN, NaN, NaN, NaN, x, y], 6); this.#innerMargin = innerMargin; - this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor; - this.#min = FreeOutliner.#MIN * scaleFactor; + this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor; + this.#min = FreeDrawOutliner.#MIN * scaleFactor; this.#scaleFactor = scaleFactor; this.#points.push(x, y); } - get free() { - return true; - } - isEmpty() { // When we add a second point then this.#last.slice(6) will be something // like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN @@ -544,21 +213,10 @@ class FreeOutliner { } const top = this.#top; const bottom = this.#bottom; - const lastTop = this.#last.subarray(4, 6); - const lastBottom = this.#last.subarray(16, 18); - const [x, y, width, height] = this.#box; - const [lastTopX, lastTopY, lastBottomX, lastBottomY] = - this.#getLastCoords(); if (isNaN(this.#last[6]) && !this.isEmpty()) { // We've only two points. - return `M${(this.#last[2] - x) / width} ${ - (this.#last[3] - y) / height - } L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${ - (this.#last[16] - x) / width - } ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${ - (this.#last[15] - y) / height - } Z`; + return this.#toSVGPathTwoPoints(); } const buffer = []; @@ -575,11 +233,8 @@ class FreeOutliner { } } - buffer.push( - `L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${ - (lastBottom[0] - x) / width - } ${(lastBottom[1] - y) / height}` - ); + this.#toSVGPathEnd(buffer); + for (let i = bottom.length - 6; i >= 6; i -= 6) { if (isNaN(bottom[i])) { buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`); @@ -591,17 +246,60 @@ class FreeOutliner { ); } } - buffer.push(`L${bottom[4]} ${bottom[5]} Z`); + + this.#toSVGPathStart(buffer); return buffer.join(" "); } + #toSVGPathTwoPoints() { + const [x, y, width, height] = this.#box; + const [lastTopX, lastTopY, lastBottomX, lastBottomY] = + this.#getLastCoords(); + + return `M${(this.#last[2] - x) / width} ${ + (this.#last[3] - y) / height + } L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${ + (this.#last[16] - x) / width + } ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${ + (this.#last[15] - y) / height + } Z`; + } + + #toSVGPathStart(buffer) { + const bottom = this.#bottom; + buffer.push(`L${bottom[4]} ${bottom[5]} Z`); + } + + #toSVGPathEnd(buffer) { + const [x, y, width, height] = this.#box; + const lastTop = this.#last.subarray(4, 6); + const lastBottom = this.#last.subarray(16, 18); + const [lastTopX, lastTopY, lastBottomX, lastBottomY] = + this.#getLastCoords(); + + buffer.push( + `L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${ + (lastBottom[0] - x) / width + } ${(lastBottom[1] - y) / height}` + ); + } + + newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) { + return new FreeDrawOutline( + outline, + points, + box, + scaleFactor, + innerMargin, + isLTR + ); + } + getOutlines() { const top = this.#top; const bottom = this.#bottom; const last = this.#last; - const lastTop = last.subarray(4, 6); - const lastBottom = last.subarray(16, 18); const [layerX, layerY, layerWidth, layerHeight] = this.#box; const points = new Float64Array((this.#points?.length ?? 0) + 2); @@ -611,61 +309,10 @@ class FreeOutliner { } points[points.length - 2] = (this.#lastX - layerX) / layerWidth; points[points.length - 1] = (this.#lastY - layerY) / layerHeight; - const [lastTopX, lastTopY, lastBottomX, lastBottomY] = - this.#getLastCoords(); if (isNaN(last[6]) && !this.isEmpty()) { // We've only two points. - const outline = new Float64Array(36); - outline.set( - [ - NaN, - NaN, - NaN, - NaN, - (last[2] - layerX) / layerWidth, - (last[3] - layerY) / layerHeight, - NaN, - NaN, - NaN, - NaN, - (last[4] - layerX) / layerWidth, - (last[5] - layerY) / layerHeight, - NaN, - NaN, - NaN, - NaN, - lastTopX, - lastTopY, - NaN, - NaN, - NaN, - NaN, - lastBottomX, - lastBottomY, - NaN, - NaN, - NaN, - NaN, - (last[16] - layerX) / layerWidth, - (last[17] - layerY) / layerHeight, - NaN, - NaN, - NaN, - NaN, - (last[14] - layerX) / layerWidth, - (last[15] - layerY) / layerHeight, - ], - 0 - ); - return new FreeHighlightOutline( - outline, - points, - this.#box, - this.#scaleFactor, - this.#innerMargin, - this.#isLTR - ); + return this.#getOutlineTwoPoints(points); } const outline = new Float64Array( @@ -681,14 +328,53 @@ class FreeOutliner { outline[i + 1] = top[i + 1]; } + N = this.#getOutlineEnd(outline, N); + + for (let i = bottom.length - 6; i >= 6; i -= 6) { + for (let j = 0; j < 6; j += 2) { + if (isNaN(bottom[i + j])) { + outline[N] = outline[N + 1] = NaN; + N += 2; + continue; + } + outline[N] = bottom[i + j]; + outline[N + 1] = bottom[i + j + 1]; + N += 2; + } + } + + this.#getOutlineStart(outline, N); + + return this.newFreeDrawOutline( + outline, + points, + this.#box, + this.#scaleFactor, + this.#innerMargin, + this.#isLTR + ); + } + + #getOutlineTwoPoints(points) { + const last = this.#last; + const [layerX, layerY, layerWidth, layerHeight] = this.#box; + const [lastTopX, lastTopY, lastBottomX, lastBottomY] = + this.#getLastCoords(); + const outline = new Float64Array(36); outline.set( [ NaN, NaN, NaN, NaN, - (lastTop[0] - layerX) / layerWidth, - (lastTop[1] - layerY) / layerHeight, + (last[2] - layerX) / layerWidth, + (last[3] - layerY) / layerHeight, + NaN, + NaN, + NaN, + NaN, + (last[4] - layerX) / layerWidth, + (last[5] - layerY) / layerHeight, NaN, NaN, NaN, @@ -705,27 +391,18 @@ class FreeOutliner { NaN, NaN, NaN, - (lastBottom[0] - layerX) / layerWidth, - (lastBottom[1] - layerY) / layerHeight, + (last[16] - layerX) / layerWidth, + (last[17] - layerY) / layerHeight, + NaN, + NaN, + NaN, + NaN, + (last[14] - layerX) / layerWidth, + (last[15] - layerY) / layerHeight, ], - N + 0 ); - N += 24; - - for (let i = bottom.length - 6; i >= 6; i -= 6) { - for (let j = 0; j < 6; j += 2) { - if (isNaN(bottom[i + j])) { - outline[N] = outline[N + 1] = NaN; - N += 2; - continue; - } - outline[N] = bottom[i + j]; - outline[N + 1] = bottom[i + j + 1]; - N += 2; - } - } - outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N); - return new FreeHighlightOutline( + return this.newFreeDrawOutline( outline, points, this.#box, @@ -734,9 +411,53 @@ class FreeOutliner { this.#isLTR ); } + + #getOutlineStart(outline, pos) { + const bottom = this.#bottom; + outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos); + return (pos += 6); + } + + #getOutlineEnd(outline, pos) { + const lastTop = this.#last.subarray(4, 6); + const lastBottom = this.#last.subarray(16, 18); + const [layerX, layerY, layerWidth, layerHeight] = this.#box; + const [lastTopX, lastTopY, lastBottomX, lastBottomY] = + this.#getLastCoords(); + outline.set( + [ + NaN, + NaN, + NaN, + NaN, + (lastTop[0] - layerX) / layerWidth, + (lastTop[1] - layerY) / layerHeight, + NaN, + NaN, + NaN, + NaN, + lastTopX, + lastTopY, + NaN, + NaN, + NaN, + NaN, + lastBottomX, + lastBottomY, + NaN, + NaN, + NaN, + NaN, + (lastBottom[0] - layerX) / layerWidth, + (lastBottom[1] - layerY) / layerHeight, + ], + pos + ); + return (pos += 24); + } } -class FreeHighlightOutline extends Outline { +class FreeDrawOutline extends Outline { #box; #bbox = null; @@ -895,6 +616,17 @@ class FreeHighlightOutline extends Outline { return this.#bbox; } + newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) { + return new FreeDrawOutliner( + point, + box, + scaleFactor, + thickness, + isLTR, + innerMargin + ); + } + getNewOutline(thickness, innerMargin) { // Build the outline of the highlight to use as the focus outline. const { x, y, width, height } = this.#bbox; @@ -903,7 +635,7 @@ class FreeHighlightOutline extends Outline { const sy = height * layerHeight; const tx = x * layerWidth + layerX; const ty = y * layerHeight + layerY; - const outliner = new FreeOutliner( + const outliner = this.newOutliner( { x: this.#points[0] * sx + tx, y: this.#points[1] * sy + ty, @@ -922,6 +654,10 @@ class FreeHighlightOutline extends Outline { } return outliner.getOutlines(); } + + get mustRemoveSelfIntersections() { + return true; + } } -export { FreeOutliner, Outliner }; +export { FreeDrawOutline, FreeDrawOutliner }; diff --git a/src/display/editor/drawers/highlight.js b/src/display/editor/drawers/highlight.js new file mode 100644 index 0000000000000..2e01e5c274219 --- /dev/null +++ b/src/display/editor/drawers/highlight.js @@ -0,0 +1,369 @@ +/* Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { FreeDrawOutline, FreeDrawOutliner } from "./freedraw.js"; +import { Outline } from "./outline.js"; + +class HighlightOutliner { + #box; + + #verticalEdges = []; + + #intervals = []; + + /** + * Construct an outliner. + * @param {Array} boxes - An array of axis-aligned rectangles. + * @param {number} borderWidth - The width of the border of the boxes, it + * allows to make the boxes bigger (or smaller). + * @param {number} innerMargin - The margin between the boxes and the + * outlines. It's important to not have a null innerMargin when we want to + * draw the outline else the stroked outline could be clipped because of its + * width. + * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine + * the last point of the boxes. + */ + constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) { + let minX = Infinity; + let maxX = -Infinity; + let minY = Infinity; + let maxY = -Infinity; + + // We round the coordinates to slightly reduce the number of edges in the + // final outlines. + const NUMBER_OF_DIGITS = 4; + const EPSILON = 10 ** -NUMBER_OF_DIGITS; + + // The coordinates of the boxes are in the page coordinate system. + for (const { x, y, width, height } of boxes) { + const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON; + const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON; + const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON; + const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON; + const left = [x1, y1, y2, true]; + const right = [x2, y1, y2, false]; + this.#verticalEdges.push(left, right); + + minX = Math.min(minX, x1); + maxX = Math.max(maxX, x2); + minY = Math.min(minY, y1); + maxY = Math.max(maxY, y2); + } + + const bboxWidth = maxX - minX + 2 * innerMargin; + const bboxHeight = maxY - minY + 2 * innerMargin; + const shiftedMinX = minX - innerMargin; + const shiftedMinY = minY - innerMargin; + const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2); + const lastPoint = [lastEdge[0], lastEdge[2]]; + + // Convert the coordinates of the edges into box coordinates. + for (const edge of this.#verticalEdges) { + const [x, y1, y2] = edge; + edge[0] = (x - shiftedMinX) / bboxWidth; + edge[1] = (y1 - shiftedMinY) / bboxHeight; + edge[2] = (y2 - shiftedMinY) / bboxHeight; + } + + this.#box = { + x: shiftedMinX, + y: shiftedMinY, + width: bboxWidth, + height: bboxHeight, + lastPoint, + }; + } + + getOutlines() { + // We begin to sort lexicographically the vertical edges by their abscissa, + // and then by their ordinate. + this.#verticalEdges.sort( + (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2] + ); + + // We're now using a sweep line algorithm to find the outlines. + // We start with the leftmost vertical edge, and we're going to iterate + // over all the vertical edges from left to right. + // Each time we encounter a left edge, we're going to insert the interval + // [y1, y2] in the set of intervals. + // This set of intervals is used to break the vertical edges into chunks: + // we only take the part of the vertical edge that isn't in the union of + // the intervals. + const outlineVerticalEdges = []; + for (const edge of this.#verticalEdges) { + if (edge[3]) { + // Left edge. + outlineVerticalEdges.push(...this.#breakEdge(edge)); + this.#insert(edge); + } else { + // Right edge. + this.#remove(edge); + outlineVerticalEdges.push(...this.#breakEdge(edge)); + } + } + return this.#getOutlines(outlineVerticalEdges); + } + + #getOutlines(outlineVerticalEdges) { + const edges = []; + const allEdges = new Set(); + + for (const edge of outlineVerticalEdges) { + const [x, y1, y2] = edge; + edges.push([x, y1, edge], [x, y2, edge]); + } + + // We sort lexicographically the vertices of each edge by their ordinate and + // by their abscissa. + // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge. + // So for every vertical edge, we're going to add the two vertical edges + // which are connected to it through a horizontal edge. + edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]); + for (let i = 0, ii = edges.length; i < ii; i += 2) { + const edge1 = edges[i][2]; + const edge2 = edges[i + 1][2]; + edge1.push(edge2); + edge2.push(edge1); + allEdges.add(edge1); + allEdges.add(edge2); + } + const outlines = []; + let outline; + + while (allEdges.size > 0) { + const edge = allEdges.values().next().value; + let [x, y1, y2, edge1, edge2] = edge; + allEdges.delete(edge); + let lastPointX = x; + let lastPointY = y1; + + outline = [x, y2]; + outlines.push(outline); + + while (true) { + let e; + if (allEdges.has(edge1)) { + e = edge1; + } else if (allEdges.has(edge2)) { + e = edge2; + } else { + break; + } + + allEdges.delete(e); + [x, y1, y2, edge1, edge2] = e; + + if (lastPointX !== x) { + outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2); + lastPointX = x; + } + lastPointY = lastPointY === y1 ? y2 : y1; + } + outline.push(lastPointX, lastPointY); + } + return new HighlightOutline(outlines, this.#box); + } + + #binarySearch(y) { + const array = this.#intervals; + let start = 0; + let end = array.length - 1; + + while (start <= end) { + const middle = (start + end) >> 1; + const y1 = array[middle][0]; + if (y1 === y) { + return middle; + } + if (y1 < y) { + start = middle + 1; + } else { + end = middle - 1; + } + } + return end + 1; + } + + #insert([, y1, y2]) { + const index = this.#binarySearch(y1); + this.#intervals.splice(index, 0, [y1, y2]); + } + + #remove([, y1, y2]) { + const index = this.#binarySearch(y1); + for (let i = index; i < this.#intervals.length; i++) { + const [start, end] = this.#intervals[i]; + if (start !== y1) { + break; + } + if (start === y1 && end === y2) { + this.#intervals.splice(i, 1); + return; + } + } + for (let i = index - 1; i >= 0; i--) { + const [start, end] = this.#intervals[i]; + if (start !== y1) { + break; + } + if (start === y1 && end === y2) { + this.#intervals.splice(i, 1); + return; + } + } + } + + #breakEdge(edge) { + const [x, y1, y2] = edge; + const results = [[x, y1, y2]]; + const index = this.#binarySearch(y2); + for (let i = 0; i < index; i++) { + const [start, end] = this.#intervals[i]; + for (let j = 0, jj = results.length; j < jj; j++) { + const [, y3, y4] = results[j]; + if (end <= y3 || y4 <= start) { + // There is no intersection between the interval and the edge, hence + // we keep it as is. + continue; + } + if (y3 >= start) { + if (y4 > end) { + results[j][1] = end; + } else { + if (jj === 1) { + return []; + } + // The edge is included in the interval, hence we remove it. + results.splice(j, 1); + j--; + jj--; + } + continue; + } + results[j][2] = start; + if (y4 > end) { + results.push([x, end, y4]); + } + } + } + return results; + } +} + +class HighlightOutline extends Outline { + #box; + + #outlines; + + constructor(outlines, box) { + super(); + this.#outlines = outlines; + this.#box = box; + } + + toSVGPath() { + const buffer = []; + for (const polygon of this.#outlines) { + let [prevX, prevY] = polygon; + buffer.push(`M${prevX} ${prevY}`); + for (let i = 2; i < polygon.length; i += 2) { + const x = polygon[i]; + const y = polygon[i + 1]; + if (x === prevX) { + buffer.push(`V${y}`); + prevY = y; + } else if (y === prevY) { + buffer.push(`H${x}`); + prevX = x; + } + } + buffer.push("Z"); + } + return buffer.join(" "); + } + + /** + * Serialize the outlines into the PDF page coordinate system. + * @param {Array} _bbox - the bounding box of the annotation. + * @param {number} _rotation - the rotation of the annotation. + * @returns {Array>} + */ + serialize([blX, blY, trX, trY], _rotation) { + const outlines = []; + const width = trX - blX; + const height = trY - blY; + for (const outline of this.#outlines) { + const points = new Array(outline.length); + for (let i = 0; i < outline.length; i += 2) { + points[i] = blX + outline[i] * width; + points[i + 1] = trY - outline[i + 1] * height; + } + outlines.push(points); + } + return outlines; + } + + get box() { + return this.#box; + } + + get classNamesForDrawing() { + return ["highlight"]; + } + + get classNamesForOutlining() { + return ["highlightOutline"]; + } +} + +class FreeHighlightOutliner extends FreeDrawOutliner { + newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) { + return new FreeHighlightOutline( + outline, + points, + box, + scaleFactor, + innerMargin, + isLTR + ); + } + + get classNamesForDrawing() { + return ["highlight", "free"]; + } +} + +class FreeHighlightOutline extends FreeDrawOutline { + get classNamesForDrawing() { + return ["highlight", "free"]; + } + + get classNamesForOutlining() { + return ["highlightOutline", "free"]; + } + + newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) { + return new FreeHighlightOutliner( + point, + box, + scaleFactor, + thickness, + isLTR, + innerMargin + ); + } +} + +export { FreeHighlightOutliner, HighlightOutliner }; diff --git a/src/display/editor/drawers/outline.js b/src/display/editor/drawers/outline.js new file mode 100644 index 0000000000000..d272526f3a553 --- /dev/null +++ b/src/display/editor/drawers/outline.js @@ -0,0 +1,55 @@ +/* Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { unreachable } from "../../../shared/util.js"; + +class Outline { + /** + * @returns {string} The SVG path of the outline. + */ + toSVGPath() { + unreachable("Abstract method `toSVGPath` must be implemented."); + } + + /** + * @type {Object|null} The bounding box of the outline. + */ + // eslint-disable-next-line getter-return + get box() { + unreachable("Abstract getter `box` must be implemented."); + } + + serialize(_bbox, _rotation) { + unreachable("Abstract method `serialize` must be implemented."); + } + + // eslint-disable-next-line getter-return + get classNamesForDrawing() { + unreachable("Abstract getter `classNamesForDrawing` must be implemented."); + } + + // eslint-disable-next-line getter-return + get classNamesForOutlining() { + unreachable( + "Abstract getter `classNamesForOutlining` must be implemented." + ); + } + + get mustRemoveSelfIntersections() { + return false; + } +} + +export { Outline }; diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index a8ef49a8bae6f..345b6b0d43cc9 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -20,7 +20,10 @@ import { Util, } from "../../shared/util.js"; import { bindEvents, KeyboardManager } from "./tools.js"; -import { FreeOutliner, Outliner } from "./outliner.js"; +import { + FreeHighlightOutliner, + HighlightOutliner, +} from "./drawers/highlight.js"; import { HighlightAnnotationElement, InkAnnotationElement, @@ -149,7 +152,10 @@ class HighlightEditor extends AnnotationEditor { } #createOutlines() { - const outliner = new Outliner(this.#boxes, /* borderWidth = */ 0.001); + const outliner = new HighlightOutliner( + this.#boxes, + /* borderWidth = */ 0.001 + ); this.#highlightOutlines = outliner.getOutlines(); ({ x: this.x, @@ -158,7 +164,7 @@ class HighlightEditor extends AnnotationEditor { height: this.height, } = this.#highlightOutlines.box); - const outlinerForOutline = new Outliner( + const outlinerForOutline = new HighlightOutliner( this.#boxes, /* borderWidth = */ 0.0025, /* innerMargin = */ 0.001, @@ -190,9 +196,7 @@ class HighlightEditor extends AnnotationEditor { // We need to redraw the highlight because we change the coordinates to be // in the box coordinate system. this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines); - this.#outlineId = this.parent.drawLayer.highlightOutline( - this.#focusOutlines - ); + this.#outlineId = this.parent.drawLayer.drawOutline(this.#focusOutlines); } else if (this.parent) { const angle = this.parent.viewport.rotation; this.parent.drawLayer.updateLine(this.#id, highlightOutlines); @@ -498,13 +502,12 @@ class HighlightEditor extends AnnotationEditor { if (this.#id !== null) { return; } - ({ id: this.#id, clipPathId: this.#clipPathId } = - parent.drawLayer.highlight( - this.#highlightOutlines, - this.color, - this.#opacity - )); - this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines); + ({ id: this.#id, clipPathId: this.#clipPathId } = parent.drawLayer.draw( + this.#highlightOutlines, + this.color, + this.#opacity + )); + this.#outlineId = parent.drawLayer.drawOutline(this.#focusOutlines); if (this.#highlightDiv) { this.#highlightDiv.style.clipPath = this.#clipPathId; } @@ -742,7 +745,7 @@ class HighlightEditor extends AnnotationEditor { this.#highlightMove.bind(this, parent), { signal } ); - this._freeHighlight = new FreeOutliner( + this._freeHighlight = new FreeHighlightOutliner( { x, y }, [layerX, layerY, parentWidth, parentHeight], parent.scale, @@ -751,7 +754,7 @@ class HighlightEditor extends AnnotationEditor { /* innerMargin = */ 0.001 ); ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } = - parent.drawLayer.highlight( + parent.drawLayer.draw( this._freeHighlight, this._defaultColor, this._defaultOpacity, @@ -775,7 +778,7 @@ class HighlightEditor extends AnnotationEditor { methodOfCreation: "main_toolbar", }); } else { - parent.drawLayer.removeFreeHighlight(this._freeHighlightId); + parent.drawLayer.remove(this._freeHighlightId); } this._freeHighlightId = -1; this._freeHighlight = null; @@ -869,7 +872,7 @@ class HighlightEditor extends AnnotationEditor { x: points[0] - pageX, y: pageHeight - (points[1] - pageY), }; - const outliner = new FreeOutliner( + const outliner = new FreeHighlightOutliner( point, [0, 0, pageWidth, pageHeight], 1, @@ -882,7 +885,7 @@ class HighlightEditor extends AnnotationEditor { point.y = pageHeight - (points[i + 1] - pageY); outliner.add(point); } - const { id, clipPathId } = parent.drawLayer.highlight( + const { id, clipPathId } = parent.drawLayer.draw( outliner, editor.color, editor._defaultOpacity, diff --git a/src/pdf.js b/src/pdf.js index c78d27e14524d..1267cf9c3ff2e 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -69,7 +69,7 @@ import { AnnotationLayer } from "./display/annotation_layer.js"; import { ColorPicker } from "./display/editor/color_picker.js"; import { DrawLayer } from "./display/draw_layer.js"; import { GlobalWorkerOptions } from "./display/worker_options.js"; -import { Outliner } from "./display/editor/outliner.js"; +import { HighlightOutliner } from "./display/editor/drawers/highlight.js"; import { TextLayer } from "./display/text_layer.js"; import { XfaLayer } from "./display/xfa_layer.js"; @@ -82,7 +82,7 @@ const pdfjsBuild = if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { globalThis.pdfjsTestingUtils = { - Outliner, + HighlightOutliner, }; } diff --git a/test/driver.js b/test/driver.js index 8ba30b0bfd3ce..cb27734934b5f 100644 --- a/test/driver.js +++ b/test/driver.js @@ -25,7 +25,7 @@ const { TextLayer, XfaLayer, } = pdfjsLib; -const { Outliner } = pdfjsTestingUtils; +const { HighlightOutliner } = pdfjsTestingUtils; const { GenericL10n, parseQueryString, SimpleLinkService } = pdfjsViewer; const WAITING_TIME = 100; // ms @@ -370,19 +370,19 @@ class Rasterize { } // We set the borderWidth to 0.001 to slighly increase the size of the // boxes so that they can be merged together. - const outliner = new Outliner(boxes, /* borderWidth = */ 0.001); + const outliner = new HighlightOutliner(boxes, /* borderWidth = */ 0.001); // We set the borderWidth to 0.0025 in order to have an outline which is // slightly bigger than the highlight itself. // We must add an inner margin to avoid to have a partial outline. - const outlinerForOutline = new Outliner( + const outlinerForOutline = new HighlightOutliner( boxes, /* borderWidth = */ 0.0025, /* innerMargin = */ 0.001 ); const drawLayer = new DrawLayer({ pageIndex: 0 }); drawLayer.setParent(div); - drawLayer.highlight(outliner.getOutlines(), "orange", 0.4); - drawLayer.highlightOutline(outlinerForOutline.getOutlines()); + drawLayer.draw(outliner.getOutlines(), "orange", 0.4); + drawLayer.drawOutline(outlinerForOutline.getOutlines()); svg.append(foreignObject); From 849008cb76881ca3d3982087bdf4d41e066b705a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 29 Oct 2024 16:35:44 +0100 Subject: [PATCH 011/338] Re-factor the `toHexUtil` helper (PR 17862 follow-up) We can re-use the `hexNumbers` structure, since that allows us to directly lookup the hexadecimal values and shortens the code. --- src/shared/util.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/shared/util.js b/src/shared/util.js index 700f9f87104bb..b61a58abc19d0 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1102,11 +1102,7 @@ function toHexUtil(arr) { if (Uint8Array.prototype.toHex) { return arr.toHex(); } - const buf = []; - for (const num of arr) { - buf.push(num.toString(16).padStart(2, "0")); - } - return buf.join(""); + return Array.from(arr, num => hexNumbers[num]).join(""); } // TODO: Remove this once `Uint8Array.prototype.toBase64` is generally From 39d40a45d01b478f3bdefe54d01c3a7271691f3a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 30 Oct 2024 15:20:44 +0100 Subject: [PATCH 012/338] Don't initialize `L10n.#elements` eagerly since it's unused in MOZCENTRAL builds It's not necessary to manually start translation in the Firefox PDF Viewer, and doing so would even cause problems there (see issue 17142). --- web/l10n.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/web/l10n.js b/web/l10n.js index bd348753d1596..053614e9885c7 100644 --- a/web/l10n.js +++ b/web/l10n.js @@ -23,7 +23,7 @@ class L10n { #dir; - #elements = new Set(); + #elements; #lang; @@ -71,7 +71,7 @@ class L10n { /** @inheritdoc */ async translate(element) { - this.#elements.add(element); + (this.#elements ||= new Set()).add(element); try { this.#l10n.connectRoot(element); await this.#l10n.translateRoots(); @@ -91,10 +91,13 @@ class L10n { /** @inheritdoc */ async destroy() { - for (const element of this.#elements) { - this.#l10n.disconnectRoot(element); + if (this.#elements) { + for (const element of this.#elements) { + this.#l10n.disconnectRoot(element); + } + this.#elements.clear(); + this.#elements = null; } - this.#elements.clear(); this.#l10n.pauseObserving(); } From cbf6579df1b2054e1829ec351609a661b26a468d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 31 Oct 2024 09:25:07 +0100 Subject: [PATCH 013/338] Change the "FetchBuiltInCMap"/"FetchStandardFontData" message-handlers to be asynchronous This way we can directly throw Errors, rather than having to "manually" return rejected Promises, which is ever so slightly shorter. Also, since `useWorkerFetch` is always true in MOZCENTRAL builds these message-handlers should not be invoked there. --- src/display/api.js | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 211c37862c867..b19a89790c4b7 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2916,29 +2916,31 @@ class WorkerTransport { }); }); - messageHandler.on("FetchBuiltInCMap", data => { + messageHandler.on("FetchBuiltInCMap", async data => { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + throw new Error("Not implemented: FetchBuiltInCMap"); + } if (this.destroyed) { - return Promise.reject(new Error("Worker was destroyed.")); + throw new Error("Worker was destroyed."); } if (!this.cMapReaderFactory) { - return Promise.reject( - new Error( - "CMapReaderFactory not initialized, see the `useWorkerFetch` parameter." - ) + throw new Error( + "CMapReaderFactory not initialized, see the `useWorkerFetch` parameter." ); } return this.cMapReaderFactory.fetch(data); }); - messageHandler.on("FetchStandardFontData", data => { + messageHandler.on("FetchStandardFontData", async data => { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + throw new Error("Not implemented: FetchStandardFontData"); + } if (this.destroyed) { - return Promise.reject(new Error("Worker was destroyed.")); + throw new Error("Worker was destroyed."); } if (!this.standardFontDataFactory) { - return Promise.reject( - new Error( - "StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter." - ) + throw new Error( + "StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter." ); } return this.standardFontDataFactory.fetch(data); From 858e19efcdf97a99ce22ba665a3e5c661aeb5c58 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 2 Nov 2024 15:00:32 +0100 Subject: [PATCH 014/338] Use the `hexNumbers` structure in the `stringToUTF16HexString` helper We can re-use the `hexNumbers` structure here, since that allows us to directly lookup the hexadecimal values and shortens the code. --- src/core/core_utils.js | 6 ++---- src/shared/util.js | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/core/core_utils.js b/src/core/core_utils.js index 0f81422e8fecb..58c721f387283 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -17,6 +17,7 @@ import { AnnotationEditorPrefix, assert, BaseException, + hexNumbers, objectSize, stringToPDFString, Util, @@ -634,10 +635,7 @@ function stringToUTF16HexString(str) { const buf = []; for (let i = 0, ii = str.length; i < ii; i++) { const char = str.charCodeAt(i); - buf.push( - ((char >> 8) & 0xff).toString(16).padStart(2, "0"), - (char & 0xff).toString(16).padStart(2, "0") - ); + buf.push(hexNumbers[(char >> 8) & 0xff], hexNumbers[char & 0xff]); } return buf.join(""); } diff --git a/src/shared/util.js b/src/shared/util.js index b61a58abc19d0..341f26c0bfd75 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1149,6 +1149,7 @@ export { getModificationDate, getUuid, getVerbosityLevel, + hexNumbers, IDENTITY_MATRIX, ImageKind, info, From d992103ce04c6da8e2144fd3c5de7d5b806fceae Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 1 Nov 2024 17:22:46 +0100 Subject: [PATCH 015/338] Ensure that serializing of StructTree-data cannot fail during loading I discovered that doing skip-cache re-reloading of https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf would *intermittently* cause (some of) the AnnotationLayers to break with errors printed in the console (see below). In hindsight this bug is really obvious, however it took me quite some time to find it, since the `StructTreePage.prototype.serializable` getter will lookup various data and all of those cases can fail during loading when streaming and/or range requests are being used. Finally, to prevent any future errors, ensure that the viewer won't break in these sort of situations. ``` Uncaught (in promise) Object { message: "Missing data [19098296, 19098297)", name: "UnknownErrorException", details: "MissingDataException: Missing data [19098296, 19098297)", stack: "BaseExceptionClosure@resource://pdf.js/build/pdf.mjs:453:29\n@resource://pdf.js/build/pdf.mjs:456:2\n" } viewer.mjs:8801:55 \#renderAnnotationLayer: "UnknownErrorException: Missing data [17552729, 17552730)". viewer.mjs:8737:15 Uncaught (in promise) Object { message: "Missing data [17552729, 17552730)", name: "UnknownErrorException", details: "MissingDataException: Missing data [17552729, 17552730)", stack: "BaseExceptionClosure@resource://pdf.js/build/pdf.mjs:453:29\n@resource://pdf.js/build/pdf.mjs:456:2\n" } viewer.mjs:8801:55 ``` --- src/core/document.js | 2 +- web/struct_tree_layer_builder.js | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/document.js b/src/core/document.js index 434cbac2a6325..25952d0016979 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -707,7 +707,7 @@ class Page { const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [ structTreeRoot, ]); - return structTree.serializable; + return this.pdfManager.ensure(structTree, "serializable"); } /** diff --git a/web/struct_tree_layer_builder.js b/web/struct_tree_layer_builder.js index ead85bbf12507..72ba6bc5c111c 100644 --- a/web/struct_tree_layer_builder.js +++ b/web/struct_tree_layer_builder.js @@ -112,8 +112,14 @@ class StructTreeLayerBuilder { } async getAriaAttributes(annotationId) { - await this.render(); - return this.#elementAttributes.get(annotationId); + try { + await this.render(); + return this.#elementAttributes.get(annotationId); + } catch { + // If the structTree cannot be fetched, parsed, and/or rendered, + // ensure that e.g. the AnnotationLayer won't break completely. + } + return null; } hide() { From 5aa359580b0464b5af685192703bcd7906440770 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 2 Nov 2024 11:06:30 +0100 Subject: [PATCH 016/338] Inline the `flushChunks` helper function, used in `getPdfManager` on the worker-thread - This helper function has only a single call-site, and the function is fairly short. - It'll only be invoked if range requests are *disabled*, or if the entire PDF manages to load *before* the headers are resolved (which is very unlikely). Hence, by default, this helper function is not invoked. - By inlining the code we're able to utilize the existing error-handling at the call-site, rather than having to duplicate it, which further reduces the size of this code. Finally, while slightly unrelated, this patch also adds optional chaining in one spot in the file (PR 16424 follow-up). --- src/core/worker.js | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/core/worker.js b/src/core/worker.js index a8e0c42306233..2b6c9ac85222c 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -227,7 +227,8 @@ class WorkerMessageHandler { } let pdfStream, - cachedChunks = []; + cachedChunks = [], + loaded = 0; try { pdfStream = new PDFWorkerStream(handler); } catch (ex) { @@ -263,30 +264,22 @@ class WorkerMessageHandler { cancelXHRs = null; }); - let loaded = 0; - const flushChunks = function () { - const pdfFile = arrayBuffersToBytes(cachedChunks); - if (length && pdfFile.length !== length) { - warn("reported HTTP length is different from actual"); - } - // the data is array, instantiating directly from it - try { - pdfManagerArgs.source = pdfFile; - - newPdfManager = new LocalPdfManager(pdfManagerArgs); - pdfManagerCapability.resolve(newPdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - cachedChunks = []; - }; new Promise(function (resolve, reject) { const readChunk = function ({ value, done }) { try { ensureNotTerminated(); if (done) { if (!newPdfManager) { - flushChunks(); + const pdfFile = arrayBuffersToBytes(cachedChunks); + cachedChunks = []; + + if (length && pdfFile.length !== length) { + warn("reported HTTP length is different from actual"); + } + pdfManagerArgs.source = pdfFile; + + newPdfManager = new LocalPdfManager(pdfManagerArgs); + pdfManagerCapability.resolve(newPdfManager); } cancelXHRs = null; return; @@ -854,9 +847,7 @@ class WorkerMessageHandler { } else { clearGlobalCaches(); } - if (cancelXHRs) { - cancelXHRs(new AbortException("Worker was terminated.")); - } + cancelXHRs?.(new AbortException("Worker was terminated.")); for (const task of WorkerTasks) { waitOn.push(task.finished); From bf000f58eb7e9b879287117b5f3ebbec684c56f9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 1 Nov 2024 12:34:39 +0100 Subject: [PATCH 017/338] Move the various DOM-factories into their own files - Over time the number and size of these factories have increased, especially the `DOMFilterFactory` class, and this split should thus aid readability/maintainability of the code. - By introducing a couple of new import maps we can avoid bundling the `DOMCMapReaderFactory`/`DOMStandardFontDataFactory` classes in the Firefox PDF Viewer, since they are dead code there given that worker-thread fetching is always being used. - This patch has been successfully tested, by running `$ ./mach test toolkit/components/pdfjs/`, in a local Firefox artifact-build. *Note:* This patch reduces the size of the `gulp mozcentral` output by `1.3` kilo-bytes, which isn't a lot but still cannot hurt. --- gulpfile.mjs | 12 + src/display/annotation_layer.js | 7 +- src/display/api.js | 8 +- src/display/base_factory.js | 234 ---------- src/display/canvas_factory.js | 92 ++++ src/display/cmap_reader_factory.js | 75 ++++ src/display/display_utils.js | 521 +---------------------- src/display/draw_layer.js | 2 +- src/display/filter_factory.js | 508 ++++++++++++++++++++++ src/display/node_utils.js | 10 +- src/display/standard_fontdata_factory.js | 65 +++ src/display/stubs.js | 4 + src/display/svg_factory.js | 71 +++ src/pdf.js | 2 +- test/unit/canvas_factory_spec.js | 111 +++++ test/unit/clitests.json | 2 + test/unit/display_utils_spec.js | 147 ------- test/unit/jasmine-boot.js | 2 + test/unit/pdf_spec.js | 2 +- test/unit/svg_factory_spec.js | 72 ++++ test/unit/unit_test.html | 2 + tsconfig.json | 4 + web/viewer-geckoview.html | 2 + web/viewer.html | 2 + 24 files changed, 1038 insertions(+), 919 deletions(-) delete mode 100644 src/display/base_factory.js create mode 100644 src/display/canvas_factory.js create mode 100644 src/display/cmap_reader_factory.js create mode 100644 src/display/filter_factory.js create mode 100644 src/display/standard_fontdata_factory.js create mode 100644 src/display/svg_factory.js create mode 100644 test/unit/canvas_factory_spec.js create mode 100644 test/unit/svg_factory_spec.js diff --git a/gulpfile.mjs b/gulpfile.mjs index 8c97bf4fe5df3..45b621d0dd6b1 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -191,6 +191,8 @@ function createWebpackAlias(defines) { "fluent-dom": "node_modules/@fluent/dom/esm/index.js", }; const libraryAlias = { + "display-cmap_reader_factory": "src/display/stubs.js", + "display-standard_fontdata_factory": "src/display/stubs.js", "display-fetch_stream": "src/display/stubs.js", "display-network": "src/display/stubs.js", "display-node_stream": "src/display/stubs.js", @@ -219,6 +221,10 @@ function createWebpackAlias(defines) { }; if (defines.CHROME) { + libraryAlias["display-cmap_reader_factory"] = + "src/display/cmap_reader_factory.js"; + libraryAlias["display-standard_fontdata_factory"] = + "src/display/standard_fontdata_factory.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-network"] = "src/display/network.js"; @@ -231,6 +237,10 @@ function createWebpackAlias(defines) { // Aliases defined here must also be replicated in the paths section of // the tsconfig.json file for the type generation to work. // In the tsconfig.json files, the .js extension must be omitted. + libraryAlias["display-cmap_reader_factory"] = + "src/display/cmap_reader_factory.js"; + libraryAlias["display-standard_fontdata_factory"] = + "src/display/standard_fontdata_factory.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-network"] = "src/display/network.js"; libraryAlias["display-node_stream"] = "src/display/node_stream.js"; @@ -1573,6 +1583,8 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { defines: bundleDefines, map: { "pdfjs-lib": "../pdf.js", + "display-cmap_reader_factory": "./cmap_reader_factory.js", + "display-standard_fontdata_factory": "./standard_fontdata_factory.js", "display-fetch_stream": "./fetch_stream.js", "display-network": "./network.js", "display-node_stream": "./node_stream.js", diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 955b16f363303..e2dc138a8ded4 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -37,13 +37,10 @@ import { Util, warn, } from "../shared/util.js"; -import { - DOMSVGFactory, - PDFDateString, - setLayerDimensions, -} from "./display_utils.js"; +import { PDFDateString, setLayerDimensions } from "./display_utils.js"; import { AnnotationStorage } from "./annotation_storage.js"; import { ColorConverters } from "../shared/scripting_utils.js"; +import { DOMSVGFactory } from "./svg_factory.js"; import { XfaLayer } from "./xfa_layer.js"; const DEFAULT_TAB_INDEX = 1000; diff --git a/src/display/api.js b/src/display/api.js index b19a89790c4b7..b9e08f6fd2a20 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -45,10 +45,6 @@ import { } from "./annotation_storage.js"; import { deprecated, - DOMCanvasFactory, - DOMCMapReaderFactory, - DOMFilterFactory, - DOMStandardFontDataFactory, isDataScheme, isValidFetchUrl, PageViewport, @@ -64,6 +60,10 @@ import { NodeStandardFontDataFactory, } from "display-node_utils"; import { CanvasGraphics } from "./canvas.js"; +import { DOMCanvasFactory } from "./canvas_factory.js"; +import { DOMCMapReaderFactory } from "display-cmap_reader_factory"; +import { DOMFilterFactory } from "./filter_factory.js"; +import { DOMStandardFontDataFactory } from "display-standard_fontdata_factory"; import { GlobalWorkerOptions } from "./worker_options.js"; import { MessageHandler } from "../shared/message_handler.js"; import { Metadata } from "./metadata.js"; diff --git a/src/display/base_factory.js b/src/display/base_factory.js deleted file mode 100644 index 7d72ac49ab267..0000000000000 --- a/src/display/base_factory.js +++ /dev/null @@ -1,234 +0,0 @@ -/* Copyright 2015 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. - */ - -import { unreachable } from "../shared/util.js"; - -class BaseFilterFactory { - constructor() { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - this.constructor === BaseFilterFactory - ) { - unreachable("Cannot initialize BaseFilterFactory."); - } - } - - addFilter(maps) { - return "none"; - } - - addHCMFilter(fgColor, bgColor) { - return "none"; - } - - addAlphaFilter(map) { - return "none"; - } - - addLuminosityFilter(map) { - return "none"; - } - - addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) { - return "none"; - } - - destroy(keepHCM = false) {} -} - -class BaseCanvasFactory { - #enableHWA = false; - - constructor({ enableHWA = false }) { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - this.constructor === BaseCanvasFactory - ) { - unreachable("Cannot initialize BaseCanvasFactory."); - } - this.#enableHWA = enableHWA; - } - - create(width, height) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - const canvas = this._createCanvas(width, height); - return { - canvas, - context: canvas.getContext("2d", { - willReadFrequently: !this.#enableHWA, - }), - }; - } - - reset(canvasAndContext, width, height) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - if (width <= 0 || height <= 0) { - throw new Error("Invalid canvas size"); - } - canvasAndContext.canvas.width = width; - canvasAndContext.canvas.height = height; - } - - destroy(canvasAndContext) { - if (!canvasAndContext.canvas) { - throw new Error("Canvas is not specified"); - } - // Zeroing the width and height cause Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - canvasAndContext.canvas.width = 0; - canvasAndContext.canvas.height = 0; - canvasAndContext.canvas = null; - canvasAndContext.context = null; - } - - /** - * @ignore - */ - _createCanvas(width, height) { - unreachable("Abstract method `_createCanvas` called."); - } -} - -class BaseCMapReaderFactory { - constructor({ baseUrl = null, isCompressed = true }) { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - this.constructor === BaseCMapReaderFactory - ) { - unreachable("Cannot initialize BaseCMapReaderFactory."); - } - this.baseUrl = baseUrl; - this.isCompressed = isCompressed; - } - - async fetch({ name }) { - if (!this.baseUrl) { - throw new Error( - "Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided." - ); - } - if (!name) { - throw new Error("CMap name must be specified."); - } - const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); - - return this._fetch(url) - .then(cMapData => ({ cMapData, isCompressed: this.isCompressed })) - .catch(reason => { - throw new Error( - `Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}` - ); - }); - } - - /** - * @ignore - * @returns {Promise} - */ - async _fetch(url) { - unreachable("Abstract method `_fetch` called."); - } -} - -class BaseStandardFontDataFactory { - constructor({ baseUrl = null }) { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - this.constructor === BaseStandardFontDataFactory - ) { - unreachable("Cannot initialize BaseStandardFontDataFactory."); - } - this.baseUrl = baseUrl; - } - - async fetch({ filename }) { - if (!this.baseUrl) { - throw new Error( - "Ensure that the `standardFontDataUrl` API parameter is provided." - ); - } - if (!filename) { - throw new Error("Font filename must be specified."); - } - const url = `${this.baseUrl}${filename}`; - - return this._fetch(url).catch(reason => { - throw new Error(`Unable to load font data at: ${url}`); - }); - } - - /** - * @ignore - * @returns {Promise} - */ - async _fetch(url) { - unreachable("Abstract method `_fetch` called."); - } -} - -class BaseSVGFactory { - constructor() { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - this.constructor === BaseSVGFactory - ) { - unreachable("Cannot initialize BaseSVGFactory."); - } - } - - create(width, height, skipDimensions = false) { - if (width <= 0 || height <= 0) { - throw new Error("Invalid SVG dimensions"); - } - const svg = this._createSVG("svg:svg"); - svg.setAttribute("version", "1.1"); - - if (!skipDimensions) { - svg.setAttribute("width", `${width}px`); - svg.setAttribute("height", `${height}px`); - } - - svg.setAttribute("preserveAspectRatio", "none"); - svg.setAttribute("viewBox", `0 0 ${width} ${height}`); - - return svg; - } - - createElement(type) { - if (typeof type !== "string") { - throw new Error("Invalid SVG element type"); - } - return this._createSVG(type); - } - - /** - * @ignore - */ - _createSVG(type) { - unreachable("Abstract method `_createSVG` called."); - } -} - -export { - BaseCanvasFactory, - BaseCMapReaderFactory, - BaseFilterFactory, - BaseStandardFontDataFactory, - BaseSVGFactory, -}; diff --git a/src/display/canvas_factory.js b/src/display/canvas_factory.js new file mode 100644 index 0000000000000..988e764859828 --- /dev/null +++ b/src/display/canvas_factory.js @@ -0,0 +1,92 @@ +/* Copyright 2015 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. + */ + +import { unreachable } from "../shared/util.js"; + +class BaseCanvasFactory { + #enableHWA = false; + + constructor({ enableHWA = false }) { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseCanvasFactory + ) { + unreachable("Cannot initialize BaseCanvasFactory."); + } + this.#enableHWA = enableHWA; + } + + create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + const canvas = this._createCanvas(width, height); + return { + canvas, + context: canvas.getContext("2d", { + willReadFrequently: !this.#enableHWA, + }), + }; + } + + reset(canvasAndContext, width, height) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + if (width <= 0 || height <= 0) { + throw new Error("Invalid canvas size"); + } + canvasAndContext.canvas.width = width; + canvasAndContext.canvas.height = height; + } + + destroy(canvasAndContext) { + if (!canvasAndContext.canvas) { + throw new Error("Canvas is not specified"); + } + // Zeroing the width and height cause Firefox to release graphics + // resources immediately, which can greatly reduce memory consumption. + canvasAndContext.canvas.width = 0; + canvasAndContext.canvas.height = 0; + canvasAndContext.canvas = null; + canvasAndContext.context = null; + } + + /** + * @ignore + */ + _createCanvas(width, height) { + unreachable("Abstract method `_createCanvas` called."); + } +} + +class DOMCanvasFactory extends BaseCanvasFactory { + constructor({ ownerDocument = globalThis.document, enableHWA = false }) { + super({ enableHWA }); + this._document = ownerDocument; + } + + /** + * @ignore + */ + _createCanvas(width, height) { + const canvas = this._document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + return canvas; + } +} + +export { BaseCanvasFactory, DOMCanvasFactory }; diff --git a/src/display/cmap_reader_factory.js b/src/display/cmap_reader_factory.js new file mode 100644 index 0000000000000..5246fbb23dfa3 --- /dev/null +++ b/src/display/cmap_reader_factory.js @@ -0,0 +1,75 @@ +/* Copyright 2015 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. + */ + +import { stringToBytes, unreachable } from "../shared/util.js"; +import { fetchData } from "./display_utils.js"; + +class BaseCMapReaderFactory { + constructor({ baseUrl = null, isCompressed = true }) { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseCMapReaderFactory + ) { + unreachable("Cannot initialize BaseCMapReaderFactory."); + } + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + async fetch({ name }) { + if (!this.baseUrl) { + throw new Error( + "Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided." + ); + } + if (!name) { + throw new Error("CMap name must be specified."); + } + const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : ""); + + return this._fetch(url) + .then(cMapData => ({ cMapData, isCompressed: this.isCompressed })) + .catch(reason => { + throw new Error( + `Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}` + ); + }); + } + + /** + * @ignore + * @returns {Promise} + */ + async _fetch(url) { + unreachable("Abstract method `_fetch` called."); + } +} + +class DOMCMapReaderFactory extends BaseCMapReaderFactory { + /** + * @ignore + */ + async _fetch(url) { + const data = await fetchData( + url, + /* type = */ this.isCompressed ? "arraybuffer" : "text" + ); + return data instanceof ArrayBuffer + ? new Uint8Array(data) + : stringToBytes(data); + } +} + +export { BaseCMapReaderFactory, DOMCMapReaderFactory }; diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 60b4587ebacf1..218a0f33bdd03 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -13,18 +13,10 @@ * limitations under the License. */ -import { - BaseCanvasFactory, - BaseCMapReaderFactory, - BaseFilterFactory, - BaseStandardFontDataFactory, - BaseSVGFactory, -} from "./base_factory.js"; import { BaseException, FeatureTest, shadow, - stringToBytes, Util, warn, } from "../shared/util.js"; @@ -39,479 +31,6 @@ class PixelsPerInch { static PDF_TO_CSS_UNITS = this.CSS / this.PDF; } -/** - * FilterFactory aims to create some SVG filters we can use when drawing an - * image (or whatever) on a canvas. - * Filters aren't applied with ctx.putImageData because it just overwrites the - * underlying pixels. - * With these filters, it's possible for example to apply some transfer maps on - * an image without the need to apply them on the pixel arrays: the renderer - * does the magic for us. - */ -class DOMFilterFactory extends BaseFilterFactory { - #baseUrl; - - #_cache; - - #_defs; - - #docId; - - #document; - - #_hcmCache; - - #id = 0; - - constructor({ docId, ownerDocument = globalThis.document }) { - super(); - this.#docId = docId; - this.#document = ownerDocument; - } - - get #cache() { - return (this.#_cache ||= new Map()); - } - - get #hcmCache() { - return (this.#_hcmCache ||= new Map()); - } - - get #defs() { - if (!this.#_defs) { - const div = this.#document.createElement("div"); - const { style } = div; - style.visibility = "hidden"; - style.contain = "strict"; - style.width = style.height = 0; - style.position = "absolute"; - style.top = style.left = 0; - style.zIndex = -1; - - const svg = this.#document.createElementNS(SVG_NS, "svg"); - svg.setAttribute("width", 0); - svg.setAttribute("height", 0); - this.#_defs = this.#document.createElementNS(SVG_NS, "defs"); - div.append(svg); - svg.append(this.#_defs); - this.#document.body.append(div); - } - return this.#_defs; - } - - #createTables(maps) { - if (maps.length === 1) { - const mapR = maps[0]; - const buffer = new Array(256); - for (let i = 0; i < 256; i++) { - buffer[i] = mapR[i] / 255; - } - - const table = buffer.join(","); - return [table, table, table]; - } - - const [mapR, mapG, mapB] = maps; - const bufferR = new Array(256); - const bufferG = new Array(256); - const bufferB = new Array(256); - for (let i = 0; i < 256; i++) { - bufferR[i] = mapR[i] / 255; - bufferG[i] = mapG[i] / 255; - bufferB[i] = mapB[i] / 255; - } - return [bufferR.join(","), bufferG.join(","), bufferB.join(",")]; - } - - #createUrl(id) { - if (this.#baseUrl === undefined) { - // Unless a ``-element is present a relative URL should work. - this.#baseUrl = ""; - - const url = this.#document.URL; - if (url !== this.#document.baseURI) { - if (isDataScheme(url)) { - warn('#createUrl: ignore "data:"-URL for performance reasons.'); - } else { - this.#baseUrl = url.split("#", 1)[0]; - } - } - } - return `url(${this.#baseUrl}#${id})`; - } - - addFilter(maps) { - if (!maps) { - return "none"; - } - - // When a page is zoomed the page is re-drawn but the maps are likely - // the same. - let value = this.#cache.get(maps); - if (value) { - return value; - } - - const [tableR, tableG, tableB] = this.#createTables(maps); - const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`; - - value = this.#cache.get(key); - if (value) { - this.#cache.set(maps, value); - return value; - } - - // We create a SVG filter: feComponentTransferElement - // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement - - const id = `g_${this.#docId}_transfer_map_${this.#id++}`; - const url = this.#createUrl(id); - this.#cache.set(maps, url); - this.#cache.set(key, url); - - const filter = this.#createFilter(id); - this.#addTransferMapConversion(tableR, tableG, tableB, filter); - - return url; - } - - addHCMFilter(fgColor, bgColor) { - const key = `${fgColor}-${bgColor}`; - const filterName = "base"; - let info = this.#hcmCache.get(filterName); - if (info?.key === key) { - return info.url; - } - - if (info) { - info.filter?.remove(); - info.key = key; - info.url = "none"; - info.filter = null; - } else { - info = { - key, - url: "none", - filter: null, - }; - this.#hcmCache.set(filterName, info); - } - - if (!fgColor || !bgColor) { - return info.url; - } - - const fgRGB = this.#getRGB(fgColor); - fgColor = Util.makeHexColor(...fgRGB); - const bgRGB = this.#getRGB(bgColor); - bgColor = Util.makeHexColor(...bgRGB); - this.#defs.style.color = ""; - - if ( - (fgColor === "#000000" && bgColor === "#ffffff") || - fgColor === bgColor - ) { - return info.url; - } - - // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance - // - // Relative luminance: - // https://www.w3.org/TR/WCAG20/#relativeluminancedef - // - // We compute the rounded luminance of the default background color. - // Then for every color in the pdf, if its rounded luminance is the - // same as the background one then it's replaced by the new - // background color else by the foreground one. - const map = new Array(256); - for (let i = 0; i <= 255; i++) { - const x = i / 255; - map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; - } - const table = map.join(","); - - const id = `g_${this.#docId}_hcm_filter`; - const filter = (info.filter = this.#createFilter(id)); - this.#addTransferMapConversion(table, table, table, filter); - this.#addGrayConversion(filter); - - const getSteps = (c, n) => { - const start = fgRGB[c] / 255; - const end = bgRGB[c] / 255; - const arr = new Array(n + 1); - for (let i = 0; i <= n; i++) { - arr[i] = start + (i / n) * (end - start); - } - return arr.join(","); - }; - this.#addTransferMapConversion( - getSteps(0, 5), - getSteps(1, 5), - getSteps(2, 5), - filter - ); - - info.url = this.#createUrl(id); - return info.url; - } - - addAlphaFilter(map) { - // When a page is zoomed the page is re-drawn but the maps are likely - // the same. - let value = this.#cache.get(map); - if (value) { - return value; - } - - const [tableA] = this.#createTables([map]); - const key = `alpha_${tableA}`; - - value = this.#cache.get(key); - if (value) { - this.#cache.set(map, value); - return value; - } - - const id = `g_${this.#docId}_alpha_map_${this.#id++}`; - const url = this.#createUrl(id); - this.#cache.set(map, url); - this.#cache.set(key, url); - - const filter = this.#createFilter(id); - this.#addTransferMapAlphaConversion(tableA, filter); - - return url; - } - - addLuminosityFilter(map) { - // When a page is zoomed the page is re-drawn but the maps are likely - // the same. - let value = this.#cache.get(map || "luminosity"); - if (value) { - return value; - } - - let tableA, key; - if (map) { - [tableA] = this.#createTables([map]); - key = `luminosity_${tableA}`; - } else { - key = "luminosity"; - } - - value = this.#cache.get(key); - if (value) { - this.#cache.set(map, value); - return value; - } - - const id = `g_${this.#docId}_luminosity_map_${this.#id++}`; - const url = this.#createUrl(id); - this.#cache.set(map, url); - this.#cache.set(key, url); - - const filter = this.#createFilter(id); - this.#addLuminosityConversion(filter); - if (map) { - this.#addTransferMapAlphaConversion(tableA, filter); - } - - return url; - } - - addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) { - const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`; - let info = this.#hcmCache.get(filterName); - if (info?.key === key) { - return info.url; - } - - if (info) { - info.filter?.remove(); - info.key = key; - info.url = "none"; - info.filter = null; - } else { - info = { - key, - url: "none", - filter: null, - }; - this.#hcmCache.set(filterName, info); - } - - if (!fgColor || !bgColor) { - return info.url; - } - - const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this)); - let fgGray = Math.round( - 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2] - ); - let bgGray = Math.round( - 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2] - ); - let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map( - this.#getRGB.bind(this) - ); - if (bgGray < fgGray) { - [fgGray, bgGray, newFgRGB, newBgRGB] = [ - bgGray, - fgGray, - newBgRGB, - newFgRGB, - ]; - } - this.#defs.style.color = ""; - - // Now we can create the filters to highlight some canvas parts. - // The colors in the pdf will almost be Canvas and CanvasText, hence we - // want to filter them to finally get Highlight and HighlightText. - // Since we're in HCM the background color and the foreground color should - // be really different when converted to grayscale (if they're not then it - // means that we've a poor contrast). Once the canvas colors are converted - // to grayscale we can easily map them on their new colors. - // The grayscale step is important because if we've something like: - // fgColor = #FF.... - // bgColor = #FF.... - // then we are enable to map the red component on the new red components - // which can be different. - - const getSteps = (fg, bg, n) => { - const arr = new Array(256); - const step = (bgGray - fgGray) / n; - const newStart = fg / 255; - const newStep = (bg - fg) / (255 * n); - let prev = 0; - for (let i = 0; i <= n; i++) { - const k = Math.round(fgGray + i * step); - const value = newStart + i * newStep; - for (let j = prev; j <= k; j++) { - arr[j] = value; - } - prev = k + 1; - } - for (let i = prev; i < 256; i++) { - arr[i] = arr[prev - 1]; - } - return arr.join(","); - }; - - const id = `g_${this.#docId}_hcm_${filterName}_filter`; - const filter = (info.filter = this.#createFilter(id)); - - this.#addGrayConversion(filter); - this.#addTransferMapConversion( - getSteps(newFgRGB[0], newBgRGB[0], 5), - getSteps(newFgRGB[1], newBgRGB[1], 5), - getSteps(newFgRGB[2], newBgRGB[2], 5), - filter - ); - - info.url = this.#createUrl(id); - return info.url; - } - - destroy(keepHCM = false) { - if (keepHCM && this.#hcmCache.size !== 0) { - return; - } - if (this.#_defs) { - this.#_defs.parentNode.parentNode.remove(); - this.#_defs = null; - } - if (this.#_cache) { - this.#_cache.clear(); - this.#_cache = null; - } - this.#id = 0; - } - - #addLuminosityConversion(filter) { - const feColorMatrix = this.#document.createElementNS( - SVG_NS, - "feColorMatrix" - ); - feColorMatrix.setAttribute("type", "matrix"); - feColorMatrix.setAttribute( - "values", - "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0" - ); - filter.append(feColorMatrix); - } - - #addGrayConversion(filter) { - const feColorMatrix = this.#document.createElementNS( - SVG_NS, - "feColorMatrix" - ); - feColorMatrix.setAttribute("type", "matrix"); - feColorMatrix.setAttribute( - "values", - "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" - ); - filter.append(feColorMatrix); - } - - #createFilter(id) { - const filter = this.#document.createElementNS(SVG_NS, "filter"); - filter.setAttribute("color-interpolation-filters", "sRGB"); - filter.setAttribute("id", id); - this.#defs.append(filter); - - return filter; - } - - #appendFeFunc(feComponentTransfer, func, table) { - const feFunc = this.#document.createElementNS(SVG_NS, func); - feFunc.setAttribute("type", "discrete"); - feFunc.setAttribute("tableValues", table); - feComponentTransfer.append(feFunc); - } - - #addTransferMapConversion(rTable, gTable, bTable, filter) { - const feComponentTransfer = this.#document.createElementNS( - SVG_NS, - "feComponentTransfer" - ); - filter.append(feComponentTransfer); - this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable); - this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable); - this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable); - } - - #addTransferMapAlphaConversion(aTable, filter) { - const feComponentTransfer = this.#document.createElementNS( - SVG_NS, - "feComponentTransfer" - ); - filter.append(feComponentTransfer); - this.#appendFeFunc(feComponentTransfer, "feFuncA", aTable); - } - - #getRGB(color) { - this.#defs.style.color = color; - return getRGB(getComputedStyle(this.#defs).getPropertyValue("color")); - } -} - -class DOMCanvasFactory extends BaseCanvasFactory { - constructor({ ownerDocument = globalThis.document, enableHWA = false }) { - super({ enableHWA }); - this._document = ownerDocument; - } - - /** - * @ignore - */ - _createCanvas(width, height) { - const canvas = this._document.createElement("canvas"); - canvas.width = width; - canvas.height = height; - return canvas; - } -} - async function fetchData(url, type = "text") { if ( (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || @@ -560,40 +79,6 @@ async function fetchData(url, type = "text") { }); } -class DOMCMapReaderFactory extends BaseCMapReaderFactory { - /** - * @ignore - */ - async _fetch(url) { - const data = await fetchData( - url, - /* type = */ this.isCompressed ? "arraybuffer" : "text" - ); - return data instanceof ArrayBuffer - ? new Uint8Array(data) - : stringToBytes(data); - } -} - -class DOMStandardFontDataFactory extends BaseStandardFontDataFactory { - /** - * @ignore - */ - async _fetch(url) { - const data = await fetchData(url, /* type = */ "arraybuffer"); - return new Uint8Array(data); - } -} - -class DOMSVGFactory extends BaseSVGFactory { - /** - * @ignore - */ - _createSVG(type) { - return document.createElementNS(SVG_NS, type); - } -} - /** * @typedef {Object} PageViewportParameters * @property {Array} viewBox - The xMin, yMin, xMax and @@ -1152,11 +637,6 @@ class OutputScale { export { deprecated, - DOMCanvasFactory, - DOMCMapReaderFactory, - DOMFilterFactory, - DOMStandardFontDataFactory, - DOMSVGFactory, fetchData, getColorValues, getCurrentTransform, @@ -1176,4 +656,5 @@ export { RenderingCancelledException, setLayerDimensions, StatTimer, + SVG_NS, }; diff --git a/src/display/draw_layer.js b/src/display/draw_layer.js index 34e4c02053d41..4e649f93e9085 100644 --- a/src/display/draw_layer.js +++ b/src/display/draw_layer.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { DOMSVGFactory } from "./display_utils.js"; +import { DOMSVGFactory } from "./svg_factory.js"; import { shadow } from "../shared/util.js"; /** diff --git a/src/display/filter_factory.js b/src/display/filter_factory.js new file mode 100644 index 0000000000000..84260464ef61a --- /dev/null +++ b/src/display/filter_factory.js @@ -0,0 +1,508 @@ +/* Copyright 2015 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. + */ + +import { getRGB, isDataScheme, SVG_NS } from "./display_utils.js"; +import { unreachable, Util, warn } from "../shared/util.js"; + +class BaseFilterFactory { + constructor() { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseFilterFactory + ) { + unreachable("Cannot initialize BaseFilterFactory."); + } + } + + addFilter(maps) { + return "none"; + } + + addHCMFilter(fgColor, bgColor) { + return "none"; + } + + addAlphaFilter(map) { + return "none"; + } + + addLuminosityFilter(map) { + return "none"; + } + + addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) { + return "none"; + } + + destroy(keepHCM = false) {} +} + +/** + * FilterFactory aims to create some SVG filters we can use when drawing an + * image (or whatever) on a canvas. + * Filters aren't applied with ctx.putImageData because it just overwrites the + * underlying pixels. + * With these filters, it's possible for example to apply some transfer maps on + * an image without the need to apply them on the pixel arrays: the renderer + * does the magic for us. + */ +class DOMFilterFactory extends BaseFilterFactory { + #baseUrl; + + #_cache; + + #_defs; + + #docId; + + #document; + + #_hcmCache; + + #id = 0; + + constructor({ docId, ownerDocument = globalThis.document }) { + super(); + this.#docId = docId; + this.#document = ownerDocument; + } + + get #cache() { + return (this.#_cache ||= new Map()); + } + + get #hcmCache() { + return (this.#_hcmCache ||= new Map()); + } + + get #defs() { + if (!this.#_defs) { + const div = this.#document.createElement("div"); + const { style } = div; + style.visibility = "hidden"; + style.contain = "strict"; + style.width = style.height = 0; + style.position = "absolute"; + style.top = style.left = 0; + style.zIndex = -1; + + const svg = this.#document.createElementNS(SVG_NS, "svg"); + svg.setAttribute("width", 0); + svg.setAttribute("height", 0); + this.#_defs = this.#document.createElementNS(SVG_NS, "defs"); + div.append(svg); + svg.append(this.#_defs); + this.#document.body.append(div); + } + return this.#_defs; + } + + #createTables(maps) { + if (maps.length === 1) { + const mapR = maps[0]; + const buffer = new Array(256); + for (let i = 0; i < 256; i++) { + buffer[i] = mapR[i] / 255; + } + + const table = buffer.join(","); + return [table, table, table]; + } + + const [mapR, mapG, mapB] = maps; + const bufferR = new Array(256); + const bufferG = new Array(256); + const bufferB = new Array(256); + for (let i = 0; i < 256; i++) { + bufferR[i] = mapR[i] / 255; + bufferG[i] = mapG[i] / 255; + bufferB[i] = mapB[i] / 255; + } + return [bufferR.join(","), bufferG.join(","), bufferB.join(",")]; + } + + #createUrl(id) { + if (this.#baseUrl === undefined) { + // Unless a ``-element is present a relative URL should work. + this.#baseUrl = ""; + + const url = this.#document.URL; + if (url !== this.#document.baseURI) { + if (isDataScheme(url)) { + warn('#createUrl: ignore "data:"-URL for performance reasons.'); + } else { + this.#baseUrl = url.split("#", 1)[0]; + } + } + } + return `url(${this.#baseUrl}#${id})`; + } + + addFilter(maps) { + if (!maps) { + return "none"; + } + + // When a page is zoomed the page is re-drawn but the maps are likely + // the same. + let value = this.#cache.get(maps); + if (value) { + return value; + } + + const [tableR, tableG, tableB] = this.#createTables(maps); + const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`; + + value = this.#cache.get(key); + if (value) { + this.#cache.set(maps, value); + return value; + } + + // We create a SVG filter: feComponentTransferElement + // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement + + const id = `g_${this.#docId}_transfer_map_${this.#id++}`; + const url = this.#createUrl(id); + this.#cache.set(maps, url); + this.#cache.set(key, url); + + const filter = this.#createFilter(id); + this.#addTransferMapConversion(tableR, tableG, tableB, filter); + + return url; + } + + addHCMFilter(fgColor, bgColor) { + const key = `${fgColor}-${bgColor}`; + const filterName = "base"; + let info = this.#hcmCache.get(filterName); + if (info?.key === key) { + return info.url; + } + + if (info) { + info.filter?.remove(); + info.key = key; + info.url = "none"; + info.filter = null; + } else { + info = { + key, + url: "none", + filter: null, + }; + this.#hcmCache.set(filterName, info); + } + + if (!fgColor || !bgColor) { + return info.url; + } + + const fgRGB = this.#getRGB(fgColor); + fgColor = Util.makeHexColor(...fgRGB); + const bgRGB = this.#getRGB(bgColor); + bgColor = Util.makeHexColor(...bgRGB); + this.#defs.style.color = ""; + + if ( + (fgColor === "#000000" && bgColor === "#ffffff") || + fgColor === bgColor + ) { + return info.url; + } + + // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance + // + // Relative luminance: + // https://www.w3.org/TR/WCAG20/#relativeluminancedef + // + // We compute the rounded luminance of the default background color. + // Then for every color in the pdf, if its rounded luminance is the + // same as the background one then it's replaced by the new + // background color else by the foreground one. + const map = new Array(256); + for (let i = 0; i <= 255; i++) { + const x = i / 255; + map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4; + } + const table = map.join(","); + + const id = `g_${this.#docId}_hcm_filter`; + const filter = (info.filter = this.#createFilter(id)); + this.#addTransferMapConversion(table, table, table, filter); + this.#addGrayConversion(filter); + + const getSteps = (c, n) => { + const start = fgRGB[c] / 255; + const end = bgRGB[c] / 255; + const arr = new Array(n + 1); + for (let i = 0; i <= n; i++) { + arr[i] = start + (i / n) * (end - start); + } + return arr.join(","); + }; + this.#addTransferMapConversion( + getSteps(0, 5), + getSteps(1, 5), + getSteps(2, 5), + filter + ); + + info.url = this.#createUrl(id); + return info.url; + } + + addAlphaFilter(map) { + // When a page is zoomed the page is re-drawn but the maps are likely + // the same. + let value = this.#cache.get(map); + if (value) { + return value; + } + + const [tableA] = this.#createTables([map]); + const key = `alpha_${tableA}`; + + value = this.#cache.get(key); + if (value) { + this.#cache.set(map, value); + return value; + } + + const id = `g_${this.#docId}_alpha_map_${this.#id++}`; + const url = this.#createUrl(id); + this.#cache.set(map, url); + this.#cache.set(key, url); + + const filter = this.#createFilter(id); + this.#addTransferMapAlphaConversion(tableA, filter); + + return url; + } + + addLuminosityFilter(map) { + // When a page is zoomed the page is re-drawn but the maps are likely + // the same. + let value = this.#cache.get(map || "luminosity"); + if (value) { + return value; + } + + let tableA, key; + if (map) { + [tableA] = this.#createTables([map]); + key = `luminosity_${tableA}`; + } else { + key = "luminosity"; + } + + value = this.#cache.get(key); + if (value) { + this.#cache.set(map, value); + return value; + } + + const id = `g_${this.#docId}_luminosity_map_${this.#id++}`; + const url = this.#createUrl(id); + this.#cache.set(map, url); + this.#cache.set(key, url); + + const filter = this.#createFilter(id); + this.#addLuminosityConversion(filter); + if (map) { + this.#addTransferMapAlphaConversion(tableA, filter); + } + + return url; + } + + addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) { + const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`; + let info = this.#hcmCache.get(filterName); + if (info?.key === key) { + return info.url; + } + + if (info) { + info.filter?.remove(); + info.key = key; + info.url = "none"; + info.filter = null; + } else { + info = { + key, + url: "none", + filter: null, + }; + this.#hcmCache.set(filterName, info); + } + + if (!fgColor || !bgColor) { + return info.url; + } + + const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this)); + let fgGray = Math.round( + 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2] + ); + let bgGray = Math.round( + 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2] + ); + let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map( + this.#getRGB.bind(this) + ); + if (bgGray < fgGray) { + [fgGray, bgGray, newFgRGB, newBgRGB] = [ + bgGray, + fgGray, + newBgRGB, + newFgRGB, + ]; + } + this.#defs.style.color = ""; + + // Now we can create the filters to highlight some canvas parts. + // The colors in the pdf will almost be Canvas and CanvasText, hence we + // want to filter them to finally get Highlight and HighlightText. + // Since we're in HCM the background color and the foreground color should + // be really different when converted to grayscale (if they're not then it + // means that we've a poor contrast). Once the canvas colors are converted + // to grayscale we can easily map them on their new colors. + // The grayscale step is important because if we've something like: + // fgColor = #FF.... + // bgColor = #FF.... + // then we are enable to map the red component on the new red components + // which can be different. + + const getSteps = (fg, bg, n) => { + const arr = new Array(256); + const step = (bgGray - fgGray) / n; + const newStart = fg / 255; + const newStep = (bg - fg) / (255 * n); + let prev = 0; + for (let i = 0; i <= n; i++) { + const k = Math.round(fgGray + i * step); + const value = newStart + i * newStep; + for (let j = prev; j <= k; j++) { + arr[j] = value; + } + prev = k + 1; + } + for (let i = prev; i < 256; i++) { + arr[i] = arr[prev - 1]; + } + return arr.join(","); + }; + + const id = `g_${this.#docId}_hcm_${filterName}_filter`; + const filter = (info.filter = this.#createFilter(id)); + + this.#addGrayConversion(filter); + this.#addTransferMapConversion( + getSteps(newFgRGB[0], newBgRGB[0], 5), + getSteps(newFgRGB[1], newBgRGB[1], 5), + getSteps(newFgRGB[2], newBgRGB[2], 5), + filter + ); + + info.url = this.#createUrl(id); + return info.url; + } + + destroy(keepHCM = false) { + if (keepHCM && this.#hcmCache.size !== 0) { + return; + } + if (this.#_defs) { + this.#_defs.parentNode.parentNode.remove(); + this.#_defs = null; + } + if (this.#_cache) { + this.#_cache.clear(); + this.#_cache = null; + } + this.#id = 0; + } + + #addLuminosityConversion(filter) { + const feColorMatrix = this.#document.createElementNS( + SVG_NS, + "feColorMatrix" + ); + feColorMatrix.setAttribute("type", "matrix"); + feColorMatrix.setAttribute( + "values", + "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0" + ); + filter.append(feColorMatrix); + } + + #addGrayConversion(filter) { + const feColorMatrix = this.#document.createElementNS( + SVG_NS, + "feColorMatrix" + ); + feColorMatrix.setAttribute("type", "matrix"); + feColorMatrix.setAttribute( + "values", + "0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0" + ); + filter.append(feColorMatrix); + } + + #createFilter(id) { + const filter = this.#document.createElementNS(SVG_NS, "filter"); + filter.setAttribute("color-interpolation-filters", "sRGB"); + filter.setAttribute("id", id); + this.#defs.append(filter); + + return filter; + } + + #appendFeFunc(feComponentTransfer, func, table) { + const feFunc = this.#document.createElementNS(SVG_NS, func); + feFunc.setAttribute("type", "discrete"); + feFunc.setAttribute("tableValues", table); + feComponentTransfer.append(feFunc); + } + + #addTransferMapConversion(rTable, gTable, bTable, filter) { + const feComponentTransfer = this.#document.createElementNS( + SVG_NS, + "feComponentTransfer" + ); + filter.append(feComponentTransfer); + this.#appendFeFunc(feComponentTransfer, "feFuncR", rTable); + this.#appendFeFunc(feComponentTransfer, "feFuncG", gTable); + this.#appendFeFunc(feComponentTransfer, "feFuncB", bTable); + } + + #addTransferMapAlphaConversion(aTable, filter) { + const feComponentTransfer = this.#document.createElementNS( + SVG_NS, + "feComponentTransfer" + ); + filter.append(feComponentTransfer); + this.#appendFeFunc(feComponentTransfer, "feFuncA", aTable); + } + + #getRGB(color) { + this.#defs.style.color = color; + return getRGB(getComputedStyle(this.#defs).getPropertyValue("color")); + } +} + +export { BaseFilterFactory, DOMFilterFactory }; diff --git a/src/display/node_utils.js b/src/display/node_utils.js index c0b1e6e2ce529..037bea2419649 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -13,13 +13,11 @@ * limitations under the License. */ -import { - BaseCanvasFactory, - BaseCMapReaderFactory, - BaseFilterFactory, - BaseStandardFontDataFactory, -} from "./base_factory.js"; import { isNodeJS, warn } from "../shared/util.js"; +import { BaseCanvasFactory } from "./canvas_factory.js"; +import { BaseCMapReaderFactory } from "./cmap_reader_factory.js"; +import { BaseFilterFactory } from "./filter_factory.js"; +import { BaseStandardFontDataFactory } from "./standard_fontdata_factory.js"; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error( diff --git a/src/display/standard_fontdata_factory.js b/src/display/standard_fontdata_factory.js new file mode 100644 index 0000000000000..bfd8af3c0cf68 --- /dev/null +++ b/src/display/standard_fontdata_factory.js @@ -0,0 +1,65 @@ +/* Copyright 2015 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. + */ + +import { fetchData } from "./display_utils.js"; +import { unreachable } from "../shared/util.js"; + +class BaseStandardFontDataFactory { + constructor({ baseUrl = null }) { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseStandardFontDataFactory + ) { + unreachable("Cannot initialize BaseStandardFontDataFactory."); + } + this.baseUrl = baseUrl; + } + + async fetch({ filename }) { + if (!this.baseUrl) { + throw new Error( + "Ensure that the `standardFontDataUrl` API parameter is provided." + ); + } + if (!filename) { + throw new Error("Font filename must be specified."); + } + const url = `${this.baseUrl}${filename}`; + + return this._fetch(url).catch(reason => { + throw new Error(`Unable to load font data at: ${url}`); + }); + } + + /** + * @ignore + * @returns {Promise} + */ + async _fetch(url) { + unreachable("Abstract method `_fetch` called."); + } +} + +class DOMStandardFontDataFactory extends BaseStandardFontDataFactory { + /** + * @ignore + */ + async _fetch(url) { + const data = await fetchData(url, /* type = */ "arraybuffer"); + return new Uint8Array(data); + } +} + +export { BaseStandardFontDataFactory, DOMStandardFontDataFactory }; diff --git a/src/display/stubs.js b/src/display/stubs.js index 0b3b9a0bbb788..bea46b67edfe1 100644 --- a/src/display/stubs.js +++ b/src/display/stubs.js @@ -13,6 +13,8 @@ * limitations under the License. */ +const DOMCMapReaderFactory = null; +const DOMStandardFontDataFactory = null; const NodeCanvasFactory = null; const NodeCMapReaderFactory = null; const NodeFilterFactory = null; @@ -23,6 +25,8 @@ const PDFNetworkStream = null; const PDFNodeStream = null; export { + DOMCMapReaderFactory, + DOMStandardFontDataFactory, NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, diff --git a/src/display/svg_factory.js b/src/display/svg_factory.js new file mode 100644 index 0000000000000..f9591a818499f --- /dev/null +++ b/src/display/svg_factory.js @@ -0,0 +1,71 @@ +/* Copyright 2015 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. + */ + +import { SVG_NS } from "./display_utils.js"; +import { unreachable } from "../shared/util.js"; + +class BaseSVGFactory { + constructor() { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseSVGFactory + ) { + unreachable("Cannot initialize BaseSVGFactory."); + } + } + + create(width, height, skipDimensions = false) { + if (width <= 0 || height <= 0) { + throw new Error("Invalid SVG dimensions"); + } + const svg = this._createSVG("svg:svg"); + svg.setAttribute("version", "1.1"); + + if (!skipDimensions) { + svg.setAttribute("width", `${width}px`); + svg.setAttribute("height", `${height}px`); + } + + svg.setAttribute("preserveAspectRatio", "none"); + svg.setAttribute("viewBox", `0 0 ${width} ${height}`); + + return svg; + } + + createElement(type) { + if (typeof type !== "string") { + throw new Error("Invalid SVG element type"); + } + return this._createSVG(type); + } + + /** + * @ignore + */ + _createSVG(type) { + unreachable("Abstract method `_createSVG` called."); + } +} + +class DOMSVGFactory extends BaseSVGFactory { + /** + * @ignore + */ + _createSVG(type) { + return document.createElementNS(SVG_NS, type); + } +} + +export { BaseSVGFactory, DOMSVGFactory }; diff --git a/src/pdf.js b/src/pdf.js index 1267cf9c3ff2e..2febc4227393f 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -49,7 +49,6 @@ import { version, } from "./display/api.js"; import { - DOMSVGFactory, fetchData, getFilenameFromUrl, getPdfFilenameFromUrl, @@ -67,6 +66,7 @@ import { AnnotationEditorLayer } from "./display/editor/annotation_editor_layer. import { AnnotationEditorUIManager } from "./display/editor/tools.js"; import { AnnotationLayer } from "./display/annotation_layer.js"; import { ColorPicker } from "./display/editor/color_picker.js"; +import { DOMSVGFactory } from "./display/svg_factory.js"; import { DrawLayer } from "./display/draw_layer.js"; import { GlobalWorkerOptions } from "./display/worker_options.js"; import { HighlightOutliner } from "./display/editor/drawers/highlight.js"; diff --git a/test/unit/canvas_factory_spec.js b/test/unit/canvas_factory_spec.js new file mode 100644 index 0000000000000..23a1dba610680 --- /dev/null +++ b/test/unit/canvas_factory_spec.js @@ -0,0 +1,111 @@ +/* Copyright 2017 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. + */ + +import { DOMCanvasFactory } from "../../src/display/canvas_factory.js"; +import { isNodeJS } from "../../src/shared/util.js"; + +describe("canvas_factory", function () { + describe("DOMCanvasFactory", function () { + let canvasFactory; + + beforeAll(function () { + canvasFactory = new DOMCanvasFactory({}); + }); + + afterAll(function () { + canvasFactory = null; + }); + + it("`create` should throw an error if the dimensions are invalid", function () { + // Invalid width. + expect(function () { + return canvasFactory.create(-1, 1); + }).toThrow(new Error("Invalid canvas size")); + + // Invalid height. + expect(function () { + return canvasFactory.create(1, -1); + }).toThrow(new Error("Invalid canvas size")); + }); + + it("`create` should return a canvas if the dimensions are valid", function () { + if (isNodeJS) { + pending("Document is not supported in Node.js."); + } + + const { canvas, context } = canvasFactory.create(20, 40); + expect(canvas instanceof HTMLCanvasElement).toBe(true); + expect(context instanceof CanvasRenderingContext2D).toBe(true); + expect(canvas.width).toBe(20); + expect(canvas.height).toBe(40); + }); + + it("`reset` should throw an error if no canvas is provided", function () { + const canvasAndContext = { canvas: null, context: null }; + + expect(function () { + return canvasFactory.reset(canvasAndContext, 20, 40); + }).toThrow(new Error("Canvas is not specified")); + }); + + it("`reset` should throw an error if the dimensions are invalid", function () { + const canvasAndContext = { canvas: "foo", context: "bar" }; + + // Invalid width. + expect(function () { + return canvasFactory.reset(canvasAndContext, -1, 1); + }).toThrow(new Error("Invalid canvas size")); + + // Invalid height. + expect(function () { + return canvasFactory.reset(canvasAndContext, 1, -1); + }).toThrow(new Error("Invalid canvas size")); + }); + + it("`reset` should alter the canvas/context if the dimensions are valid", function () { + if (isNodeJS) { + pending("Document is not supported in Node.js."); + } + + const canvasAndContext = canvasFactory.create(20, 40); + canvasFactory.reset(canvasAndContext, 60, 80); + + const { canvas, context } = canvasAndContext; + expect(canvas instanceof HTMLCanvasElement).toBe(true); + expect(context instanceof CanvasRenderingContext2D).toBe(true); + expect(canvas.width).toBe(60); + expect(canvas.height).toBe(80); + }); + + it("`destroy` should throw an error if no canvas is provided", function () { + expect(function () { + return canvasFactory.destroy({}); + }).toThrow(new Error("Canvas is not specified")); + }); + + it("`destroy` should clear the canvas/context", function () { + if (isNodeJS) { + pending("Document is not supported in Node.js."); + } + + const canvasAndContext = canvasFactory.create(20, 40); + canvasFactory.destroy(canvasAndContext); + + const { canvas, context } = canvasAndContext; + expect(canvas).toBe(null); + expect(context).toBe(null); + }); + }); +}); diff --git a/test/unit/clitests.json b/test/unit/clitests.json index 0516f6def31a6..492687985c2c3 100644 --- a/test/unit/clitests.json +++ b/test/unit/clitests.json @@ -9,6 +9,7 @@ "api_spec.js", "app_options_spec.js", "bidi_spec.js", + "canvas_factory_spec.js", "cff_parser_spec.js", "cmap_spec.js", "colorspace_spec.js", @@ -42,6 +43,7 @@ "primitives_spec.js", "stream_spec.js", "struct_tree_spec.js", + "svg_factory_spec.js", "text_layer_spec.js", "type1_parser_spec.js", "ui_utils_spec.js", diff --git a/test/unit/display_utils_spec.js b/test/unit/display_utils_spec.js index e152d5d9c5677..8b3f2bb93e47e 100644 --- a/test/unit/display_utils_spec.js +++ b/test/unit/display_utils_spec.js @@ -15,8 +15,6 @@ import { bytesToString, isNodeJS } from "../../src/shared/util.js"; import { - DOMCanvasFactory, - DOMSVGFactory, getFilenameFromUrl, getPdfFilenameFromUrl, isValidFetchUrl, @@ -24,151 +22,6 @@ import { } from "../../src/display/display_utils.js"; describe("display_utils", function () { - describe("DOMCanvasFactory", function () { - let canvasFactory; - - beforeAll(function () { - canvasFactory = new DOMCanvasFactory({}); - }); - - afterAll(function () { - canvasFactory = null; - }); - - it("`create` should throw an error if the dimensions are invalid", function () { - // Invalid width. - expect(function () { - return canvasFactory.create(-1, 1); - }).toThrow(new Error("Invalid canvas size")); - - // Invalid height. - expect(function () { - return canvasFactory.create(1, -1); - }).toThrow(new Error("Invalid canvas size")); - }); - - it("`create` should return a canvas if the dimensions are valid", function () { - if (isNodeJS) { - pending("Document is not supported in Node.js."); - } - - const { canvas, context } = canvasFactory.create(20, 40); - expect(canvas instanceof HTMLCanvasElement).toBe(true); - expect(context instanceof CanvasRenderingContext2D).toBe(true); - expect(canvas.width).toBe(20); - expect(canvas.height).toBe(40); - }); - - it("`reset` should throw an error if no canvas is provided", function () { - const canvasAndContext = { canvas: null, context: null }; - - expect(function () { - return canvasFactory.reset(canvasAndContext, 20, 40); - }).toThrow(new Error("Canvas is not specified")); - }); - - it("`reset` should throw an error if the dimensions are invalid", function () { - const canvasAndContext = { canvas: "foo", context: "bar" }; - - // Invalid width. - expect(function () { - return canvasFactory.reset(canvasAndContext, -1, 1); - }).toThrow(new Error("Invalid canvas size")); - - // Invalid height. - expect(function () { - return canvasFactory.reset(canvasAndContext, 1, -1); - }).toThrow(new Error("Invalid canvas size")); - }); - - it("`reset` should alter the canvas/context if the dimensions are valid", function () { - if (isNodeJS) { - pending("Document is not supported in Node.js."); - } - - const canvasAndContext = canvasFactory.create(20, 40); - canvasFactory.reset(canvasAndContext, 60, 80); - - const { canvas, context } = canvasAndContext; - expect(canvas instanceof HTMLCanvasElement).toBe(true); - expect(context instanceof CanvasRenderingContext2D).toBe(true); - expect(canvas.width).toBe(60); - expect(canvas.height).toBe(80); - }); - - it("`destroy` should throw an error if no canvas is provided", function () { - expect(function () { - return canvasFactory.destroy({}); - }).toThrow(new Error("Canvas is not specified")); - }); - - it("`destroy` should clear the canvas/context", function () { - if (isNodeJS) { - pending("Document is not supported in Node.js."); - } - - const canvasAndContext = canvasFactory.create(20, 40); - canvasFactory.destroy(canvasAndContext); - - const { canvas, context } = canvasAndContext; - expect(canvas).toBe(null); - expect(context).toBe(null); - }); - }); - - describe("DOMSVGFactory", function () { - let svgFactory; - - beforeAll(function () { - svgFactory = new DOMSVGFactory(); - }); - - afterAll(function () { - svgFactory = null; - }); - - it("`create` should throw an error if the dimensions are invalid", function () { - // Invalid width. - expect(function () { - return svgFactory.create(-1, 0); - }).toThrow(new Error("Invalid SVG dimensions")); - - // Invalid height. - expect(function () { - return svgFactory.create(0, -1); - }).toThrow(new Error("Invalid SVG dimensions")); - }); - - it("`create` should return an SVG element if the dimensions are valid", function () { - if (isNodeJS) { - pending("Document is not supported in Node.js."); - } - - const svg = svgFactory.create(20, 40); - expect(svg instanceof SVGSVGElement).toBe(true); - expect(svg.getAttribute("version")).toBe("1.1"); - expect(svg.getAttribute("width")).toBe("20px"); - expect(svg.getAttribute("height")).toBe("40px"); - expect(svg.getAttribute("preserveAspectRatio")).toBe("none"); - expect(svg.getAttribute("viewBox")).toBe("0 0 20 40"); - }); - - it("`createElement` should throw an error if the type is not a string", function () { - expect(function () { - return svgFactory.createElement(true); - }).toThrow(new Error("Invalid SVG element type")); - }); - - it("`createElement` should return an SVG element if the type is valid", function () { - if (isNodeJS) { - pending("Document is not supported in Node.js."); - } - - const svg = svgFactory.createElement("svg:rect"); - expect(svg instanceof SVGRectElement).toBe(true); - }); - }); - describe("getFilenameFromUrl", function () { it("should get the filename from an absolute URL", function () { const url = "https://server.org/filename.pdf"; diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index da98ceeb31377..4c0967dc4bfcc 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -52,6 +52,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/api_spec.js", "pdfjs-test/unit/app_options_spec.js", "pdfjs-test/unit/bidi_spec.js", + "pdfjs-test/unit/canvas_factory_spec.js", "pdfjs-test/unit/cff_parser_spec.js", "pdfjs-test/unit/cmap_spec.js", "pdfjs-test/unit/colorspace_spec.js", @@ -86,6 +87,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/scripting_spec.js", "pdfjs-test/unit/stream_spec.js", "pdfjs-test/unit/struct_tree_spec.js", + "pdfjs-test/unit/svg_factory_spec.js", "pdfjs-test/unit/text_layer_spec.js", "pdfjs-test/unit/type1_parser_spec.js", "pdfjs-test/unit/ui_utils_spec.js", diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 269a26ff7c60e..f64b97a36bead 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -41,7 +41,6 @@ import { version, } from "../../src/display/api.js"; import { - DOMSVGFactory, fetchData, getFilenameFromUrl, getPdfFilenameFromUrl, @@ -59,6 +58,7 @@ import { AnnotationEditorLayer } from "../../src/display/editor/annotation_edito import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js"; import { AnnotationLayer } from "../../src/display/annotation_layer.js"; import { ColorPicker } from "../../src/display/editor/color_picker.js"; +import { DOMSVGFactory } from "../../src/display/svg_factory.js"; import { DrawLayer } from "../../src/display/draw_layer.js"; import { GlobalWorkerOptions } from "../../src/display/worker_options.js"; import { TextLayer } from "../../src/display/text_layer.js"; diff --git a/test/unit/svg_factory_spec.js b/test/unit/svg_factory_spec.js new file mode 100644 index 0000000000000..77c5f19dbe379 --- /dev/null +++ b/test/unit/svg_factory_spec.js @@ -0,0 +1,72 @@ +/* Copyright 2017 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. + */ + +import { DOMSVGFactory } from "../../src/display/svg_factory.js"; +import { isNodeJS } from "../../src/shared/util.js"; + +describe("svg_factory", function () { + describe("DOMSVGFactory", function () { + let svgFactory; + + beforeAll(function () { + svgFactory = new DOMSVGFactory(); + }); + + afterAll(function () { + svgFactory = null; + }); + + it("`create` should throw an error if the dimensions are invalid", function () { + // Invalid width. + expect(function () { + return svgFactory.create(-1, 0); + }).toThrow(new Error("Invalid SVG dimensions")); + + // Invalid height. + expect(function () { + return svgFactory.create(0, -1); + }).toThrow(new Error("Invalid SVG dimensions")); + }); + + it("`create` should return an SVG element if the dimensions are valid", function () { + if (isNodeJS) { + pending("Document is not supported in Node.js."); + } + + const svg = svgFactory.create(20, 40); + expect(svg instanceof SVGSVGElement).toBe(true); + expect(svg.getAttribute("version")).toBe("1.1"); + expect(svg.getAttribute("width")).toBe("20px"); + expect(svg.getAttribute("height")).toBe("40px"); + expect(svg.getAttribute("preserveAspectRatio")).toBe("none"); + expect(svg.getAttribute("viewBox")).toBe("0 0 20 40"); + }); + + it("`createElement` should throw an error if the type is not a string", function () { + expect(function () { + return svgFactory.createElement(true); + }).toThrow(new Error("Invalid SVG element type")); + }); + + it("`createElement` should return an SVG element if the type is valid", function () { + if (isNodeJS) { + pending("Document is not supported in Node.js."); + } + + const svg = svgFactory.createElement("svg:rect"); + expect(svg instanceof SVGRectElement).toBe(true); + }); + }); +}); diff --git a/test/unit/unit_test.html b/test/unit/unit_test.html index 2ddbd960a8be1..29c5c93e93406 100644 --- a/test/unit/unit_test.html +++ b/test/unit/unit_test.html @@ -20,6 +20,8 @@ "fluent-dom": "../../node_modules/@fluent/dom/esm/index.js", "cached-iterable": "../../node_modules/cached-iterable/src/index.mjs", + "display-cmap_reader_factory": "../../src/display/cmap_reader_factory.js", + "display-standard_fontdata_factory": "../../src/display/standard_fontdata_factory.js", "display-fetch_stream": "../../src/display/fetch_stream.js", "display-network": "../../src/display/network.js", "display-node_stream": "../../src/display/stubs.js", diff --git a/tsconfig.json b/tsconfig.json index 21d240d7d23dd..3d74d78fc978c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,10 @@ "moduleResolution": "node", "paths": { "pdfjs-lib": ["./src/pdf"], + "display-cmap_reader_factory": ["./src/display/cmap_reader_factory"], + "display-standard_fontdata_factory": [ + "./src/display/standard_fontdata_factory" + ], "display-fetch_stream": ["./src/display/fetch_stream"], "display-network": ["./src/display/network"], "display-node_stream": ["./src/display/node_stream"], diff --git a/web/viewer-geckoview.html b/web/viewer-geckoview.html index e80f528fd9016..80941bd81cd6c 100644 --- a/web/viewer-geckoview.html +++ b/web/viewer-geckoview.html @@ -59,6 +59,8 @@ "fluent-dom": "../node_modules/@fluent/dom/esm/index.js", "cached-iterable": "../node_modules/cached-iterable/src/index.mjs", + "display-cmap_reader_factory": "../src/display/cmap_reader_factory.js", + "display-standard_fontdata_factory": "../src/display/standard_fontdata_factory.js", "display-fetch_stream": "../src/display/fetch_stream.js", "display-network": "../src/display/network.js", "display-node_stream": "../src/display/stubs.js", diff --git a/web/viewer.html b/web/viewer.html index 36fec03150e9b..6971ad1b14fb0 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -62,6 +62,8 @@ "fluent-dom": "../node_modules/@fluent/dom/esm/index.js", "cached-iterable": "../node_modules/cached-iterable/src/index.mjs", + "display-cmap_reader_factory": "../src/display/cmap_reader_factory.js", + "display-standard_fontdata_factory": "../src/display/standard_fontdata_factory.js", "display-fetch_stream": "../src/display/fetch_stream.js", "display-network": "../src/display/network.js", "display-node_stream": "../src/display/stubs.js", From 3c51656adca902b43a2ed8b2723f23be0b329539 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 2 Nov 2024 19:56:10 +0100 Subject: [PATCH 018/338] Bump the stable version in `pdfjs.config` --- pdfjs.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdfjs.config b/pdfjs.config index bbb92ef22dcfe..3b14037b00b89 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { - "stableVersion": "4.7.76", + "stableVersion": "4.8.69", "baseVersion": "2a4630f89a2ff7b8e2197ff532124555639a156b", "versionPrefix": "4.8." } From ff47ef34ba87468d71fd93ca4d052452379716c9 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 2 Nov 2024 20:17:17 +0100 Subject: [PATCH 019/338] Update dependencies to the most recent versions --- gulpfile.mjs | 2 +- package-lock.json | 1249 ++++++++++++++++++++++----------------------- package.json | 16 +- 3 files changed, 622 insertions(+), 645 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index 45b621d0dd6b1..c294c4987920e 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -98,7 +98,7 @@ const AUTOPREFIXER_CONFIG = { const BABEL_TARGETS = ENV_TARGETS.join(", "); const BABEL_PRESET_ENV_OPTS = Object.freeze({ - corejs: "3.38.1", + corejs: "3.39.0", exclude: ["web.structured-clone"], shippedProposals: true, useBuiltIns: "usage", diff --git a/package-lock.json b/package-lock.json index eb62e79b964b8..29c2d568746ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,9 @@ "name": "pdf.js", "license": "Apache-2.0", "devDependencies": { - "@babel/core": "^7.25.8", - "@babel/preset-env": "^7.25.8", - "@babel/runtime": "^7.25.7", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@jazzer.js/core": "^2.1.0", @@ -17,9 +17,9 @@ "@metalsmith/markdown": "^1.10.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001669", + "caniuse-lite": "^1.0.30001677", "canvas": "^3.0.0-rc2", - "core-js": "^3.38.1", + "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", @@ -45,9 +45,9 @@ "pngjs": "^7.0.0", "postcss": "^8.4.47", "postcss-dark-theme-class": "^1.3.0", - "postcss-dir-pseudo-class": "^9.0.0", + "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", - "postcss-nesting": "^13.0.0", + "postcss-nesting": "^13.0.1", "prettier": "^3.3.3", "puppeteer": "23.3.1", "stylelint": "^16.10.0", @@ -58,7 +58,7 @@ "ttest": "^4.0.0", "typescript": "^5.6.3", "vinyl": "^3.0.0", - "webpack": "^5.95.0", + "webpack": "^5.96.1", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, @@ -102,13 +102,14 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -116,9 +117,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", - "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", + "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", "dev": true, "license": "MIT", "engines": { @@ -126,22 +127,22 @@ } }, "node_modules/@babel/core": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", - "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.8", - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.8", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -166,13 +167,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -182,41 +184,41 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", - "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", + "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -244,18 +246,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -276,13 +278,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", - "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", + "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", "regexpu-core": "^6.1.1", "semver": "^6.3.1" }, @@ -320,44 +322,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -367,22 +368,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "dev": true, "license": "MIT", "engines": { @@ -390,15 +391,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", - "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-wrap-function": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -408,15 +409,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -426,37 +427,37 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "license": "MIT", "engines": { @@ -464,9 +465,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", "engines": { @@ -474,9 +475,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "license": "MIT", "engines": { @@ -484,58 +485,42 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", - "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -545,14 +530,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", - "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -562,13 +547,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", - "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -578,13 +563,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", - "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -594,15 +579,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", - "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -612,14 +597,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", - "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -641,13 +626,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", - "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -657,13 +642,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", - "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -689,13 +674,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", - "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -705,15 +690,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", - "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -723,15 +708,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", - "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -741,13 +726,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", - "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", + "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -757,13 +742,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", - "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -773,14 +758,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", - "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -790,14 +775,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", - "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -807,17 +792,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", - "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -838,14 +823,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", - "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/template": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -855,13 +840,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", - "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -871,14 +856,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", - "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -888,13 +873,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", - "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -904,14 +889,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -921,13 +906,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", - "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -937,14 +922,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", - "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", + "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -954,13 +939,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", - "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -970,14 +955,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", - "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -987,15 +972,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", - "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1005,13 +990,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", - "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1021,13 +1006,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", - "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1037,13 +1022,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", - "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1053,13 +1038,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", - "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1069,14 +1054,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", - "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1086,15 +1071,15 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", + "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1104,16 +1089,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", - "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1123,14 +1108,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", - "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1140,14 +1125,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1157,13 +1142,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", - "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1173,13 +1158,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", - "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", + "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1189,13 +1174,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", - "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1205,15 +1190,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", - "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-transform-parameters": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1223,14 +1208,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", - "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1240,13 +1225,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", - "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1256,14 +1241,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", - "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1273,13 +1258,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", - "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1289,14 +1274,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", - "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1306,15 +1291,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", - "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1324,13 +1309,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", - "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1340,13 +1325,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", - "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1356,14 +1341,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", - "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1373,13 +1375,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", - "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1389,14 +1391,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", - "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1406,13 +1408,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", - "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1422,13 +1424,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", - "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1438,13 +1440,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", - "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1454,13 +1456,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", - "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1470,14 +1472,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", - "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1487,14 +1489,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", - "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1504,14 +1506,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", - "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1521,74 +1523,75 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", - "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.8", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.25.7", - "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.8", - "@babel/plugin-transform-async-to-generator": "^7.25.7", - "@babel/plugin-transform-block-scoped-functions": "^7.25.7", - "@babel/plugin-transform-block-scoping": "^7.25.7", - "@babel/plugin-transform-class-properties": "^7.25.7", - "@babel/plugin-transform-class-static-block": "^7.25.8", - "@babel/plugin-transform-classes": "^7.25.7", - "@babel/plugin-transform-computed-properties": "^7.25.7", - "@babel/plugin-transform-destructuring": "^7.25.7", - "@babel/plugin-transform-dotall-regex": "^7.25.7", - "@babel/plugin-transform-duplicate-keys": "^7.25.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-dynamic-import": "^7.25.8", - "@babel/plugin-transform-exponentiation-operator": "^7.25.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.8", - "@babel/plugin-transform-for-of": "^7.25.7", - "@babel/plugin-transform-function-name": "^7.25.7", - "@babel/plugin-transform-json-strings": "^7.25.8", - "@babel/plugin-transform-literals": "^7.25.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", - "@babel/plugin-transform-member-expression-literals": "^7.25.7", - "@babel/plugin-transform-modules-amd": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-modules-systemjs": "^7.25.7", - "@babel/plugin-transform-modules-umd": "^7.25.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-new-target": "^7.25.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", - "@babel/plugin-transform-numeric-separator": "^7.25.8", - "@babel/plugin-transform-object-rest-spread": "^7.25.8", - "@babel/plugin-transform-object-super": "^7.25.7", - "@babel/plugin-transform-optional-catch-binding": "^7.25.8", - "@babel/plugin-transform-optional-chaining": "^7.25.8", - "@babel/plugin-transform-parameters": "^7.25.7", - "@babel/plugin-transform-private-methods": "^7.25.7", - "@babel/plugin-transform-private-property-in-object": "^7.25.8", - "@babel/plugin-transform-property-literals": "^7.25.7", - "@babel/plugin-transform-regenerator": "^7.25.7", - "@babel/plugin-transform-reserved-words": "^7.25.7", - "@babel/plugin-transform-shorthand-properties": "^7.25.7", - "@babel/plugin-transform-spread": "^7.25.7", - "@babel/plugin-transform-sticky-regex": "^7.25.7", - "@babel/plugin-transform-template-literals": "^7.25.7", - "@babel/plugin-transform-typeof-symbol": "^7.25.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.7", - "@babel/plugin-transform-unicode-property-regex": "^7.25.7", - "@babel/plugin-transform-unicode-regex": "^7.25.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", @@ -1627,9 +1630,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dev": true, "license": "MIT", "dependencies": { @@ -1640,32 +1643,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1684,29 +1687,19 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types/node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/@csstools/css-parser-algorithms": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", @@ -1774,29 +1767,6 @@ "@csstools/css-tokenizer": "^3.0.1" } }, - "node_modules/@csstools/selector-resolve-nested": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-2.0.0.tgz", - "integrity": "sha512-oklSrRvOxNeeOW1yARd4WNCs/D09cQjunGZUgSq6vM8GpzFswN+8rBZyJA29YFZhOTQ6GFzxgLDNtVbt9wPZMA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.1.0" - } - }, "node_modules/@csstools/selector-specificity": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", @@ -2428,18 +2398,28 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/expect": { "version": "1.20.4", @@ -2833,10 +2813,11 @@ "license": "MIT" }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2844,16 +2825,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -2987,19 +2958,6 @@ "node": ">=0.10.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", @@ -3756,9 +3714,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001677", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", + "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", "dev": true, "funding": [ { @@ -3810,21 +3768,6 @@ "integrity": "sha512-twuUuJRrIrsELHz6foJtZlqrz6FC36zoHZJvvThsrM1UWPKxyoilw1Rka6Hk0AmPFKHKUoGwGfAtvNZNtNZu0g==", "dev": true }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/cheerio": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", @@ -4168,23 +4111,6 @@ "node": ">=0.10.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-convert/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", @@ -4266,9 +4192,9 @@ } }, "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7340,16 +7266,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -10380,9 +10296,9 @@ } }, "node_modules/postcss-dir-pseudo-class": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.0.tgz", - "integrity": "sha512-T59BG9lURiXmhcJMyKbyjNAK3KCyEQYEhaz9GAETHXfIy9XbGQeyz+H0zIwRJlrP4KKRPJolNYe3QjQPemMjBA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz", + "integrity": "sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==", "dev": true, "funding": [ { @@ -10396,7 +10312,7 @@ ], "license": "MIT-0", "dependencies": { - "postcss-selector-parser": "^6.1.0" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": ">=18" @@ -10405,6 +10321,20 @@ "postcss": "^8.4" } }, + "node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-discard-comments": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.3.tgz", @@ -10457,9 +10387,9 @@ } }, "node_modules/postcss-nesting": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.0.tgz", - "integrity": "sha512-TCGQOizyqvEkdeTPM+t6NYwJ3EJszYE/8t8ILxw/YoeUvz2rz7aM8XTAmBWh9/DJjfaaabL88fWrsVHSPF2zgA==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-13.0.1.tgz", + "integrity": "sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==", "dev": true, "funding": [ { @@ -10473,9 +10403,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/selector-resolve-nested": "^2.0.0", - "@csstools/selector-specificity": "^4.0.0", - "postcss-selector-parser": "^6.1.0" + "@csstools/selector-resolve-nested": "^3.0.0", + "@csstools/selector-specificity": "^5.0.0", + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": ">=18" @@ -10484,6 +10414,66 @@ "postcss": "^8.4" } }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-resolve-nested": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.0.0.tgz", + "integrity": "sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, + "node_modules/postcss-nesting/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", @@ -12341,19 +12331,6 @@ "integrity": "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw==", "dev": true }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-hyperlinks": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", @@ -13895,19 +13872,19 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.96.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", + "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", diff --git a/package.json b/package.json index c0e2ebdcef65b..e71495f40d4b8 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,9 @@ "name": "pdf.js", "type": "module", "devDependencies": { - "@babel/core": "^7.25.8", - "@babel/preset-env": "^7.25.8", - "@babel/runtime": "^7.25.7", + "@babel/core": "^7.26.0", + "@babel/preset-env": "^7.26.0", + "@babel/runtime": "^7.26.0", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@jazzer.js/core": "^2.1.0", @@ -12,9 +12,9 @@ "@metalsmith/markdown": "^1.10.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001669", + "caniuse-lite": "^1.0.30001677", "canvas": "^3.0.0-rc2", - "core-js": "^3.38.1", + "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", @@ -40,9 +40,9 @@ "pngjs": "^7.0.0", "postcss": "^8.4.47", "postcss-dark-theme-class": "^1.3.0", - "postcss-dir-pseudo-class": "^9.0.0", + "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", - "postcss-nesting": "^13.0.0", + "postcss-nesting": "^13.0.1", "prettier": "^3.3.3", "puppeteer": "23.3.1", "stylelint": "^16.10.0", @@ -53,7 +53,7 @@ "ttest": "^4.0.0", "typescript": "^5.6.3", "vinyl": "^3.0.0", - "webpack": "^5.95.0", + "webpack": "^5.96.1", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, From 3df1db5e3d236db4876d0328bbd362b782565b2e Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 2 Nov 2024 20:21:59 +0100 Subject: [PATCH 020/338] Update translations to the most recent versions --- l10n/bg/viewer.ftl | 1 + l10n/cs/viewer.ftl | 4 ++++ l10n/cy/viewer.ftl | 4 ++++ l10n/da/viewer.ftl | 2 +- l10n/dsb/viewer.ftl | 4 ++++ l10n/el/viewer.ftl | 4 ++++ l10n/en-GB/viewer.ftl | 4 ++++ l10n/es-AR/viewer.ftl | 4 ++++ l10n/es-CL/viewer.ftl | 4 ++++ l10n/fr/viewer.ftl | 4 ++++ l10n/fur/viewer.ftl | 4 ++++ l10n/fy-NL/viewer.ftl | 4 ++++ l10n/gn/viewer.ftl | 8 ++++++++ l10n/he/viewer.ftl | 4 ++++ l10n/hsb/viewer.ftl | 4 ++++ l10n/ia/viewer.ftl | 4 ++++ l10n/is/viewer.ftl | 4 ++++ l10n/it/viewer.ftl | 3 +++ l10n/ko/viewer.ftl | 4 ++++ l10n/nl/viewer.ftl | 4 ++++ l10n/pt-BR/viewer.ftl | 4 ++++ l10n/ru/viewer.ftl | 4 ++++ l10n/si/viewer.ftl | 4 ++++ l10n/sk/viewer.ftl | 4 ++++ l10n/sq/viewer.ftl | 6 ++++++ l10n/sv-SE/viewer.ftl | 4 ++++ l10n/vi/viewer.ftl | 4 ++++ l10n/zh-CN/viewer.ftl | 4 ++++ l10n/zh-TW/viewer.ftl | 4 ++++ 29 files changed, 115 insertions(+), 1 deletion(-) diff --git a/l10n/bg/viewer.ftl b/l10n/bg/viewer.ftl index c53950b11a49b..8b1124ee27cc5 100644 --- a/l10n/bg/viewer.ftl +++ b/l10n/bg/viewer.ftl @@ -412,6 +412,7 @@ pdfjs-editor-colorpicker-red = ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +pdfjs-editor-new-alt-text-not-now-button = Не сега ## Image alt-text settings diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index 0f90f86146246..a770b2d97ff0a 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -347,6 +347,10 @@ pdfjs-editor-stamp-add-image-button-label = Přidat obrázek pdfjs-editor-free-highlight-thickness-input = Tloušťka pdfjs-editor-free-highlight-thickness-title = .title = Změna tloušťky při zvýrazňování jiných položek než textu +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Textový editor + .default-content = Začněte psát... pdfjs-free-text = .aria-label = Textový editor pdfjs-free-text-default-content = Začněte psát… diff --git a/l10n/cy/viewer.ftl b/l10n/cy/viewer.ftl index 1c5415c8b3c05..c4011c662ad91 100644 --- a/l10n/cy/viewer.ftl +++ b/l10n/cy/viewer.ftl @@ -351,6 +351,10 @@ pdfjs-editor-stamp-add-image-button-label = Ychwanegu delwedd pdfjs-editor-free-highlight-thickness-input = Trwch pdfjs-editor-free-highlight-thickness-title = .title = Newid trwch wrth amlygu eitemau heblaw testun +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Golygydd Testun + .default-content = Cychwyn teipio… pdfjs-free-text = .aria-label = Golygydd Testun pdfjs-free-text-default-content = Cychwyn teipio… diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index a3ba621a94721..fe81c1851c3aa 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -184,7 +184,7 @@ pdfjs-toggle-sidebar-notification-button = .title = Slå sidepanel til eller fra (dokumentet indeholder disposition/vedhæftede filer/lag) pdfjs-toggle-sidebar-button-label = Slå sidepanel til eller fra pdfjs-document-outline-button = - .title = Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer) + .title = Vis dokumentets disposition (dobbeltklik for at udvide/sammenfolde alle elementer) pdfjs-document-outline-button-label = Dokument-disposition pdfjs-attachments-button = .title = Vis vedhæftede filer diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index eeb41da9da9f0..84121bd111cf6 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -347,6 +347,10 @@ pdfjs-editor-stamp-add-image-button-label = Wobraz pśidaś pdfjs-editor-free-highlight-thickness-input = Tłustosć pdfjs-editor-free-highlight-thickness-title = .title = Tłustosć změniś, gaž se zapiski wuzwiguju, kótarež tekst njejsu +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstowy editor + .default-content = Zachopśo pisaś … pdfjs-free-text = .aria-label = Tekstowy editor pdfjs-free-text-default-content = Zachopśo pisaś… diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index a95b6e71cd42d..b82c3a71efa72 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Προσθήκη εικόνας pdfjs-editor-free-highlight-thickness-input = Πάχος pdfjs-editor-free-highlight-thickness-title = .title = Αλλαγή πάχους κατά την επισήμανση στοιχείων εκτός κειμένου +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Επεξεργασία κειμένου + .default-content = Ξεκινήστε την πληκτρολόγηση… pdfjs-free-text = .aria-label = Επεξεργασία κειμένου pdfjs-free-text-default-content = Ξεκινήστε να πληκτρολογείτε… diff --git a/l10n/en-GB/viewer.ftl b/l10n/en-GB/viewer.ftl index 52e4a12bda36f..a1bd185f83c53 100644 --- a/l10n/en-GB/viewer.ftl +++ b/l10n/en-GB/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Add image pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-title = .title = Change thickness when highlighting items other than text +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Text Editor + .default-content = Start typing… pdfjs-free-text = .aria-label = Text Editor pdfjs-free-text-default-content = Start typing… diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index 33f88f6b838c1..6c4e55a4305f4 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Agregar una imagen pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar el grosor al resaltar elementos que no sean texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Comenzar a tipear… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Empezar a tipear… diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index 51dbb2241ed3f..a157bd63030ce 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Añadir imagen pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-title = .title = Cambia el grosor al resaltar elementos que no sean texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Empieza a escribir… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Empieza a escribir… diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index 23d82501d4ef3..f5352be3949ae 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -339,6 +339,10 @@ pdfjs-editor-stamp-add-image-button-label = Ajouter une image pdfjs-editor-free-highlight-thickness-input = Épaisseur pdfjs-editor-free-highlight-thickness-title = .title = Modifier l’épaisseur pour le surlignage d’éléments non textuels +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Éditeur de texte + .default-content = Commencez à écrire… pdfjs-free-text = .aria-label = Éditeur de texte pdfjs-free-text-default-content = Commencer à écrire… diff --git a/l10n/fur/viewer.ftl b/l10n/fur/viewer.ftl index c587f556d89c2..370af3f23bd81 100644 --- a/l10n/fur/viewer.ftl +++ b/l10n/fur/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Zonte imagjin pdfjs-editor-free-highlight-thickness-input = Spessôr pdfjs-editor-free-highlight-thickness-title = .title = Modifiche il spessôr de selezion pai elements che no son testuâi +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editôr di test + .default-content = Scomence a scrivi… pdfjs-free-text = .aria-label = Editôr di test pdfjs-free-text-default-content = Scomence a scrivi… diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index d336034d99301..13f83894c95b3 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Ofbylding tafoegje pdfjs-editor-free-highlight-thickness-input = Tsjokte pdfjs-editor-free-highlight-thickness-title = .title = Tsjokte wizigje by aksintuearring fan oare items as tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstbewurker + .default-content = Start mei typen… pdfjs-free-text = .aria-label = Tekstbewurker pdfjs-free-text-default-content = Begjin mei typen… diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index a7a68e74b228d..6a34d65ebec69 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Embojuaju ta’ãnga pdfjs-editor-free-highlight-thickness-input = Anambusu pdfjs-editor-free-highlight-thickness-title = .title = Emoambue anambusukue embosa’ývo mba’eporu ha’e’ỹva moñe’ẽrã +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Moñe’ẽrã moheñoiha + .default-content = Eñepyrũ ehai… pdfjs-free-text = .aria-label = Moñe’ẽrã moheñoiha pdfjs-free-text-default-content = Ehai ñepyrũ… @@ -432,6 +436,10 @@ pdfjs-editor-new-alt-text-dialog-edit-label = Embosako’i moñe’ẽrã mokõi pdfjs-editor-new-alt-text-dialog-add-label = Embojuaju moñe’ẽrã mokõiha (ta’ãngáre ñeñe’ẽ) pdfjs-editor-new-alt-text-textarea = .placeholder = Edescribi ko’ápe… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Ñemyesakã mbykymi opavave ohecha’ỹva upe ta’ãnga térã pe ta’ãnga nahenyhẽiramo. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = Ko moñe’ẽrã mokõiha oñemoheñói ijehegui ha ikatu ndoikoporãi. pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Eikuaave pdfjs-editor-new-alt-text-create-automatically-button-label = Emoheñói moñe’ẽrã mokõiha ijeheguíva pdfjs-editor-new-alt-text-not-now-button = Ani ko’ág̃a diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index 11302c4cceb59..c9b9a51ac6667 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = הוספת תמונה pdfjs-editor-free-highlight-thickness-input = עובי pdfjs-editor-free-highlight-thickness-title = .title = שינוי עובי בעת הדגשת פריטים שאינם טקסט +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = עורך טקסט + .default-content = נא להתחיל להקליד… pdfjs-free-text = .aria-label = עורך טקסט pdfjs-free-text-default-content = להתחיל להקליד… diff --git a/l10n/hsb/viewer.ftl b/l10n/hsb/viewer.ftl index d5fe5d5daa02e..1d5400a5103f8 100644 --- a/l10n/hsb/viewer.ftl +++ b/l10n/hsb/viewer.ftl @@ -347,6 +347,10 @@ pdfjs-editor-stamp-add-image-button-label = Wobraz přidać pdfjs-editor-free-highlight-thickness-input = Tołstosć pdfjs-editor-free-highlight-thickness-title = .title = Tołstosć změnić, hdyž so zapiski wuzběhuja, kotrež tekst njejsu +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstowy editor + .default-content = Započńće pisać … pdfjs-free-text = .aria-label = Tekstowy editor pdfjs-free-text-default-content = Započńće pisać… diff --git a/l10n/ia/viewer.ftl b/l10n/ia/viewer.ftl index b69be14bc7af9..4cc66644a6ea1 100644 --- a/l10n/ia/viewer.ftl +++ b/l10n/ia/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Adder imagine pdfjs-editor-free-highlight-thickness-input = Spissor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar spissor evidentiante elementos differente de texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Initiar a inserer… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Comenciar a scriber… diff --git a/l10n/is/viewer.ftl b/l10n/is/viewer.ftl index 802426207262c..aaed09542f2b2 100644 --- a/l10n/is/viewer.ftl +++ b/l10n/is/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Bæta við mynd pdfjs-editor-free-highlight-thickness-input = Þykkt pdfjs-editor-free-highlight-thickness-title = .title = Breyta þykkt við áherslulitun annarra atriða en texta +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Textaritill + .default-content = Byrjaðu að skrifa… pdfjs-free-text = .aria-label = Textaritill pdfjs-free-text-default-content = Byrjaðu að skrifa… diff --git a/l10n/it/viewer.ftl b/l10n/it/viewer.ftl index bdbed4a3569de..9007d7c17c170 100644 --- a/l10n/it/viewer.ftl +++ b/l10n/it/viewer.ftl @@ -340,6 +340,9 @@ pdfjs-editor-free-highlight-thickness-title = pdfjs-free-text = .aria-label = Editor di testo pdfjs-free-text-default-content = Inizia a digitare… +pdfjs-free-text2 = + .aria-label = Editor di testo + .default-content = Inizia a digitare… pdfjs-ink = .aria-label = Editor disegni pdfjs-ink-canvas = diff --git a/l10n/ko/viewer.ftl b/l10n/ko/viewer.ftl index ee20d78d4a8a2..a188af34ace37 100644 --- a/l10n/ko/viewer.ftl +++ b/l10n/ko/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = 이미지 추가 pdfjs-editor-free-highlight-thickness-input = 두께 pdfjs-editor-free-highlight-thickness-title = .title = 텍스트 이외의 항목을 강조 표시할 때 두께 변경 +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = 텍스트 편집기 + .default-content = 입력을 시작하세요… pdfjs-free-text = .aria-label = 텍스트 편집기 pdfjs-free-text-default-content = 입력하세요… diff --git a/l10n/nl/viewer.ftl b/l10n/nl/viewer.ftl index 7b162e42ccd64..433be3c3e1f3e 100644 --- a/l10n/nl/viewer.ftl +++ b/l10n/nl/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Afbeelding toevoegen pdfjs-editor-free-highlight-thickness-input = Dikte pdfjs-editor-free-highlight-thickness-title = .title = Dikte wijzigen bij accentuering van andere items dan tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstbewerker + .default-content = Start met typen… pdfjs-free-text = .aria-label = Tekstbewerker pdfjs-free-text-default-content = Begin met typen… diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 3205411ace4f0..019df10f6f5b6 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Adicionar imagem pdfjs-editor-free-highlight-thickness-input = Espessura pdfjs-editor-free-highlight-thickness-title = .title = Mudar espessura ao destacar itens que não são texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Comece a digitar… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Comece digitando… diff --git a/l10n/ru/viewer.ftl b/l10n/ru/viewer.ftl index fa31170268283..cb733a11a2e0c 100644 --- a/l10n/ru/viewer.ftl +++ b/l10n/ru/viewer.ftl @@ -345,6 +345,10 @@ pdfjs-editor-stamp-add-image-button-label = Добавить изображен pdfjs-editor-free-highlight-thickness-input = Толщина pdfjs-editor-free-highlight-thickness-title = .title = Изменить толщину при выделении элементов, кроме текста +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Текстовый редактор + .default-content = Начните ввод... pdfjs-free-text = .aria-label = Текстовый редактор pdfjs-free-text-default-content = Начните вводить… diff --git a/l10n/si/viewer.ftl b/l10n/si/viewer.ftl index 2b3a7027d36fc..0933af2dfb77a 100644 --- a/l10n/si/viewer.ftl +++ b/l10n/si/viewer.ftl @@ -230,6 +230,9 @@ pdfjs-editor-free-text-button-label = පෙළ pdfjs-editor-ink-button = .title = අඳින්න pdfjs-editor-ink-button-label = අඳින්න +pdfjs-editor-stamp-button = + .title = රූප සංස්කරණය හෝ එක් කරන්න +pdfjs-editor-stamp-button-label = රූප සංස්කරණය හෝ එක් කරන්න ## Remove button for the various kind of editor. @@ -247,6 +250,7 @@ pdfjs-free-text-default-content = ලිවීීම අරඹන්න… ## Alt-text dialog +pdfjs-editor-alt-text-mark-decorative-description = මෙය දාර හෝ දිය සලකුණු වැනි අලංකාර රූප සඳහා භාවිතා වේ. ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index 6477017835e90..f1684d56749e7 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -347,6 +347,10 @@ pdfjs-editor-stamp-add-image-button-label = Pridať obrázok pdfjs-editor-free-highlight-thickness-input = Hrúbka pdfjs-editor-free-highlight-thickness-title = .title = Zmeňte hrúbku pre zvýrazňovanie iných položiek ako textu +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Textový editor + .default-content = Začnite písať… pdfjs-free-text = .aria-label = Textový editor pdfjs-free-text-default-content = Začnite písať… diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index 9edbe328fccd8..78670821cd4d5 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -118,6 +118,9 @@ pdfjs-document-properties-keywords = Fjalëkyçe: pdfjs-document-properties-creation-date = Datë Krijimi: pdfjs-document-properties-modification-date = Datë Ndryshimi: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } @@ -274,6 +277,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [Nënvizim { $type }] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password diff --git a/l10n/sv-SE/viewer.ftl b/l10n/sv-SE/viewer.ftl index 87c7da09209ef..50fdf53a8d888 100644 --- a/l10n/sv-SE/viewer.ftl +++ b/l10n/sv-SE/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Lägg till bild pdfjs-editor-free-highlight-thickness-input = Tjocklek pdfjs-editor-free-highlight-thickness-title = .title = Ändra tjocklek när du markerar andra objekt än text +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Textredigerare + .default-content = Börja skriva… pdfjs-free-text = .aria-label = Textredigerare pdfjs-free-text-default-content = Börja skriva… diff --git a/l10n/vi/viewer.ftl b/l10n/vi/viewer.ftl index 14d990addd5a2..4d0b81571a887 100644 --- a/l10n/vi/viewer.ftl +++ b/l10n/vi/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = Thêm hình ảnh pdfjs-editor-free-highlight-thickness-input = Độ dày pdfjs-editor-free-highlight-thickness-title = .title = Thay đổi độ dày khi đánh dấu các mục không phải là văn bản +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Trình chỉnh sửa văn bản + .default-content = Bắt đầu nhập… pdfjs-free-text = .aria-label = Trình sửa văn bản pdfjs-free-text-default-content = Bắt đầu nhập… diff --git a/l10n/zh-CN/viewer.ftl b/l10n/zh-CN/viewer.ftl index 9cebb3cd2c2cf..05439ec88bb73 100644 --- a/l10n/zh-CN/viewer.ftl +++ b/l10n/zh-CN/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = 添加图像 pdfjs-editor-free-highlight-thickness-input = 粗细 pdfjs-editor-free-highlight-thickness-title = .title = 更改高亮粗细(用于文本以外项目) +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = 文本编辑器 + .default-content = 在此键入… pdfjs-free-text = .aria-label = 文本编辑器 pdfjs-free-text-default-content = 开始输入… diff --git a/l10n/zh-TW/viewer.ftl b/l10n/zh-TW/viewer.ftl index e96d6375fbea9..705eff142872d 100644 --- a/l10n/zh-TW/viewer.ftl +++ b/l10n/zh-TW/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = 新增圖片 pdfjs-editor-free-highlight-thickness-input = 線條粗細 pdfjs-editor-free-highlight-thickness-title = .title = 更改強調文字以外的項目時的線條粗細 +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = 文字編輯器 + .default-content = 請打字… pdfjs-free-text = .aria-label = 文本編輯器 pdfjs-free-text-default-content = 在此打字… From 261b62bee35bc9e3ff0d5d72f4035f0130d5d41a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 3 Nov 2024 00:10:23 +0100 Subject: [PATCH 021/338] Enable the "should have an alt attribute from toolTip" unit-test in Node.js Despite the pending-message mentioning "Image", this appears to be another case where the code actually depends on [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob#browser_compatibility); note https://github.com/mozilla/pdf.js/blob/cf3ca8b5bc95154712bcde96ee85a0bf7afacb2f/src/core/xfa/template.js#L3453 --- test/unit/xfa_tohtml_spec.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/test/unit/xfa_tohtml_spec.js b/test/unit/xfa_tohtml_spec.js index 294573d89f3ac..e4284963926b0 100644 --- a/test/unit/xfa_tohtml_spec.js +++ b/test/unit/xfa_tohtml_spec.js @@ -13,7 +13,6 @@ * limitations under the License. */ -import { isNodeJS } from "../../src/shared/util.js"; import { XFAFactory } from "../../src/core/xfa/factory.js"; describe("XFAFactory", function () { @@ -145,9 +144,6 @@ describe("XFAFactory", function () { }); it("should have an alt attribute from toolTip", async () => { - if (isNodeJS) { - pending("Image is not supported in Node.js."); - } const xml = ` From 15030dc31836f6c83b7697fea73d01014c029560 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 2 Nov 2024 23:47:58 +0100 Subject: [PATCH 022/338] Enable the 'gets PDF filename from query string appended to "blob:" URL' unit-test in Node.js The necessary functionality has been supported in Node.js for quite some time now, please see: - https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob#browser_compatibility - https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL_static#browser_compatibility --- test/unit/display_utils_spec.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test/unit/display_utils_spec.js b/test/unit/display_utils_spec.js index 8b3f2bb93e47e..f5957e6c8e01c 100644 --- a/test/unit/display_utils_spec.js +++ b/test/unit/display_utils_spec.js @@ -13,13 +13,13 @@ * limitations under the License. */ -import { bytesToString, isNodeJS } from "../../src/shared/util.js"; import { getFilenameFromUrl, getPdfFilenameFromUrl, isValidFetchUrl, PDFDateString, } from "../../src/display/display_utils.js"; +import { bytesToString } from "../../src/shared/util.js"; describe("display_utils", function () { describe("getFilenameFromUrl", function () { @@ -168,9 +168,6 @@ describe("display_utils", function () { }); it('gets PDF filename from query string appended to "blob:" URL', function () { - if (isNodeJS) { - pending("Blob in not supported in Node.js."); - } const typedArray = new Uint8Array([1, 2, 3, 4, 5]); const blobUrl = URL.createObjectURL( new Blob([typedArray], { type: "application/pdf" }) From cbf5b3bd682672129aca184e5ea57db9da691d91 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 3 Nov 2024 11:25:19 +0100 Subject: [PATCH 023/338] Use the `toBase64Util` helper function in the unit-tests --- test/unit/display_utils_spec.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test/unit/display_utils_spec.js b/test/unit/display_utils_spec.js index f5957e6c8e01c..eef734a836966 100644 --- a/test/unit/display_utils_spec.js +++ b/test/unit/display_utils_spec.js @@ -19,7 +19,7 @@ import { isValidFetchUrl, PDFDateString, } from "../../src/display/display_utils.js"; -import { bytesToString } from "../../src/shared/util.js"; +import { toBase64Util } from "../../src/shared/util.js"; describe("display_utils", function () { describe("getFilenameFromUrl", function () { @@ -179,9 +179,8 @@ describe("display_utils", function () { }); it('gets fallback filename from query string appended to "data:" URL', function () { - const typedArray = new Uint8Array([1, 2, 3, 4, 5]), - str = bytesToString(typedArray); - const dataUrl = `data:application/pdf;base64,${btoa(str)}`; + const typedArray = new Uint8Array([1, 2, 3, 4, 5]); + const dataUrl = `data:application/pdf;base64,${toBase64Util(typedArray)}`; // Sanity check to ensure that a "data:" URL was returned. expect(dataUrl.startsWith("data:")).toEqual(true); From b1db54fba92b12fac3fb968d4516c46bcc2370d0 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 3 Nov 2024 13:30:06 +0100 Subject: [PATCH 024/338] Install and use the most recent Node types for the types tests The types tests run in Node.js and therefore use Node types for e.g. builtins. However, we didn't explicitly indicate this in `tsconfig.json` (see [1] for more information and [2] for the PR where we found this). Moreover, we didn't explicitly install the most recent version of `@types/node` which implicitly made us fall back to version 14.14.45 (because that was installed as a dependency of other modules) whereas much newer versions are available and we need those after changes in Node.js (see [3] for more information and [4] for the PR where we found this). This commit fixes both issues by explicitly installing and using the most recent Node.js types, which should also avoid future issues with the types tests. [1] https://github.com/TypeStrong/ts-node/issues/1012 [2] https://github.com/mozilla/pdf.js/pull/18237 [3] https://stackoverflow.com/questions/78790943/in-typescript-5-6-buffer-is-not-assignable-to-arraybufferview-or-uint8arr [4] https://github.com/mozilla/pdf.js/pull/18959 --- package-lock.json | 20 ++++++++++++++++---- package.json | 1 + test/types/tsconfig.json | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 29c2d568746ee..ed6a495c2640a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", + "@types/node": "^22.8.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001677", @@ -2468,10 +2469,14 @@ "dev": true }, "node_modules/@types/node": { - "version": "14.14.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.45.tgz", - "integrity": "sha512-DssMqTV9UnnoxDWu959sDLZzfvqCF0qDNRjaWeYSui9xkFe61kKo4l1TWNTQONpuXEm+gLMRvdlzvNHBamzmEw==", - "dev": true + "version": "22.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", + "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.8" + } }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", @@ -13513,6 +13518,13 @@ "node": ">=18.17" } }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", diff --git a/package.json b/package.json index e71495f40d4b8..fed5d09c91a7c 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", + "@types/node": "^22.8.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001677", diff --git a/test/types/tsconfig.json b/test/types/tsconfig.json index 5cd8ef4507e20..772a382c71e4d 100644 --- a/test/types/tsconfig.json +++ b/test/types/tsconfig.json @@ -10,7 +10,7 @@ "module": "ESNext", "baseUrl": "./", "strict": true, - "types": [], + "types": ["node"], "lib": ["ESNext", "DOM"], "paths": { "pdfjs-dist": ["../../build/typestest"], From f5b31114b88424778d91adcd5632e4fb09b6489e Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 3 Nov 2024 15:00:35 +0100 Subject: [PATCH 025/338] Fix the "must convert input to uppercase" scripting integration test This integration test fails intermittently because we're not (correctly) awaiting the sandbox actions. The `27R` field in `issue14862.pdf` triggers sandbox events for every typing action, but for the backspace and "a" character typing actions we weren't awaiting the sandbox trip at all, and for other places we weren't awaiting it fully (causing some characters to be missed in the assertion). This commit fixes the issues by using the appropriate helper functions, similar to what we did in PR #18399. Not only is this shorter in terms of code, but it also fixed the near-permafail for this test with newer versions of Puppeteer. --- test/integration/scripting_spec.mjs | 40 +++++++++-------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 715857f7022f3..7f74d5893c13f 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -1229,59 +1229,43 @@ describe("Interaction", () => { await typeAndWaitForSandbox(page, getSelector("27R"), "Hello"); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "Hello"` + `${getQuerySelector("27R")}.value === "HELLO"` ); - let text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO"); - await typeAndWaitForSandbox(page, getSelector("27R"), " world"); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO world"` + `${getQuerySelector("27R")}.value === "HELLO WORLD"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WORLD"); - await page.keyboard.press("Backspace"); + await waitForSandboxTrip(page); await page.keyboard.press("Backspace"); - + await waitForSandboxTrip(page); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WORLD"` + `${getQuerySelector("27R")}.value === "HELLO WOR"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WOR"); - await typeAndWaitForSandbox(page, getSelector("27R"), "12.dL"); - await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WOR"` + `${getQuerySelector("27R")}.value === "HELLO WORDL"` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO WORDL"); - await typeAndWaitForSandbox(page, getSelector("27R"), " "); - await kbDeleteLastWord(page); - + await waitForSandboxTrip(page); await page.waitForFunction( - `${getQuerySelector("27R")}.value !== "HELLO WORDL "` + `${getQuerySelector("27R")}.value === "HELLO "` ); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HELLO "); - await page.$eval(getSelector("27R"), el => { // Select LL el.selectionStart = 2; el.selectionEnd = 4; }); - - await page.keyboard.press("a"); - text = await page.$eval(getSelector("27R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("HEAO "); + await typeAndWaitForSandbox(page, getSelector("27R"), "a"); + await page.waitForFunction( + `${getQuerySelector("27R")}.value === "HEAO "` + ); }) ); }); From 83f05c5f7ddb986b48966e3d7c42ed9993fc13cc Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 20 Oct 2024 13:40:59 +0200 Subject: [PATCH 026/338] [api-minor] Update the minimum supported Node.js version to 20 This patch updates the minimum supported environments as follows: - Node.js 20, which was released on 2023-04-18 and has now entered the "Maintenance"-phase; see https://github.com/nodejs/release#release-schedule Furthermore, note also that Node.js 18 will fairly soon reach EOL. --- .github/workflows/ci.yml | 2 +- gulpfile.mjs | 4 ++-- package-lock.json | 2 +- package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b60e0a31b1d8f..1f3cadbd47de0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [18, lts/*, 22, 23] + node-version: [20, 22, 23] steps: - name: Checkout repository diff --git a/gulpfile.mjs b/gulpfile.mjs index c294c4987920e..1f8a29dae73de 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -84,7 +84,7 @@ const ENV_TARGETS = [ "Chrome >= 103", "Firefox ESR", "Safari >= 16.4", - "Node >= 18", + "Node >= 20", "> 1%", "not IE > 0", "not dead", @@ -2271,7 +2271,7 @@ function packageJson() { url: `git+${DIST_GIT_URL}`, }, engines: { - node: ">=18", + node: ">=20", }, scripts: {}, }; diff --git a/package-lock.json b/package-lock.json index ed6a495c2640a..0f96a62a675bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -64,7 +64,7 @@ "yargs": "^17.7.2" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@aashutoshrathi/word-wrap": { diff --git a/package.json b/package.json index fed5d09c91a7c..a8d26f3bfdef5 100644 --- a/package.json +++ b/package.json @@ -63,7 +63,7 @@ "url": "git://github.com/mozilla/pdf.js.git" }, "engines": { - "node": ">=18" + "node": ">=20" }, "license": "Apache-2.0" } From e2deaf29091421b6a9f3155f8defb1c133691b4d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 12 Jun 2024 11:19:51 +0200 Subject: [PATCH 027/338] [api-minor] Load Node.js packages/polyfills with `process.getBuiltinModule` This allows *synchronous* loading of Node.js modules and (indirectly) packages, thus simplifying the code a fair bit. --- src/display/api.js | 9 --- src/display/node_stream.js | 12 +-- src/display/node_utils.js | 134 ++++++++++++++-------------------- src/display/stubs.js | 2 - test/unit/clitests_helper.js | 4 - test/unit/node_stream_spec.js | 3 +- test/unit/test_utils.js | 9 +-- 7 files changed, 62 insertions(+), 111 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index b9e08f6fd2a20..cf11866adb240 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -56,7 +56,6 @@ import { NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, - NodePackages, NodeStandardFontDataFactory, } from "display-node_utils"; import { CanvasGraphics } from "./canvas.js"; @@ -2137,14 +2136,6 @@ class PDFWorker { * @type {Promise} */ get promise() { - if ( - typeof PDFJSDev !== "undefined" && - PDFJSDev.test("GENERIC") && - isNodeJS - ) { - // Ensure that all Node.js packages/polyfills have loaded. - return Promise.all([NodePackages.promise, this._readyCapability.promise]); - } return this._readyCapability.promise; } diff --git a/src/display/node_stream.js b/src/display/node_stream.js index 6808488d62f84..069f025da52ff 100644 --- a/src/display/node_stream.js +++ b/src/display/node_stream.js @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/* globals process */ import { AbortException, assert, MissingPDFException } from "../shared/util.js"; import { @@ -19,7 +20,6 @@ import { extractFilenameFromHeader, validateRangeRequestCapabilities, } from "./network_utils.js"; -import { NodePackages } from "./node_utils.js"; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error( @@ -33,16 +33,16 @@ function parseUrlOrPath(sourceUrl) { if (urlRegex.test(sourceUrl)) { return new URL(sourceUrl); } - const url = NodePackages.get("url"); + const url = process.getBuiltinModule("url"); return new URL(url.pathToFileURL(sourceUrl)); } function createRequest(url, headers, callback) { if (url.protocol === "http:") { - const http = NodePackages.get("http"); + const http = process.getBuiltinModule("http"); return http.request(url, { headers }, callback); } - const https = NodePackages.get("https"); + const https = process.getBuiltinModule("https"); return https.request(url, { headers }, callback); } @@ -365,7 +365,7 @@ class PDFNodeStreamFsFullReader extends BaseFullReader { constructor(stream) { super(stream); - const fs = NodePackages.get("fs"); + const fs = process.getBuiltinModule("fs"); fs.promises.lstat(this._url).then( stat => { // Setting right content length. @@ -389,7 +389,7 @@ class PDFNodeStreamFsRangeReader extends BaseRangeReader { constructor(stream, start, end) { super(stream); - const fs = NodePackages.get("fs"); + const fs = process.getBuiltinModule("fs"); this._setReadableStream( fs.createReadStream(this._url, { start, end: end - 1 }) ); diff --git a/src/display/node_utils.js b/src/display/node_utils.js index 037bea2419649..81ed9375bbf7d 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +/* globals process */ import { isNodeJS, warn } from "../shared/util.js"; import { BaseCanvasFactory } from "./canvas_factory.js"; @@ -25,94 +26,63 @@ if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { ); } -if (isNodeJS) { - // eslint-disable-next-line no-var - var packageCapability = Promise.withResolvers(); - // eslint-disable-next-line no-var - var packageMap = null; - - const loadPackages = async () => { - // Native packages. - const fs = await __non_webpack_import__("fs"), - http = await __non_webpack_import__("http"), - https = await __non_webpack_import__("https"), - url = await __non_webpack_import__("url"); - - // Optional, third-party, packages. - let canvas, path2d; - if (typeof PDFJSDev !== "undefined" && !PDFJSDev.test("SKIP_BABEL")) { - try { - canvas = await __non_webpack_import__("canvas"); - } catch {} - try { - path2d = await __non_webpack_import__("path2d"); - } catch {} +if ( + typeof PDFJSDev !== "undefined" && + !PDFJSDev.test("SKIP_BABEL") && + isNodeJS +) { + let canvas, path2d; + try { + const require = process + .getBuiltinModule("module") + .createRequire(import.meta.url); + + try { + canvas = require("canvas"); + } catch (ex) { + warn(`Cannot load "canvas" package: "${ex}".`); } + try { + path2d = require("path2d"); + } catch (ex) { + warn(`Cannot load "path2d" package: "${ex}".`); + } + } catch {} - return new Map(Object.entries({ fs, http, https, url, canvas, path2d })); - }; - - loadPackages().then( - map => { - packageMap = map; - packageCapability.resolve(); - - if (typeof PDFJSDev === "undefined" || PDFJSDev.test("SKIP_BABEL")) { - return; - } - if (!globalThis.DOMMatrix) { - const DOMMatrix = map.get("canvas")?.DOMMatrix; - - if (DOMMatrix) { - globalThis.DOMMatrix = DOMMatrix; - } else { - warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); - } - } - if (!globalThis.Path2D) { - const CanvasRenderingContext2D = - map.get("canvas")?.CanvasRenderingContext2D; - const applyPath2DToCanvasRenderingContext = - map.get("path2d")?.applyPath2DToCanvasRenderingContext; - const Path2D = map.get("path2d")?.Path2D; - - if ( - CanvasRenderingContext2D && - applyPath2DToCanvasRenderingContext && - Path2D - ) { - try { - applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D); - } catch (ex) { - warn(`applyPath2DToCanvasRenderingContext: "${ex}".`); - } - globalThis.Path2D = Path2D; - } else { - warn("Cannot polyfill `Path2D`, rendering may be broken."); - } - } - }, - reason => { - warn(`loadPackages: ${reason}`); + if (!globalThis.DOMMatrix) { + const DOMMatrix = canvas?.DOMMatrix; - packageMap = new Map(); - packageCapability.resolve(); + if (DOMMatrix) { + globalThis.DOMMatrix = DOMMatrix; + } else { + warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); } - ); -} - -class NodePackages { - static get promise() { - return packageCapability.promise; } - - static get(name) { - return packageMap?.get(name); + if (!globalThis.Path2D) { + const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D; + const applyPath2DToCanvasRenderingContext = + path2d?.applyPath2DToCanvasRenderingContext; + const Path2D = path2d?.Path2D; + + if ( + CanvasRenderingContext2D && + applyPath2DToCanvasRenderingContext && + Path2D + ) { + try { + applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D); + } catch (ex) { + warn(`applyPath2DToCanvasRenderingContext: "${ex}".`); + } + globalThis.Path2D = Path2D; + } else { + warn("Cannot polyfill `Path2D`, rendering may be broken."); + } } } async function fetchData(url) { - const fs = NodePackages.get("fs"); + const fs = process.getBuiltinModule("fs"); const data = await fs.promises.readFile(url); return new Uint8Array(data); } @@ -124,7 +94,10 @@ class NodeCanvasFactory extends BaseCanvasFactory { * @ignore */ _createCanvas(width, height) { - const canvas = NodePackages.get("canvas"); + const require = process + .getBuiltinModule("module") + .createRequire(import.meta.url); + const canvas = require("canvas"); return canvas.createCanvas(width, height); } } @@ -152,6 +125,5 @@ export { NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, - NodePackages, NodeStandardFontDataFactory, }; diff --git a/src/display/stubs.js b/src/display/stubs.js index bea46b67edfe1..7bd6eedd2e746 100644 --- a/src/display/stubs.js +++ b/src/display/stubs.js @@ -18,7 +18,6 @@ const DOMStandardFontDataFactory = null; const NodeCanvasFactory = null; const NodeCMapReaderFactory = null; const NodeFilterFactory = null; -const NodePackages = null; const NodeStandardFontDataFactory = null; const PDFFetchStream = null; const PDFNetworkStream = null; @@ -30,7 +29,6 @@ export { NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, - NodePackages, NodeStandardFontDataFactory, PDFFetchStream, PDFNetworkStream, diff --git a/test/unit/clitests_helper.js b/test/unit/clitests_helper.js index a5a1c788e2de0..d86eeacbbc2d3 100644 --- a/test/unit/clitests_helper.js +++ b/test/unit/clitests_helper.js @@ -18,7 +18,6 @@ import { setVerbosityLevel, VerbosityLevel, } from "../../src/shared/util.js"; -import { NodePackages } from "../../src/display/node_utils.js"; // Sets longer timeout, similar to `jasmine-boot.js`. jasmine.DEFAULT_TIMEOUT_INTERVAL = 30000; @@ -30,9 +29,6 @@ if (!isNodeJS) { ); } -// Ensure that all Node.js packages/polyfills have loaded. -await NodePackages.promise; - // Reduce the amount of console "spam", by ignoring `info`/`warn` calls, // when running the unit-tests in Node.js/Travis. setVerbosityLevel(VerbosityLevel.ERRORS); diff --git a/test/unit/node_stream_spec.js b/test/unit/node_stream_spec.js index 775131caa3f50..085164bb70526 100644 --- a/test/unit/node_stream_spec.js +++ b/test/unit/node_stream_spec.js @@ -24,11 +24,10 @@ if (!isNodeJS) { ); } -const url = await __non_webpack_import__("url"); - describe("node_stream", function () { let tempServer = null; + const url = process.getBuiltinModule("url"); const cwdURL = url.pathToFileURL(process.cwd()) + "/"; const pdf = new URL("./test/pdfs/tracemonkey.pdf", cwdURL).href; const pdfLength = 1016315; diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index 473b292e83935..5ca113989df68 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -20,13 +20,6 @@ import { fetchData as fetchDataDOM } from "../../src/display/display_utils.js"; import { fetchData as fetchDataNode } from "../../src/display/node_utils.js"; import { Ref } from "../../src/core/primitives.js"; -let fs, http; -if (isNodeJS) { - // Native packages. - fs = await __non_webpack_import__("fs"); - http = await __non_webpack_import__("http"); -} - const TEST_PDFS_PATH = isNodeJS ? "./test/pdfs/" : "../pdfs/"; const CMAP_URL = isNodeJS ? "./external/bcmaps/" : "../../external/bcmaps/"; @@ -132,6 +125,8 @@ function createIdFactory(pageIndex) { function createTemporaryNodeServer() { assert(isNodeJS, "Should only be used in Node.js environments."); + const fs = process.getBuiltinModule("fs"), + http = process.getBuiltinModule("http"); // Create http server to serve pdf data for tests. const server = http .createServer((request, response) => { From 05860c22a7aa913b043faa6c33750d222a0c465b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 4 Sep 2024 13:58:54 +0200 Subject: [PATCH 028/338] [api-minor] Only support the Fetch API for "remote" PDF documents in Node.js environments The Fetch API has been supported since Node.js version 18, see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API#browser_compatibility --- src/display/api.js | 23 +++-- src/display/node_stream.js | 104 ++--------------------- test/unit/node_stream_spec.js | 156 ++++++++-------------------------- 3 files changed, 57 insertions(+), 226 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index cf11866adb240..5749d514da3f7 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -450,15 +450,20 @@ function getDocument(src = {}) { PDFJSDev.test("GENERIC") && isNodeJS ) { - const isFetchSupported = - typeof fetch !== "undefined" && - typeof Response !== "undefined" && - "body" in Response.prototype; - - NetworkStream = - isFetchSupported && isValidFetchUrl(url) - ? PDFFetchStream - : PDFNodeStream; + if (isValidFetchUrl(url)) { + if ( + typeof fetch === "undefined" || + typeof Response === "undefined" || + !("body" in Response.prototype) + ) { + throw new Error( + "getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`." + ); + } + NetworkStream = PDFFetchStream; + } else { + NetworkStream = PDFNodeStream; + } } else { NetworkStream = isValidFetchUrl(url) ? PDFFetchStream diff --git a/src/display/node_stream.js b/src/display/node_stream.js index 069f025da52ff..9223c5aa9cd92 100644 --- a/src/display/node_stream.js +++ b/src/display/node_stream.js @@ -15,11 +15,6 @@ /* globals process */ import { AbortException, assert, MissingPDFException } from "../shared/util.js"; -import { - createHeaders, - extractFilenameFromHeader, - validateRangeRequestCapabilities, -} from "./network_utils.js"; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error( @@ -37,24 +32,14 @@ function parseUrlOrPath(sourceUrl) { return new URL(url.pathToFileURL(sourceUrl)); } -function createRequest(url, headers, callback) { - if (url.protocol === "http:") { - const http = process.getBuiltinModule("http"); - return http.request(url, { headers }, callback); - } - const https = process.getBuiltinModule("https"); - return https.request(url, { headers }, callback); -} - class PDFNodeStream { constructor(source) { this.source = source; this.url = parseUrlOrPath(source.url); - this.isHttp = - this.url.protocol === "http:" || this.url.protocol === "https:"; - // Check if url refers to filesystem. - this.isFsUrl = this.url.protocol === "file:"; - this.headers = createHeaders(this.isHttp, source.httpHeaders); + assert( + this.url.protocol === "file:", + "PDFNodeStream only supports file:// URLs." + ); this._fullRequestReader = null; this._rangeRequestReaders = []; @@ -69,9 +54,7 @@ class PDFNodeStream { !this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once." ); - this._fullRequestReader = this.isFsUrl - ? new PDFNodeStreamFsFullReader(this) - : new PDFNodeStreamFullReader(this); + this._fullRequestReader = new PDFNodeStreamFsFullReader(this); return this._fullRequestReader; } @@ -79,9 +62,7 @@ class PDFNodeStream { if (end <= this._progressiveDataLength) { return null; } - const rangeReader = this.isFsUrl - ? new PDFNodeStreamFsRangeReader(this, start, end) - : new PDFNodeStreamRangeReader(this, start, end); + const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end); this._rangeRequestReaders.push(rangeReader); return rangeReader; } @@ -288,79 +269,6 @@ class BaseRangeReader { } } -class PDFNodeStreamFullReader extends BaseFullReader { - constructor(stream) { - super(stream); - - // Node.js requires the `headers` to be a regular Object. - const headers = Object.fromEntries(stream.headers); - - const handleResponse = response => { - if (response.statusCode === 404) { - const error = new MissingPDFException(`Missing PDF "${this._url}".`); - this._storedError = error; - this._headersCapability.reject(error); - return; - } - this._headersCapability.resolve(); - this._setReadableStream(response); - - const responseHeaders = new Headers(this._readableStream.headers); - - const { allowRangeRequests, suggestedLength } = - validateRangeRequestCapabilities({ - responseHeaders, - isHttp: stream.isHttp, - rangeChunkSize: this._rangeChunkSize, - disableRange: this._disableRange, - }); - - this._isRangeSupported = allowRangeRequests; - // Setting right content length. - this._contentLength = suggestedLength || this._contentLength; - - this._filename = extractFilenameFromHeader(responseHeaders); - }; - - this._request = createRequest(this._url, headers, handleResponse); - - this._request.on("error", reason => { - this._storedError = reason; - this._headersCapability.reject(reason); - }); - // Note: `request.end(data)` is used to write `data` to request body - // and notify end of request. But one should always call `request.end()` - // even if there is no data to write -- (to notify the end of request). - this._request.end(); - } -} - -class PDFNodeStreamRangeReader extends BaseRangeReader { - constructor(stream, start, end) { - super(stream); - - // Node.js requires the `headers` to be a regular Object. - const headers = Object.fromEntries(stream.headers); - headers.Range = `bytes=${start}-${end - 1}`; - - const handleResponse = response => { - if (response.statusCode === 404) { - const error = new MissingPDFException(`Missing PDF "${this._url}".`); - this._storedError = error; - return; - } - this._setReadableStream(response); - }; - - this._request = createRequest(this._url, headers, handleResponse); - - this._request.on("error", reason => { - this._storedError = reason; - }); - this._request.end(); - } -} - class PDFNodeStreamFsFullReader extends BaseFullReader { constructor(stream) { super(stream); diff --git a/test/unit/node_stream_spec.js b/test/unit/node_stream_spec.js index 085164bb70526..cab12391b09cc 100644 --- a/test/unit/node_stream_spec.js +++ b/test/unit/node_stream_spec.js @@ -14,7 +14,6 @@ */ import { AbortException, isNodeJS } from "../../src/shared/util.js"; -import { createTemporaryNodeServer } from "./test_utils.js"; import { PDFNodeStream } from "../../src/display/node_stream.js"; // Ensure that these tests only run in Node.js environments. @@ -25,96 +24,48 @@ if (!isNodeJS) { } describe("node_stream", function () { - let tempServer = null; - const url = process.getBuiltinModule("url"); const cwdURL = url.pathToFileURL(process.cwd()) + "/"; const pdf = new URL("./test/pdfs/tracemonkey.pdf", cwdURL).href; const pdfLength = 1016315; - beforeAll(function () { - tempServer = createTemporaryNodeServer(); - }); - - afterAll(function () { - // Close the server from accepting new connections after all test finishes. - const { server } = tempServer; - server.close(); - - tempServer = null; - }); - - it("read both http(s) and filesystem pdf files", async function () { - const stream1 = new PDFNodeStream({ - url: `http://127.0.0.1:${tempServer.port}/tracemonkey.pdf`, - rangeChunkSize: 65536, - disableStream: true, - disableRange: true, - }); - - const stream2 = new PDFNodeStream({ + it("read filesystem pdf files", async function () { + const stream = new PDFNodeStream({ url: pdf, rangeChunkSize: 65536, disableStream: true, disableRange: true, }); - const fullReader1 = stream1.getFullReader(); - const fullReader2 = stream2.getFullReader(); - - let isStreamingSupported1, isRangeSupported1; - const promise1 = fullReader1.headersReady.then(() => { - isStreamingSupported1 = fullReader1.isStreamingSupported; - isRangeSupported1 = fullReader1.isRangeSupported; - }); + const fullReader = stream.getFullReader(); - let isStreamingSupported2, isRangeSupported2; - const promise2 = fullReader2.headersReady.then(() => { - isStreamingSupported2 = fullReader2.isStreamingSupported; - isRangeSupported2 = fullReader2.isRangeSupported; + let isStreamingSupported, isRangeSupported; + const promise = fullReader.headersReady.then(() => { + isStreamingSupported = fullReader.isStreamingSupported; + isRangeSupported = fullReader.isRangeSupported; }); - let len1 = 0, - len2 = 0; - const read1 = function () { - return fullReader1.read().then(function (result) { + let len = 0; + const read = function () { + return fullReader.read().then(function (result) { if (result.done) { return undefined; } - len1 += result.value.byteLength; - return read1(); - }); - }; - const read2 = function () { - return fullReader2.read().then(function (result) { - if (result.done) { - return undefined; - } - len2 += result.value.byteLength; - return read2(); + len += result.value.byteLength; + return read(); }); }; - await Promise.all([read1(), read2(), promise1, promise2]); + await Promise.all([read(), promise]); - expect(isStreamingSupported1).toEqual(false); - expect(isRangeSupported1).toEqual(false); - expect(isStreamingSupported2).toEqual(false); - expect(isRangeSupported2).toEqual(false); - expect(len1).toEqual(pdfLength); - expect(len1).toEqual(len2); + expect(isStreamingSupported).toEqual(false); + expect(isRangeSupported).toEqual(false); + expect(len).toEqual(pdfLength); }); - it("read custom ranges for both http(s) and filesystem urls", async function () { + it("read custom ranges for filesystem urls", async function () { const rangeSize = 32768; - const stream1 = new PDFNodeStream({ - url: `http://127.0.0.1:${tempServer.port}/tracemonkey.pdf`, - length: pdfLength, - rangeChunkSize: rangeSize, - disableStream: true, - disableRange: false, - }); - const stream2 = new PDFNodeStream({ + const stream = new PDFNodeStream({ url: pdf, length: pdfLength, rangeChunkSize: rangeSize, @@ -122,53 +73,28 @@ describe("node_stream", function () { disableRange: false, }); - const fullReader1 = stream1.getFullReader(); - const fullReader2 = stream2.getFullReader(); + const fullReader = stream.getFullReader(); - let isStreamingSupported1, isRangeSupported1, fullReaderCancelled1; - let isStreamingSupported2, isRangeSupported2, fullReaderCancelled2; - - const promise1 = fullReader1.headersReady.then(function () { - isStreamingSupported1 = fullReader1.isStreamingSupported; - isRangeSupported1 = fullReader1.isRangeSupported; + let isStreamingSupported, isRangeSupported, fullReaderCancelled; + const promise = fullReader.headersReady.then(function () { + isStreamingSupported = fullReader.isStreamingSupported; + isRangeSupported = fullReader.isRangeSupported; // we shall be able to close the full reader without issues - fullReader1.cancel(new AbortException("Don't need fullReader1.")); - fullReaderCancelled1 = true; - }); - - const promise2 = fullReader2.headersReady.then(function () { - isStreamingSupported2 = fullReader2.isStreamingSupported; - isRangeSupported2 = fullReader2.isRangeSupported; - fullReader2.cancel(new AbortException("Don't need fullReader2.")); - fullReaderCancelled2 = true; + fullReader.cancel(new AbortException("Don't need fullReader.")); + fullReaderCancelled = true; }); // Skipping fullReader results, requesting something from the PDF end. const tailSize = pdfLength % rangeSize || rangeSize; - const range11Reader = stream1.getRangeReader( - pdfLength - tailSize - rangeSize, - pdfLength - tailSize - ); - const range12Reader = stream1.getRangeReader( - pdfLength - tailSize, - pdfLength - ); - - const range21Reader = stream2.getRangeReader( + const range1Reader = stream.getRangeReader( pdfLength - tailSize - rangeSize, pdfLength - tailSize ); - const range22Reader = stream2.getRangeReader( - pdfLength - tailSize, - pdfLength - ); - - const result11 = { value: 0 }, - result12 = { value: 0 }; - const result21 = { value: 0 }, - result22 = { value: 0 }; + const range2Reader = stream.getRangeReader(pdfLength - tailSize, pdfLength); + const result1 = { value: 0 }, + result2 = { value: 0 }; const read = function (reader, lenResult) { return reader.read().then(function (result) { if (result.done) { @@ -180,23 +106,15 @@ describe("node_stream", function () { }; await Promise.all([ - read(range11Reader, result11), - read(range12Reader, result12), - read(range21Reader, result21), - read(range22Reader, result22), - promise1, - promise2, + read(range1Reader, result1), + read(range2Reader, result2), + promise, ]); - expect(result11.value).toEqual(rangeSize); - expect(result12.value).toEqual(tailSize); - expect(result21.value).toEqual(rangeSize); - expect(result22.value).toEqual(tailSize); - expect(isStreamingSupported1).toEqual(false); - expect(isRangeSupported1).toEqual(true); - expect(fullReaderCancelled1).toEqual(true); - expect(isStreamingSupported2).toEqual(false); - expect(isRangeSupported2).toEqual(true); - expect(fullReaderCancelled2).toEqual(true); + expect(result1.value).toEqual(rangeSize); + expect(result2.value).toEqual(tailSize); + expect(isStreamingSupported).toEqual(false); + expect(isRangeSupported).toEqual(true); + expect(fullReaderCancelled).toEqual(true); }); }); From 534a038dcb2c64e596b95d031cbb7cef883e6beb Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 4 Sep 2024 15:54:08 +0200 Subject: [PATCH 029/338] Remove the `BaseFullReader` and `BaseRangeReader` classes in the `src/display/node_stream.js` file After the previous patch these base-classes are only extended once each and they can thus be combined with the final classes. --- src/display/node_stream.js | 64 ++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 38 deletions(-) diff --git a/src/display/node_stream.js b/src/display/node_stream.js index 9223c5aa9cd92..fdc686d732788 100644 --- a/src/display/node_stream.js +++ b/src/display/node_stream.js @@ -76,7 +76,7 @@ class PDFNodeStream { } } -class BaseFullReader { +class PDFNodeStreamFsFullReader { constructor(stream) { this._url = stream.url; this._done = false; @@ -99,6 +99,24 @@ class BaseFullReader { this._readableStream = null; this._readCapability = Promise.withResolvers(); this._headersCapability = Promise.withResolvers(); + + const fs = process.getBuiltinModule("fs"); + fs.promises.lstat(this._url).then( + stat => { + // Setting right content length. + this._contentLength = stat.size; + + this._setReadableStream(fs.createReadStream(this._url)); + this._headersCapability.resolve(); + }, + error => { + if (error.code === "ENOENT") { + error = new MissingPDFException(`Missing PDF "${this._url}".`); + } + this._storedError = error; + this._headersCapability.reject(error); + } + ); } get headersReady() { @@ -191,8 +209,8 @@ class BaseFullReader { } } -class BaseRangeReader { - constructor(stream) { +class PDFNodeStreamFsRangeReader { + constructor(stream, start, end) { this._url = stream.url; this._done = false; this._storedError = null; @@ -202,6 +220,11 @@ class BaseRangeReader { this._readCapability = Promise.withResolvers(); const source = stream.source; this._isStreamingSupported = !source.disableStream; + + const fs = process.getBuiltinModule("fs"); + this._setReadableStream( + fs.createReadStream(this._url, { start, end: end - 1 }) + ); } get isStreamingSupported() { @@ -269,39 +292,4 @@ class BaseRangeReader { } } -class PDFNodeStreamFsFullReader extends BaseFullReader { - constructor(stream) { - super(stream); - - const fs = process.getBuiltinModule("fs"); - fs.promises.lstat(this._url).then( - stat => { - // Setting right content length. - this._contentLength = stat.size; - - this._setReadableStream(fs.createReadStream(this._url)); - this._headersCapability.resolve(); - }, - error => { - if (error.code === "ENOENT") { - error = new MissingPDFException(`Missing PDF "${this._url}".`); - } - this._storedError = error; - this._headersCapability.reject(error); - } - ); - } -} - -class PDFNodeStreamFsRangeReader extends BaseRangeReader { - constructor(stream, start, end) { - super(stream); - - const fs = process.getBuiltinModule("fs"); - this._setReadableStream( - fs.createReadStream(this._url, { start, end: end - 1 }) - ); - } -} - export { PDFNodeStream }; From ddb58afc90efd40e9fc3ce3d1d081001b87db624 Mon Sep 17 00:00:00 2001 From: Andrii Vitiv Date: Tue, 5 Nov 2024 19:01:56 +0200 Subject: [PATCH 030/338] Fix error on empty response headers Fixes https://github.com/mozilla/pdf.js/issues/18957 https://github.com/mozilla/pdf.js/pull/18682 introduced a regression that causes the following error: ``` Uncaught TypeError: Failed to construct 'Headers': Invalid name at PDFNetworkStreamFullRequestReader._onHeadersReceived (pdf.mjs:10214:29) at NetworkManager.onStateChange (pdf.mjs:10103:22) ``` The mentioned PR replaced a call to `getResponseHeader()` with `getAllResponseHeaders()` without handling cases where it may return null or an empty string. Quote from the [docs](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#return_value): > Returns: > >A string representing all of the response's headers (except those whose field name is Set-Cookie) separated by CRLF, or null if no response has been received. If a network error happened, an empty string is returned. Run the following code and observe the error in the console. Note that the URL is intentionally set to an invalid value to simulate network error ```js ``` --- src/display/network.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/display/network.js b/src/display/network.js index 8ce4e1356cff6..9bf7aec9610db 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -273,15 +273,17 @@ class PDFNetworkStreamFullRequestReader { const fullRequestXhrId = this._fullRequestId; const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders(); const responseHeaders = new Headers( - fullRequestXhr - .getAllResponseHeaders() - .trim() - .split(/[\r\n]+/) - .map(x => { - const [key, ...val] = x.split(": "); - return [key, val.join(": ")]; - }) + rawResponseHeaders + ? rawResponseHeaders + .trim() + .split(/[\r\n]+/) + .map(x => { + const [key, ...val] = x.split(": "); + return [key, val.join(": ")]; + }) + : [] ); const { allowRangeRequests, suggestedLength } = From 9a651c0f98569be836fca705d1fda19fed16ae29 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 5 Nov 2024 16:42:31 +0100 Subject: [PATCH 031/338] Try to improve handling of missing trailer dictionaries in `XRef.indexObjects` (issue 18986) The problem with the referenced PDF document has nothing to do with invalid dates, as the issue seems to suggest, but rather with the fact that it has neither an XRef table nor a trailer dictionary. Given that crucial parts of the internal document structure is missing, you might argue that it's not really a PDF document. In an attempt to support this kind of corruption, we'll simply iterate through all (previously found) XRef entries and pick one that *might* be a valid /Root dictionary. There's obviously no guarantee that this works, and it might not be fast in larger PDF documents, but at least it cannot be any worse than *immediately* throwing `InvalidPDFException` as we previously did here. *Please note:* I'm totally fine with this patch being rejected, since it's somewhat questionable if we should actually attempt to support "PDF documents" with this level of corruption. --- src/core/xref.js | 25 +++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue18986.pdf | Bin 0 -> 862 bytes test/test_manifest.json | 7 +++++++ test/unit/api_spec.js | 2 +- 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue18986.pdf diff --git a/src/core/xref.js b/src/core/xref.js index 313f18a71d917..75e5d1626d4e1 100644 --- a/src/core/xref.js +++ b/src/core/xref.js @@ -680,6 +680,31 @@ class XRef { if (this.topDict) { return this.topDict; } + + // When no trailer dictionary candidate exists, try picking the first + // dictionary that contains a /Root entry (fixes issue18986.pdf). + if (!trailerDicts.length) { + for (const [num, entry] of this.entries.entries()) { + if (!entry) { + continue; + } + const ref = Ref.get(num, entry.gen); + let obj; + + try { + obj = this.fetch(ref); + } catch { + continue; + } + if (obj instanceof BaseStream) { + obj = obj.dict; + } + if (obj instanceof Dict && obj.has("Root")) { + return obj; + } + } + } + // nothing helps throw new InvalidPDFException("Invalid PDF structure."); } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index b10be1106d6b6..4bf8b655473e2 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -156,6 +156,7 @@ !bug1020858.pdf !prefilled_f1040.pdf !bug1050040.pdf +!issue18986.pdf !bug1200096.pdf !bug1068432.pdf !issue12295.pdf diff --git a/test/pdfs/issue18986.pdf b/test/pdfs/issue18986.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f23047bf73c0bc81aa6d8de0c8e8ca8af43ba985 GIT binary patch literal 862 zcmZuv;cnV65Ki}Rc?$ojnrP~r&_ZECNF*U~D6A;3tr|j8N)DO|V&pg)?A@k4(q3Wb zq$Ox=tmw{npMCdzzVnIaU)mq9bemX&KRoH(E}b2AKqv7Ua_aITlf>cg^B9)b)6nTww8~?>h*FdAl~Zg+R7y_6;#Flo1zhyu>@k# zF(hg1@crCEShLe4?d!&Z&P2L>6?6sPy$ViZ0g9b!kw%d7LM$OCib90UGl|)psFqI{ zv~YXck{io-!`G!=qxirJN$)an`KH)rWpKY^?(<(Y?k4eyiPxv?x8SNUC9)`ewXm=p`V3HYD@76O9V^anok{Z|k<-e#C|mdXtn zY&ISdlpq0-W^0nbmYcL+$VV;^Qx-41iQq}G1QnbX4^Oa^=!FTYldjS-d<%!4TqL<+ z)~wn!tB7++lyDIZvlSZJ`p37Lsy?~Y8vKspN`QXm~2PPTwMgRZ+ literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 7cfd0356ee2fc..65cff4331dbd0 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -4727,6 +4727,13 @@ "link": false, "type": "eq" }, + { + "id": "issue18986", + "file": "pdfs/issue18986.pdf", + "md5": "e147084fabd9677366f6ae3586dd311b", + "rounds": 1, + "type": "load" + }, { "id": "issue6652", "file": "pdfs/issue6652.pdf", diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index bb78c9c32b31d..62380c6d3dba6 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -623,7 +623,7 @@ describe("api", function () { expect(false).toEqual(true); } catch (reason) { expect(reason instanceof InvalidPDFException).toEqual(true); - expect(reason.message).toEqual("Invalid PDF structure."); + expect(reason.message).toEqual("Invalid Root reference."); } await loadingTask.destroy(); From 17911d351ba3339806e1466afb7c0837d83725b1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 5 Nov 2024 13:55:13 +0100 Subject: [PATCH 032/338] Shorten a few helper functions in `src/core/core_utils.js` In a few cases we can ever so slightly shorten the code without negatively impacting the readability. --- src/core/core_utils.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/core/core_utils.js b/src/core/core_utils.js index 58c721f387283..96612c4e9d995 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -166,14 +166,13 @@ function toRomanNumerals(number, lowerCase = false) { "The number should be a positive integer." ); const romanBuf = []; - let pos; // Thousands while (number >= 1000) { number -= 1000; romanBuf.push("M"); } // Hundreds - pos = (number / 100) | 0; + let pos = (number / 100) | 0; number %= 100; romanBuf.push(ROMAN_NUMBER_MAP[pos]); // Tens @@ -191,10 +190,7 @@ function toRomanNumerals(number, lowerCase = false) { // native function in the sense that it returns the ceiling value and that it // returns 0 instead of `Infinity`/`NaN` for `x` values smaller than/equal to 0. function log2(x) { - if (x <= 0) { - return 0; - } - return Math.ceil(Math.log2(x)); + return x > 0 ? Math.ceil(Math.log2(x)) : 0; } function readInt8(data, offset) { @@ -573,13 +569,10 @@ function recoverJsURL(str) { const jsUrl = regex.exec(str); if (jsUrl?.[2]) { - const url = jsUrl[2]; - let newWindow = false; - - if (jsUrl[3] === "true" && jsUrl[1] === "app.launchURL") { - newWindow = true; - } - return { url, newWindow }; + return { + url: jsUrl[2], + newWindow: jsUrl[1] === "app.launchURL" && jsUrl[3] === "true", + }; } return null; From aff4f6e859a9af9ae457dd0b6307e31de3dba334 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 4 Nov 2024 14:09:34 +0100 Subject: [PATCH 033/338] Add helper functions to load image blob/bitmap data in `test/unit/api_spec.js` This avoids repeating the same code multiple times, and as part of the changes we'll also utilize existing PDF.js helpers more. --- test/unit/api_spec.js | 68 ++++++++++++++----------------------------- 1 file changed, 22 insertions(+), 46 deletions(-) diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 62380c6d3dba6..d73d23225725f 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -46,6 +46,7 @@ import { RenderTask, } from "../../src/display/api.js"; import { + fetchData as fetchDataDOM, PageViewport, RenderingCancelledException, StatTimer, @@ -117,6 +118,21 @@ describe("api", function () { return node; } + async function getImageBlob(filename) { + if (isNodeJS) { + throw new Error("Not implemented."); + } + const TEST_IMAGES_PATH = "../images/"; + const url = new URL(TEST_IMAGES_PATH + filename, window.location).href; + + return fetchDataDOM(url, /* type = */ "blob"); + } + + async function getImageBitmap(filename) { + const blob = await getImageBlob(filename); + return createImageBitmap(blob); + } + describe("getDocument", function () { it("creates pdf doc from URL-string", async function () { const urlStr = TEST_PDFS_PATH + basicApiFileName; @@ -2472,14 +2488,7 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } - - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); - const bitmap = await createImageBitmap(blob); + const bitmap = await getImageBitmap("firefox_logo.png"); let loadingTask = getDocument(buildGetDocumentParams("empty.pdf")); let pdfDoc = await loadingTask.promise; @@ -2524,14 +2533,7 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } - - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); - const bitmap = await createImageBitmap(blob); + const bitmap = await getImageBitmap("firefox_logo.png"); let loadingTask = getDocument(buildGetDocumentParams("bug1823296.pdf")); let pdfDoc = await loadingTask.promise; @@ -2636,14 +2638,7 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } - - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); - const bitmap = await createImageBitmap(blob); + const bitmap = await getImageBitmap("firefox_logo.png"); let loadingTask = getDocument( buildGetDocumentParams("pdfjs_wikipedia.pdf") @@ -2734,13 +2729,8 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } + const blob = await getImageBlob("firefox_logo.png"); - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); let loadingTask, pdfDoc; let data = buildGetDocumentParams("empty.pdf"); @@ -2804,14 +2794,7 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } - - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); - const bitmap = await createImageBitmap(blob); + const bitmap = await getImageBitmap("firefox_logo.png"); let loadingTask = getDocument(buildGetDocumentParams("empty.pdf")); let pdfDoc = await loadingTask.promise; @@ -2860,14 +2843,7 @@ describe("api", function () { if (isNodeJS) { pending("Cannot create a bitmap from Node.js."); } - - const TEST_IMAGES_PATH = "../images/"; - const filename = "firefox_logo.png"; - const path = new URL(TEST_IMAGES_PATH + filename, window.location).href; - - const response = await fetch(path); - const blob = await response.blob(); - const bitmap = await createImageBitmap(blob); + const bitmap = await getImageBitmap("firefox_logo.png"); let loadingTask = getDocument(buildGetDocumentParams("empty.pdf")); let pdfDoc = await loadingTask.promise; From be9e74d50d09c3961ce5c7aa08ccfeab84a4fd25 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 4 Nov 2024 10:37:35 +0100 Subject: [PATCH 034/338] Bump library version to `4.9` --- pdfjs.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdfjs.config b/pdfjs.config index 3b14037b00b89..5c7ef67fa98a4 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { "stableVersion": "4.8.69", - "baseVersion": "2a4630f89a2ff7b8e2197ff532124555639a156b", - "versionPrefix": "4.8." + "baseVersion": "cefd1ebcd239d906758d0f7a601238a1980d5631", + "versionPrefix": "4.9." } From 6e6470ec45645f29aaedceda54d9fc2624b397dd Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 5 Nov 2024 22:04:47 +0100 Subject: [PATCH 035/338] Simplify toRomanNumerals function --- src/core/core_utils.js | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/core/core_utils.js b/src/core/core_utils.js index 96612c4e9d995..cd892ed6ff6c3 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -165,25 +165,13 @@ function toRomanNumerals(number, lowerCase = false) { Number.isInteger(number) && number > 0, "The number should be a positive integer." ); - const romanBuf = []; - // Thousands - while (number >= 1000) { - number -= 1000; - romanBuf.push("M"); - } - // Hundreds - let pos = (number / 100) | 0; - number %= 100; - romanBuf.push(ROMAN_NUMBER_MAP[pos]); - // Tens - pos = (number / 10) | 0; - number %= 10; - romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); - // Ones - romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); // eslint-disable-line unicorn/no-array-push-push - - const romanStr = romanBuf.join(""); - return lowerCase ? romanStr.toLowerCase() : romanStr; + + const roman = + "M".repeat((number / 1000) | 0) + + ROMAN_NUMBER_MAP[((number % 1000) / 100) | 0] + + ROMAN_NUMBER_MAP[10 + (((number % 100) / 10) | 0)] + + ROMAN_NUMBER_MAP[20 + (number % 10)]; + return lowerCase ? roman.toLowerCase() : roman; } // Calculate the base 2 logarithm of the number `x`. This differs from the From 243cf7efd9e617ec27e55ad3850a54176cc27a50 Mon Sep 17 00:00:00 2001 From: Pascal Maximilian Bremer <8161919+Bomberus@users.noreply.github.com> Date: Sun, 29 Sep 2024 02:23:20 +0200 Subject: [PATCH 036/338] Fix Typo:XFATemplate class Para Styling paddingight => paddingRight --- src/core/xfa/template.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/xfa/template.js b/src/core/xfa/template.js index 96d18930c1c53..56fc4d4fcf568 100644 --- a/src/core/xfa/template.js +++ b/src/core/xfa/template.js @@ -4317,7 +4317,7 @@ class Para extends XFAObject { style.paddingLeft = measureToString(this.marginLeft); } if (this.marginRight !== "") { - style.paddingight = measureToString(this.marginRight); + style.paddingRight = measureToString(this.marginRight); } if (this.spaceAbove !== "") { style.paddingTop = measureToString(this.spaceAbove); From b659a80a5704b75d215c0eca0018b93ddc771d42 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sat, 9 Nov 2024 22:30:41 +0100 Subject: [PATCH 037/338] Set the padding of the buttons in the toolbars to zero It fixes #19008. In Firefox on mac, the default padding is set to 4px and with Firefox for iOS, it's set to 13px. The padding is useless for such buttons. --- web/annotation_editor_layer_builder.css | 4 ++++ web/viewer.css | 1 + 2 files changed, 5 insertions(+) diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index ec539946a7ce2..9592b9a744f24 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -309,6 +309,10 @@ gap: 0; height: 100%; + button { + padding: 0; + } + .divider { width: 0; height: calc( diff --git a/web/viewer.css b/web/viewer.css index 4b2b25ac9be0b..3629d5eb2a514 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -996,6 +996,7 @@ dialog :link { font: message-box; flex: none; position: relative; + padding: 0; > span { display: inline-block; From 0459873192c6c61463ea2b6d865ebe0805291558 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 10 Nov 2024 16:27:19 +0100 Subject: [PATCH 038/338] Shorten the `Page.prototype.userUnit` getter slightly --- src/core/document.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/document.js b/src/core/document.js index 25952d0016979..ba17fdc2ab082 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -74,7 +74,6 @@ import { writeObject } from "./writer.js"; import { XFAFactory } from "./xfa/factory.js"; import { XRef } from "./xref.js"; -const DEFAULT_USER_UNIT = 1.0; const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; class Page { @@ -195,11 +194,12 @@ class Page { } get userUnit() { - let obj = this.pageDict.get("UserUnit"); - if (typeof obj !== "number" || obj <= 0) { - obj = DEFAULT_USER_UNIT; - } - return shadow(this, "userUnit", obj); + const obj = this.pageDict.get("UserUnit"); + return shadow( + this, + "userUnit", + typeof obj === "number" && obj > 0 ? obj : 1.0 + ); } get view() { From bdda61df30d6f8443072550b4ba6a4c5ab1fcbaa Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 8 Nov 2024 11:29:24 +0100 Subject: [PATCH 039/338] [api-minor] Replace the `canvas` package with `@napi-rs/canvas` The `@napi-rs/canvas` package has fewer dependencies, which should *hopefully* make installing and using it easier for `pdfjs-dist` end-users. (Over the years we've seen, repeatedly, that `canvas` can be difficult to install successfully.) Furthermore, this package includes more functionality (such as `Path2D`) which reduces the overall number of dependencies in the PDF.js project. One point to note is that `@napi-rs/canvas` is a fair bit newer than `canvas`, and has a lot fewer users, however looking at the commit history it does seem to be actively maintained. Note that I've successfully tested the [Node.js examples](https://github.com/mozilla/pdf.js/tree/master/examples/node), in particular the `pdf2png` one, with this patch applied and things appear to work fine. Please see: - https://www.npmjs.com/package/@napi-rs/canvas - https://github.com/Brooooooklyn/canvas --- README.md | 3 - examples/node/pdf2png/README.md | 6 +- examples/node/pdf2png/pdf2png.mjs | 2 +- gulpfile.mjs | 3 +- package-lock.json | 238 ++++++++++++++++++++++-------- package.json | 3 +- src/display/node_utils.js | 37 +---- 7 files changed, 188 insertions(+), 104 deletions(-) diff --git a/README.md b/README.md index 74d8706bdacec..065e2551db119 100644 --- a/README.md +++ b/README.md @@ -57,9 +57,6 @@ all dependencies for PDF.js: $ npm install -> [!NOTE] -> On MacOS M1/M2 you may see some `node-gyp`-related errors when running `npm install`. This is because one of our dependencies, `"canvas"`, does not provide pre-built binaries for this platform and instead `npm` will try to build it from source. Please make sure to first install the necessary native dependencies using `brew`: https://github.com/Automattic/node-canvas#compiling. - Finally, you need to start a local web server as some browsers do not allow opening PDF files using a `file://` URL. Run: diff --git a/examples/node/pdf2png/README.md b/examples/node/pdf2png/README.md index 00b388b9f606e..8b114061b2361 100644 --- a/examples/node/pdf2png/README.md +++ b/examples/node/pdf2png/README.md @@ -9,9 +9,7 @@ Install the dependencies and build the PDF.js library: $ npm install $ gulp dist-install -Install the Node canvas library and run the example to convert the first page of a -PDF file to a PNG image: +Run the example to convert the first page of a PDF file to a PNG image: - $ npm install canvas $ cd examples/node/pdf2png - $ node pdf2png.js + $ node pdf2png.mjs diff --git a/examples/node/pdf2png/pdf2png.mjs b/examples/node/pdf2png/pdf2png.mjs index 359fc807bea97..ed01834b07571 100644 --- a/examples/node/pdf2png/pdf2png.mjs +++ b/examples/node/pdf2png/pdf2png.mjs @@ -57,7 +57,7 @@ try { const renderTask = page.render(renderContext); await renderTask.promise; // Convert the canvas to an image buffer. - const image = canvasAndContext.canvas.toBuffer(); + const image = canvasAndContext.canvas.toBuffer("image/png"); fs.writeFile("output.png", image, function (error) { if (error) { console.error("Error: " + error); diff --git a/gulpfile.mjs b/gulpfile.mjs index 1f8a29dae73de..ff4802cc1f785 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2256,8 +2256,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - canvas: "^3.0.0-rc2", - path2d: "^0.2.1", + "@napi-rs/canvas": "^0.1.60", }, browser: { canvas: false, diff --git a/package-lock.json b/package-lock.json index 0f96a62a675bb..dc1270cb909f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,11 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", + "@napi-rs/canvas": "^0.1.60", "@types/node": "^22.8.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001677", - "canvas": "^3.0.0-rc2", "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", @@ -42,7 +42,6 @@ "metalsmith": "^2.6.3", "metalsmith-html-relative": "^2.0.5", "ordered-read-streams": "^2.0.0", - "path2d": "^0.2.1", "pngjs": "^7.0.0", "postcss": "^8.4.47", "postcss-dark-theme-class": "^1.3.0", @@ -2286,6 +2285,180 @@ "metalsmith": "^2.5.0" } }, + "node_modules/@napi-rs/canvas": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.60.tgz", + "integrity": "sha512-2a/8ynCHVXu9JVTeT/RLrZy6kro3VHnxDqy7SyHIdzCUUwJoKuKNmDzXjD6bqE0W/07j1lFW7OVIAYSr1GiWuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@napi-rs/canvas-android-arm64": "0.1.60", + "@napi-rs/canvas-darwin-arm64": "0.1.60", + "@napi-rs/canvas-darwin-x64": "0.1.60", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.60", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.60", + "@napi-rs/canvas-linux-arm64-musl": "0.1.60", + "@napi-rs/canvas-linux-x64-gnu": "0.1.60", + "@napi-rs/canvas-linux-x64-musl": "0.1.60", + "@napi-rs/canvas-win32-x64-msvc": "0.1.60" + } + }, + "node_modules/@napi-rs/canvas-android-arm64": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.60.tgz", + "integrity": "sha512-KNOBYH3BUfUl5mo5wvrA2C+tJk0RnF4InkbsCoHdsxjhLjbriJKmu5DCFLaiG/c6WPfTcLRz73bGcP7boVeb6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-arm64": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.60.tgz", + "integrity": "sha512-j6PA7RwRcx0409Jk3zz6beq3EtvwEgvN46FyKgFnSnzoV0ey2kM+KI2XTpG3tE/v4+fTnQenR+ysUBEgtWuUuA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-darwin-x64": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.60.tgz", + "integrity": "sha512-k0uBuShNK7QnOJlLhzxSsnSdJMkiU8VexqvuTEi0qABqKkHrYzD0ezUgtyvaVLOOoqxwGy1Hh5ZoEze5s9H/6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.60.tgz", + "integrity": "sha512-X2cQ6MIDZn5dMsy9jakASM6tvo2PGd3dq25gqrUzJeQIngQhLIWZtaYWza3md3M6HoQ4b/6W81OVQhgL/8uTkA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-gnu": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.60.tgz", + "integrity": "sha512-Ch02kQsetlXA4tfHfSJ63oyq9EbYB00yy/6hZ0/VYh60pLnopvsMt682+cM+rGBbgm14G+Heh3rDzJ6zBiiocw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-arm64-musl": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.60.tgz", + "integrity": "sha512-7TpSJM4RnhHnAMrA/bDXitNVx9TV8ZLQ/47QHsNhdZ77yCgcEyLBRgUGvjsmnUpWIHhTOWTHDlGY47zHcQDfhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-gnu": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.60.tgz", + "integrity": "sha512-46yi+fIUQ5SRg0Qs3L04zh67kk0uFJa2elWt/cS/7kEydu06uhjbJwW3123J9KShu2PKLlaZEqxJPksYpowoeA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-linux-x64-musl": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.60.tgz", + "integrity": "sha512-lTKiv5VnccFyZAd27AL6t69djDXQlfUgVE03PTM5HZUUy0h7sQKnrGh2mSMq58E3/vA0k65IFDqVqxyLjCpvlw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/canvas-win32-x64-msvc": { + "version": "0.1.60", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.60.tgz", + "integrity": "sha512-b7VjNQ3V/7G6VQqB8KvG9A06ENFZhxFMe4areUduipFwuJ0w35PGgOmYZHd0+iY9Nh7niECjgPRNDcrzpDlWXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3739,22 +3912,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/canvas": { - "version": "3.0.0-rc2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-3.0.0-rc2.tgz", - "integrity": "sha512-esx4bYDznnqgRX4G8kaEaf0W3q8xIc51WpmrIitDzmcoEgwnv9wSKdzT6UxWZ4wkVu5+ileofppX0TpyviJRdQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1", - "simple-get": "^3.0.3" - }, - "engines": { - "node": "^18.12.0 || >= 20.9.0" - } - }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", @@ -4525,18 +4682,6 @@ "node": ">=0.10.0" } }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -9381,18 +9526,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -10143,16 +10276,6 @@ "node": ">=8" } }, - "node_modules/path2d": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/path2d/-/path2d-0.2.1.tgz", - "integrity": "sha512-Fl2z/BHvkTNvkuBzYTpTuirHZg6wW9z8+4SND/3mDTEcYbbNKWAy21dz9D3ePNNwrrK8pqZO5vLPZ1hLF6T7XA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -11671,17 +11794,6 @@ } ] }, - "node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dev": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", diff --git a/package.json b/package.json index a8d26f3bfdef5..de2ae98c7ac9e 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", + "@napi-rs/canvas": "^0.1.60", "@types/node": "^22.8.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001677", - "canvas": "^3.0.0-rc2", "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", @@ -37,7 +37,6 @@ "metalsmith": "^2.6.3", "metalsmith-html-relative": "^2.0.5", "ordered-read-streams": "^2.0.0", - "path2d": "^0.2.1", "pngjs": "^7.0.0", "postcss": "^8.4.47", "postcss-dark-theme-class": "^1.3.0", diff --git a/src/display/node_utils.js b/src/display/node_utils.js index 81ed9375bbf7d..6518e32d9686c 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -31,50 +31,29 @@ if ( !PDFJSDev.test("SKIP_BABEL") && isNodeJS ) { - let canvas, path2d; + let canvas; try { const require = process .getBuiltinModule("module") .createRequire(import.meta.url); try { - canvas = require("canvas"); + canvas = require("@napi-rs/canvas"); } catch (ex) { - warn(`Cannot load "canvas" package: "${ex}".`); - } - try { - path2d = require("path2d"); - } catch (ex) { - warn(`Cannot load "path2d" package: "${ex}".`); + warn(`Cannot load "@napi-rs/canvas" package: "${ex}".`); } } catch {} if (!globalThis.DOMMatrix) { - const DOMMatrix = canvas?.DOMMatrix; - - if (DOMMatrix) { - globalThis.DOMMatrix = DOMMatrix; + if (canvas?.DOMMatrix) { + globalThis.DOMMatrix = canvas.DOMMatrix; } else { warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); } } if (!globalThis.Path2D) { - const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D; - const applyPath2DToCanvasRenderingContext = - path2d?.applyPath2DToCanvasRenderingContext; - const Path2D = path2d?.Path2D; - - if ( - CanvasRenderingContext2D && - applyPath2DToCanvasRenderingContext && - Path2D - ) { - try { - applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D); - } catch (ex) { - warn(`applyPath2DToCanvasRenderingContext: "${ex}".`); - } - globalThis.Path2D = Path2D; + if (canvas?.Path2D) { + globalThis.Path2D = canvas.Path2D; } else { warn("Cannot polyfill `Path2D`, rendering may be broken."); } @@ -97,7 +76,7 @@ class NodeCanvasFactory extends BaseCanvasFactory { const require = process .getBuiltinModule("module") .createRequire(import.meta.url); - const canvas = require("canvas"); + const canvas = require("@napi-rs/canvas"); return canvas.createCanvas(width, height); } } From 8339ec401baf843fdc96f52561f51aa06fe9c54d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 9 Nov 2024 12:58:18 +0100 Subject: [PATCH 040/338] Polyfill `ImageData` in Node.js environments Given that `ImageData` has been supported for many years in all browsers, see [MDN](https://developer.mozilla.org/en-US/docs/Web/API/ImageData#browser_compatibility), we have a `typeof` check that's only necessary in Node.js environments. Since the `@napi-rs/canvas` package provides that functionality, we can thus add an `ImageData` polyfill which allows us to ever so slightly simplify the code. --- src/display/canvas.js | 2 +- src/display/node_utils.js | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/display/canvas.js b/src/display/canvas.js index 098741ce9d275..a7b16572fc4b4 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -586,7 +586,7 @@ class CanvasExtraState { } function putBinaryImageData(ctx, imgData) { - if (typeof ImageData !== "undefined" && imgData instanceof ImageData) { + if (imgData instanceof ImageData) { ctx.putImageData(imgData, 0, 0); return; } diff --git a/src/display/node_utils.js b/src/display/node_utils.js index 6518e32d9686c..4edd7bb3a467c 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -51,6 +51,13 @@ if ( warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); } } + if (!globalThis.ImageData) { + if (canvas?.ImageData) { + globalThis.ImageData = canvas.ImageData; + } else { + warn("Cannot polyfill `ImageData`, rendering may be broken."); + } + } if (!globalThis.Path2D) { if (canvas?.Path2D) { globalThis.Path2D = canvas.Path2D; From ff6722ff7e5e4e033076fa94be22bdaa375457aa Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 11 Nov 2024 15:38:12 +0100 Subject: [PATCH 041/338] Apply gradient when stroking text It fixes #19022. I noticed that the glyph contours weren't correct (for T and x) and because we forgot to close the contour. --- src/display/canvas.js | 53 ++++++++++++++++++++++++++++------- src/display/font_loader.js | 3 ++ test/pdfs/issue19022.pdf.link | 1 + test/test_manifest.json | 8 ++++++ 4 files changed, 55 insertions(+), 10 deletions(-) create mode 100644 test/pdfs/issue19022.pdf.link diff --git a/src/display/canvas.js b/src/display/canvas.js index a7b16572fc4b4..debeca6a55047 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -484,6 +484,7 @@ class CanvasExtraState { this.fillColor = "#000000"; this.strokeColor = "#000000"; this.patternFill = false; + this.patternStroke = false; // Note: fill alpha applies to all non-stroking operations this.fillAlpha = 1; this.strokeAlpha = 1; @@ -2001,7 +2002,7 @@ class CanvasGraphics { this.moveText(0, this.current.leading); } - paintChar(character, x, y, patternTransform) { + paintChar(character, x, y, patternFillTransform, patternStrokeTransform) { const ctx = this.ctx; const current = this.current; const font = current.font; @@ -2013,30 +2014,39 @@ class CanvasGraphics { textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG ); const patternFill = current.patternFill && !font.missingFile; + const patternStroke = current.patternStroke && !font.missingFile; let addToPath; - if (font.disableFontFace || isAddToPathSet || patternFill) { + if ( + font.disableFontFace || + isAddToPathSet || + patternFill || + patternStroke + ) { addToPath = font.getPathGenerator(this.commonObjs, character); } - if (font.disableFontFace || patternFill) { + if (font.disableFontFace || patternFill || patternStroke) { ctx.save(); ctx.translate(x, y); ctx.beginPath(); addToPath(ctx, fontSize); - if (patternTransform) { - ctx.setTransform(...patternTransform); - } if ( fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE ) { + if (patternFillTransform) { + ctx.setTransform(...patternFillTransform); + } ctx.fill(); } if ( fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE ) { + if (patternStrokeTransform) { + ctx.setTransform(...patternStrokeTransform); + } ctx.stroke(); } ctx.restore(); @@ -2127,7 +2137,7 @@ class CanvasGraphics { ctx.scale(textHScale, 1); } - let patternTransform; + let patternFillTransform, patternStrokeTransform; if (current.patternFill) { ctx.save(); const pattern = current.fillColor.getPattern( @@ -2136,11 +2146,24 @@ class CanvasGraphics { getCurrentTransformInverse(ctx), PathType.FILL ); - patternTransform = getCurrentTransform(ctx); + patternFillTransform = getCurrentTransform(ctx); ctx.restore(); ctx.fillStyle = pattern; } + if (current.patternStroke) { + ctx.save(); + const pattern = current.strokeColor.getPattern( + ctx, + this, + getCurrentTransformInverse(ctx), + PathType.STROKE + ); + patternStrokeTransform = getCurrentTransform(ctx); + ctx.restore(); + ctx.strokeStyle = pattern; + } + let lineWidth = current.lineWidth; const scale = current.textMatrixScale; if (scale === 0 || lineWidth === 0) { @@ -2233,7 +2256,13 @@ class CanvasGraphics { // common case ctx.fillText(character, scaledX, scaledY); } else { - this.paintChar(character, scaledX, scaledY, patternTransform); + this.paintChar( + character, + scaledX, + scaledY, + patternFillTransform, + patternStrokeTransform + ); if (accent) { const scaledAccentX = scaledX + (fontSize * accent.offset.x) / fontSizeScale; @@ -2243,7 +2272,8 @@ class CanvasGraphics { accent.fontChar, scaledAccentX, scaledAccentY, - patternTransform + patternFillTransform, + patternStrokeTransform ); } } @@ -2379,6 +2409,7 @@ class CanvasGraphics { setStrokeColorN() { this.current.strokeColor = this.getColorN_Pattern(arguments); + this.current.patternStroke = true; } setFillColorN() { @@ -2392,10 +2423,12 @@ class CanvasGraphics { g, b ); + this.current.patternStroke = false; } setStrokeTransparent() { this.ctx.strokeStyle = this.current.strokeColor = "transparent"; + this.current.patternStroke = false; } setFillRGBColor(r, g, b) { diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 1ec7160c8500a..f0012eb358e0b 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -498,6 +498,9 @@ class FontFaceObject { break; } } + // From https://learn.microsoft.com/en-us/typography/opentype/spec/cff2#paths + // All contours must be closed with a lineto operation. + commands.push(ctx => ctx.closePath()); return (this.compiledGlyphs[character] = function glyphDrawer(ctx, size) { commands[0](ctx); diff --git a/test/pdfs/issue19022.pdf.link b/test/pdfs/issue19022.pdf.link new file mode 100644 index 0000000000000..dc560b6072c31 --- /dev/null +++ b/test/pdfs/issue19022.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/17703776/linear-gradient-on-rect_text.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 65cff4331dbd0..47c214b502a57 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10757,5 +10757,13 @@ "md5": "73e8cd32bd063e42fcc4b270c78549b1", "rounds": 1, "type": "eq" + }, + { + "id": "issue19022", + "file": "pdfs/issue19022.pdf", + "md5": "7d7a9c45f93a9db269800855ccffe7cd", + "rounds": 1, + "type": "eq", + "link": true } ] From d45136ba009f3387620edfaf1c52bbbc64e71ab3 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 11 Nov 2024 17:58:36 +0100 Subject: [PATCH 042/338] Disable ref test 'issue18896' for Chrome because it takes too much time --- test/driver.js | 7 +++++++ test/test_manifest.json | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/test/driver.js b/test/driver.js index cb27734934b5f..c99b82744fe22 100644 --- a/test/driver.js +++ b/test/driver.js @@ -577,6 +577,13 @@ class Driver { return; } + if (task.noChrome && window?.chrome) { + this._log(`Skipping file "${task.file}" (because on Chrome)\n`); + this.currentTask++; + this._nextTask(); + return; + } + this._log('Loading file "' + task.file + '"\n'); try { diff --git a/test/test_manifest.json b/test/test_manifest.json index 47c214b502a57..a7435ad0f0c66 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10749,7 +10749,8 @@ "rounds": 1, "type": "eq", "link": true, - "talos": false + "talos": false, + "noChrome": true }, { "id": "issue18956", From 258676e53f96e224fcda3d647c19e91006d0c625 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 10 Nov 2024 20:54:42 +0100 Subject: [PATCH 043/338] Simplify saving added/modified annotations. Having this map to collect the different changes will allow to know if some objects have already been modified. --- src/core/annotation.js | 182 +++++++++++++--------------- src/core/document.js | 41 +++---- src/core/primitives.js | 4 + src/core/struct_tree.js | 32 +++-- src/core/worker.js | 38 +++--- src/core/writer.js | 72 ++++++------ test/unit/annotation_spec.js | 222 +++++++++++++++++------------------ test/unit/writer_spec.js | 41 ++++--- 8 files changed, 301 insertions(+), 331 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index fe48f13872d52..365503cfe8b20 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -68,7 +68,6 @@ import { FileSpec } from "./file_spec.js"; import { JpegStream } from "./jpeg_stream.js"; import { ObjectLoader } from "./object_loader.js"; import { OperatorList } from "./operator_list.js"; -import { writeObject } from "./writer.js"; import { XFAFactory } from "./xfa/factory.js"; class AnnotationFactory { @@ -332,10 +331,15 @@ class AnnotationFactory { return imagePromises; } - static async saveNewAnnotations(evaluator, task, annotations, imagePromises) { + static async saveNewAnnotations( + evaluator, + task, + annotations, + imagePromises, + changes + ) { const xref = evaluator.xref; let baseFontRef; - const dependencies = []; const promises = []; const { isOffscreenCanvasSupported } = evaluator.options; @@ -351,38 +355,33 @@ class AnnotationFactory { baseFont.set("Type", Name.get("Font")); baseFont.set("Subtype", Name.get("Type1")); baseFont.set("Encoding", Name.get("WinAnsiEncoding")); - const buffer = []; baseFontRef = xref.getNewTemporaryRef(); - await writeObject(baseFontRef, baseFont, buffer, xref); - dependencies.push({ ref: baseFontRef, data: buffer.join("") }); + changes.put(baseFontRef, { + data: baseFont, + }); } promises.push( - FreeTextAnnotation.createNewAnnotation( - xref, - annotation, - dependencies, - { evaluator, task, baseFontRef } - ) + FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, { + evaluator, + task, + baseFontRef, + }) ); break; case AnnotationEditorType.HIGHLIGHT: if (annotation.quadPoints) { promises.push( - HighlightAnnotation.createNewAnnotation( - xref, - annotation, - dependencies - ) + HighlightAnnotation.createNewAnnotation(xref, annotation, changes) ); } else { promises.push( - InkAnnotation.createNewAnnotation(xref, annotation, dependencies) + InkAnnotation.createNewAnnotation(xref, annotation, changes) ); } break; case AnnotationEditorType.INK: promises.push( - InkAnnotation.createNewAnnotation(xref, annotation, dependencies) + InkAnnotation.createNewAnnotation(xref, annotation, changes) ); break; case AnnotationEditorType.STAMP: @@ -391,26 +390,23 @@ class AnnotationFactory { : null; if (image?.imageStream) { const { imageStream, smaskStream } = image; - const buffer = []; if (smaskStream) { const smaskRef = xref.getNewTemporaryRef(); - await writeObject(smaskRef, smaskStream, buffer, xref); - dependencies.push({ ref: smaskRef, data: buffer.join("") }); + changes.put(smaskRef, { + data: smaskStream, + }); imageStream.dict.set("SMask", smaskRef); - buffer.length = 0; } const imageRef = (image.imageRef = xref.getNewTemporaryRef()); - await writeObject(imageRef, imageStream, buffer, xref); - dependencies.push({ ref: imageRef, data: buffer.join("") }); + changes.put(imageRef, { + data: imageStream, + }); image.imageStream = image.smaskStream = null; } promises.push( - StampAnnotation.createNewAnnotation( - xref, - annotation, - dependencies, - { image } - ) + StampAnnotation.createNewAnnotation(xref, annotation, changes, { + image, + }) ); break; } @@ -418,7 +414,6 @@ class AnnotationFactory { return { annotations: await Promise.all(promises), - dependencies, }; } @@ -1227,7 +1222,7 @@ class Annotation { return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas }; } - async save(evaluator, task, annotationStorage) { + async save(evaluator, task, annotationStorage, changes) { return null; } @@ -1758,14 +1753,13 @@ class MarkupAnnotation extends Annotation { this._streams.push(this.appearance, appearanceStream); } - static async createNewAnnotation(xref, annotation, dependencies, params) { + static async createNewAnnotation(xref, annotation, changes, params) { if (!annotation.ref) { annotation.ref = xref.getNewTemporaryRef(); } const annotationRef = annotation.ref; const ap = await this.createNewAppearanceStream(annotation, xref, params); - const buffer = []; let annotationDict; if (ap) { @@ -1773,8 +1767,9 @@ class MarkupAnnotation extends Annotation { annotationDict = this.createNewDict(annotation, xref, { apRef, }); - await writeObject(apRef, ap, buffer, xref); - dependencies.push({ ref: apRef, data: buffer.join("") }); + changes.put(apRef, { + data: ap, + }); } else { annotationDict = this.createNewDict(annotation, xref, {}); } @@ -1782,10 +1777,11 @@ class MarkupAnnotation extends Annotation { annotationDict.set("StructParent", annotation.parentTreeId); } - buffer.length = 0; - await writeObject(annotationRef, annotationDict, buffer, xref); + changes.put(annotationRef, { + data: annotationDict, + }); - return { ref: annotationRef, data: buffer.join("") }; + return { ref: annotationRef }; } static async createNewPrintAnnotation( @@ -2112,7 +2108,7 @@ class WidgetAnnotation extends Annotation { amendSavedDict(annotationStorage, dict) {} - async save(evaluator, task, annotationStorage) { + async save(evaluator, task, annotationStorage, changes) { const storageEntry = annotationStorage?.get(this.data.id); const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); let value = storageEntry?.value, @@ -2123,7 +2119,7 @@ class WidgetAnnotation extends Annotation { rotation === undefined && flags === undefined ) { - return null; + return; } value ||= this.data.fieldValue; } @@ -2137,7 +2133,7 @@ class WidgetAnnotation extends Annotation { isArrayEqual(value, this.data.fieldValue) && flags === undefined ) { - return null; + return; } if (rotation === undefined) { @@ -2154,7 +2150,7 @@ class WidgetAnnotation extends Annotation { ); if (appearance === null && flags === undefined) { // Appearance didn't change. - return null; + return; } } else { // No need to create an appearance: the pdf has the flag /NeedAppearances @@ -2171,7 +2167,7 @@ class WidgetAnnotation extends Annotation { const originalDict = xref.fetchIfRef(this.ref); if (!(originalDict instanceof Dict)) { - return null; + return; } const dict = new Dict(xref); @@ -2208,12 +2204,11 @@ class WidgetAnnotation extends Annotation { dict.set("MK", maybeMK); } - const buffer = []; - const changes = [ - // data for the original object - // V field changed + reference for new AP - { ref: this.ref, data: "", xfa, needAppearances }, - ]; + changes.put(this.ref, { + data: dict, + xfa, + needAppearances, + }); if (appearance !== null) { const newRef = xref.getNewTemporaryRef(); const AP = new Dict(xref); @@ -2238,26 +2233,14 @@ class WidgetAnnotation extends Annotation { appearanceDict.set("Matrix", rotationMatrix); } - await writeObject(newRef, appearanceStream, buffer, xref); - - changes.push( - // data for the new AP - { - ref: newRef, - data: buffer.join(""), - xfa: null, - needAppearances: false, - } - ); - buffer.length = 0; + changes.put(newRef, { + data: appearanceStream, + xfa: null, + needAppearances: false, + }); } dict.set("M", `D:${getModificationDate()}`); - await writeObject(this.ref, dict, buffer, xref); - - changes[0].data = buffer.join(""); - - return changes; } async _getAppearance(evaluator, task, intent, annotationStorage) { @@ -3078,22 +3061,20 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { }; } - async save(evaluator, task, annotationStorage) { + async save(evaluator, task, annotationStorage, changes) { if (this.data.checkBox) { - return this._saveCheckbox(evaluator, task, annotationStorage); + this._saveCheckbox(evaluator, task, annotationStorage, changes); + return; } if (this.data.radioButton) { - return this._saveRadioButton(evaluator, task, annotationStorage); + this._saveRadioButton(evaluator, task, annotationStorage, changes); } - - // Nothing to save - return null; } - async _saveCheckbox(evaluator, task, annotationStorage) { + async _saveCheckbox(evaluator, task, annotationStorage, changes) { if (!annotationStorage) { - return null; + return; } const storageEntry = annotationStorage.get(this.data.id); const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); @@ -3102,18 +3083,18 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { if (rotation === undefined && flags === undefined) { if (value === undefined) { - return null; + return; } const defaultValue = this.data.fieldValue === this.data.exportValue; if (defaultValue === value) { - return null; + return; } } let dict = evaluator.xref.fetchIfRef(this.ref); if (!(dict instanceof Dict)) { - return null; + return; } dict = dict.clone(); @@ -3142,15 +3123,16 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { dict.set("MK", maybeMK); } - const buffer = []; - await writeObject(this.ref, dict, buffer, evaluator.xref); - - return [{ ref: this.ref, data: buffer.join(""), xfa }]; + changes.put(this.ref, { + data: dict, + xfa, + needAppearances: false, + }); } - async _saveRadioButton(evaluator, task, annotationStorage) { + async _saveRadioButton(evaluator, task, annotationStorage, changes) { if (!annotationStorage) { - return null; + return; } const storageEntry = annotationStorage.get(this.data.id); const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); @@ -3159,18 +3141,18 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { if (rotation === undefined && flags === undefined) { if (value === undefined) { - return null; + return; } const defaultValue = this.data.fieldValue === this.data.buttonValue; if (defaultValue === value) { - return null; + return; } } let dict = evaluator.xref.fetchIfRef(this.ref); if (!(dict instanceof Dict)) { - return null; + return; } dict = dict.clone(); @@ -3188,16 +3170,16 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { }; const name = Name.get(value ? this.data.buttonValue : "Off"); - const buffer = []; - let parentData = null; if (value) { if (this.parent instanceof Ref) { - const parent = evaluator.xref.fetch(this.parent); + const parent = evaluator.xref.fetch(this.parent).clone(); parent.set("V", name); - await writeObject(this.parent, parent, buffer, evaluator.xref); - parentData = buffer.join(""); - buffer.length = 0; + changes.put(this.parent, { + data: parent, + xfa: null, + needAppearances: false, + }); } else if (this.parent instanceof Dict) { this.parent.set("V", name); } @@ -3219,13 +3201,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { dict.set("MK", maybeMK); } - await writeObject(this.ref, dict, buffer, evaluator.xref); - const newRefs = [{ ref: this.ref, data: buffer.join(""), xfa }]; - if (parentData) { - newRefs.push({ ref: this.parent, data: parentData, xfa: null }); - } - - return newRefs; + changes.put(this.ref, { + data: dict, + xfa, + needAppearances: false, + }); } _getDefaultCheckedAppearance(params, type) { diff --git a/src/core/document.js b/src/core/document.js index ba17fdc2ab082..3c259923347fa 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -70,7 +70,6 @@ import { OperatorList } from "./operator_list.js"; import { PartialEvaluator } from "./evaluator.js"; import { StreamsSequenceStream } from "./decode_stream.js"; import { StructTreePage } from "./struct_tree.js"; -import { writeObject } from "./writer.js"; import { XFAFactory } from "./xfa/factory.js"; import { XRef } from "./xref.js"; @@ -314,7 +313,7 @@ class Page { await Promise.all(promises); } - async saveNewAnnotations(handler, task, annotations, imagePromises) { + async saveNewAnnotations(handler, task, annotations, imagePromises, changes) { if (this.xfaFactory) { throw new Error("XFA: Cannot save new annotations."); } @@ -348,7 +347,8 @@ class Page { partialEvaluator, task, annotations, - imagePromises + imagePromises, + changes ); for (const { ref } of newData.annotations) { @@ -358,27 +358,20 @@ class Page { } } - const savedDict = pageDict.get("Annots"); - pageDict.set("Annots", annotationsArray); - const buffer = []; - await writeObject(this.ref, pageDict, buffer, this.xref); - if (savedDict) { - pageDict.set("Annots", savedDict); - } + const dict = pageDict.clone(); + dict.set("Annots", annotationsArray); + changes.put(this.ref, { + data: dict, + }); - const objects = newData.dependencies; - objects.push( - { ref: this.ref, data: buffer.join("") }, - ...newData.annotations - ); for (const deletedRef of deletedAnnotations) { - objects.push({ ref: deletedRef, data: null }); + changes.put(deletedRef, { + data: null, + }); } - - return objects; } - save(handler, task, annotationStorage) { + save(handler, task, annotationStorage, changes) { const partialEvaluator = new PartialEvaluator({ xref: this.xref, handler, @@ -395,11 +388,11 @@ class Page { // Fetch the page's annotations and save the content // in case of interactive form fields. return this._parsedAnnotations.then(function (annotations) { - const newRefsPromises = []; + const promises = []; for (const annotation of annotations) { - newRefsPromises.push( + promises.push( annotation - .save(partialEvaluator, task, annotationStorage) + .save(partialEvaluator, task, annotationStorage, changes) .catch(function (reason) { warn( "save - ignoring annotation data during " + @@ -410,9 +403,7 @@ class Page { ); } - return Promise.all(newRefsPromises).then(function (newRefs) { - return newRefs.filter(newRef => !!newRef); - }); + return Promise.all(promises); }); } diff --git a/src/core/primitives.js b/src/core/primitives.js index a6801935de2fe..0ee5341455d39 100644 --- a/src/core/primitives.js +++ b/src/core/primitives.js @@ -383,6 +383,10 @@ class RefSetCache { this._map.clear(); } + *values() { + yield* this._map.values(); + } + *items() { for (const [ref, value] of this._map) { yield [Ref.fromString(ref), value]; diff --git a/src/core/struct_tree.js b/src/core/struct_tree.js index 44e7e5b9ca5b4..7f5c7b45e97a4 100644 --- a/src/core/struct_tree.js +++ b/src/core/struct_tree.js @@ -17,7 +17,6 @@ import { AnnotationPrefix, stringToPDFString, warn } from "../shared/util.js"; import { Dict, isName, Name, Ref, RefSetCache } from "./primitives.js"; import { lookupNormalRect, stringToAsciiOrUTF16BE } from "./core_utils.js"; import { NumberTree } from "./name_number_tree.js"; -import { writeObject } from "./writer.js"; const MAX_DEPTH = 40; @@ -117,7 +116,7 @@ class StructTreeRoot { xref, catalogRef, pdfManager, - newRefs, + changes, }) { const root = pdfManager.catalog.cloneDict(); const cache = new RefSetCache(); @@ -146,18 +145,17 @@ class StructTreeRoot { nums, xref, pdfManager, - newRefs, + changes, cache, }); structTreeRoot.set("ParentTreeNextKey", nextKey); cache.put(parentTreeRef, parentTree); - const buffer = []; for (const [ref, obj] of cache.items()) { - buffer.length = 0; - await writeObject(ref, obj, buffer, xref); - newRefs.push({ ref, data: buffer.join("") }); + changes.put(ref, { + data: obj, + }); } } @@ -235,7 +233,7 @@ class StructTreeRoot { return true; } - async updateStructureTree({ newAnnotationsByPage, pdfManager, newRefs }) { + async updateStructureTree({ newAnnotationsByPage, pdfManager, changes }) { const xref = this.dict.xref; const structTreeRoot = this.dict.clone(); const structTreeRootRef = this.ref; @@ -273,7 +271,7 @@ class StructTreeRoot { nums, xref, pdfManager, - newRefs, + changes, cache, }); @@ -288,11 +286,10 @@ class StructTreeRoot { cache.put(numsRef, nums); } - const buffer = []; for (const [ref, obj] of cache.items()) { - buffer.length = 0; - await writeObject(ref, obj, buffer, xref); - newRefs.push({ ref, data: buffer.join("") }); + changes.put(ref, { + data: obj, + }); } } @@ -304,13 +301,12 @@ class StructTreeRoot { nums, xref, pdfManager, - newRefs, + changes, cache, }) { const objr = Name.get("OBJR"); let nextKey = -1; let structTreePageObjs; - const buffer = []; for (const [pageIndex, elements] of newAnnotationsByPage) { const page = await pdfManager.getPage(pageIndex); @@ -350,9 +346,9 @@ class StructTreeRoot { // We update the existing tag. const tagDict = xref.fetch(objRef).clone(); StructTreeRoot.#writeProperties(tagDict, accessibilityData); - buffer.length = 0; - await writeObject(objRef, tagDict, buffer, xref); - newRefs.push({ ref: objRef, data: buffer.join("") }); + changes.put(objRef, { + data: tagDict, + }); continue; } } diff --git a/src/core/worker.js b/src/core/worker.js index 2b6c9ac85222c..cba6cb0ce2e9d 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -34,7 +34,7 @@ import { getNewAnnotationsMap, XRefParseException, } from "./core_utils.js"; -import { Dict, isDict, Ref } from "./primitives.js"; +import { Dict, isDict, Ref, RefSetCache } from "./primitives.js"; import { LocalPdfManager, NetworkPdfManager } from "./pdf_manager.js"; import { AnnotationFactory } from "./annotation.js"; import { clearGlobalCaches } from "./cleanup_helper.js"; @@ -540,6 +540,7 @@ class WorkerMessageHandler { pdfManager.ensureDoc("linearization"), pdfManager.ensureCatalog("structTreeRoot"), ]; + const changes = new RefSetCache(); const promises = []; const newAnnotationsByPage = !isPureXfa @@ -590,7 +591,13 @@ class WorkerMessageHandler { pdfManager.getPage(pageIndex).then(page => { const task = new WorkerTask(`Save (editor): page ${pageIndex}`); return page - .saveNewAnnotations(handler, task, annotations, imagePromises) + .saveNewAnnotations( + handler, + task, + annotations, + imagePromises, + changes + ) .finally(function () { finishWorkerTask(task); }); @@ -600,26 +607,24 @@ class WorkerMessageHandler { if (structTreeRoot === null) { // No structTreeRoot exists, so we need to create one. promises.push( - Promise.all(newAnnotationPromises).then(async newRefs => { + Promise.all(newAnnotationPromises).then(async () => { await StructTreeRoot.createStructureTree({ newAnnotationsByPage, xref, catalogRef, pdfManager, - newRefs, + changes, }); - return newRefs; }) ); } else if (structTreeRoot) { promises.push( - Promise.all(newAnnotationPromises).then(async newRefs => { + Promise.all(newAnnotationPromises).then(async () => { await structTreeRoot.updateStructureTree({ newAnnotationsByPage, pdfManager, - newRefs, + changes, }); - return newRefs; }) ); } @@ -633,7 +638,7 @@ class WorkerMessageHandler { pdfManager.getPage(pageIndex).then(function (page) { const task = new WorkerTask(`Save: page ${pageIndex}`); return page - .save(handler, task, annotationStorage) + .save(handler, task, annotationStorage, changes) .finally(function () { finishWorkerTask(task); }); @@ -643,26 +648,21 @@ class WorkerMessageHandler { } const refs = await Promise.all(promises); - let newRefs = []; let xfaData = null; if (isPureXfa) { xfaData = refs[0]; if (!xfaData) { return stream.bytes; } - } else { - newRefs = refs.flat(2); - - if (newRefs.length === 0) { - // No new refs so just return the initial bytes - return stream.bytes; - } + } else if (changes.size === 0) { + // No new refs so just return the initial bytes + return stream.bytes; } const needAppearances = acroFormRef && acroForm instanceof Dict && - newRefs.some(ref => ref.needAppearances); + changes.values().some(ref => ref.needAppearances); const xfa = (acroForm instanceof Dict && acroForm.get("XFA")) || null; let xfaDatasetsRef = null; @@ -712,7 +712,7 @@ class WorkerMessageHandler { return incrementalUpdate({ originalData: stream.bytes, xrefInfo: newXrefInfo, - newRefs, + changes, xref, hasXfa: !!xfa, xfaDatasetsRef, diff --git a/src/core/writer.js b/src/core/writer.js index 54af13b4920aa..a9095d97b4b82 100644 --- a/src/core/writer.js +++ b/src/core/writer.js @@ -23,9 +23,9 @@ import { parseXFAPath, } from "./core_utils.js"; import { SimpleDOMNode, SimpleXMLParser } from "./xml_parser.js"; +import { Stream, StringStream } from "./stream.js"; import { BaseStream } from "./base_stream.js"; import { calculateMD5 } from "./crypto.js"; -import { Stream } from "./stream.js"; async function writeObject(ref, obj, buffer, { encrypt = null }) { const transform = encrypt?.createCipherTransform(ref.num, ref.gen); @@ -192,10 +192,10 @@ function computeMD5(filesize, xrefInfo) { return bytesToString(calculateMD5(array)); } -function writeXFADataForAcroform(str, newRefs) { +function writeXFADataForAcroform(str, changes) { const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str); - for (const { xfa } of newRefs) { + for (const { xfa } of changes) { if (!xfa) { continue; } @@ -230,7 +230,7 @@ async function updateAcroform({ hasXfaDatasetsEntry, xfaDatasetsRef, needAppearances, - newRefs, + changes, }) { if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) { warn("XFA - Cannot save it"); @@ -257,33 +257,23 @@ async function updateAcroform({ dict.set("NeedAppearances", true); } - const buffer = []; - await writeObject(acroFormRef, dict, buffer, xref); - - newRefs.push({ ref: acroFormRef, data: buffer.join("") }); + changes.put(acroFormRef, { + data: dict, + }); } -function updateXFA({ xfaData, xfaDatasetsRef, newRefs, xref }) { +function updateXFA({ xfaData, xfaDatasetsRef, changes, xref }) { if (xfaData === null) { const datasets = xref.fetchIfRef(xfaDatasetsRef); - xfaData = writeXFADataForAcroform(datasets.getString(), newRefs); + xfaData = writeXFADataForAcroform(datasets.getString(), changes); } + const xfaDataStream = new StringStream(xfaData); + xfaDataStream.dict = new Dict(xref); + xfaDataStream.dict.set("Type", Name.get("EmbeddedFile")); - const encrypt = xref.encrypt; - if (encrypt) { - const transform = encrypt.createCipherTransform( - xfaDatasetsRef.num, - xfaDatasetsRef.gen - ); - xfaData = transform.encryptString(xfaData); - } - const data = - `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\n` + - `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\nstream\n` + - xfaData + - "\nendstream\nendobj\n"; - - newRefs.push({ ref: xfaDatasetsRef, data }); + changes.put(xfaDatasetsRef, { + data: xfaDataStream, + }); } async function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) { @@ -383,12 +373,12 @@ function computeIDs(baseOffset, xrefInfo, newXref) { } } -function getTrailerDict(xrefInfo, newRefs, useXrefStream) { +function getTrailerDict(xrefInfo, changes, useXrefStream) { const newXref = new Dict(null); newXref.set("Prev", xrefInfo.startXRef); const refForXrefTable = xrefInfo.newRef; if (useXrefStream) { - newRefs.push({ ref: refForXrefTable, data: "" }); + changes.put(refForXrefTable, { data: "" }); newXref.set("Size", refForXrefTable.num + 1); newXref.set("Type", Name.get("XRef")); } else { @@ -406,10 +396,24 @@ function getTrailerDict(xrefInfo, newRefs, useXrefStream) { return newXref; } +async function writeChanges(changes, xref, buffer = []) { + const newRefs = []; + for (const [ref, { data }] of changes.items()) { + if (data === null || typeof data === "string") { + newRefs.push({ ref, data }); + continue; + } + await writeObject(ref, data, buffer, xref); + newRefs.push({ ref, data: buffer.join("") }); + buffer.length = 0; + } + return newRefs.sort((a, b) => /* compare the refs */ a.ref.num - b.ref.num); +} + async function incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, xref = null, hasXfa = false, xfaDatasetsRef = null, @@ -428,19 +432,21 @@ async function incrementalUpdate({ hasXfaDatasetsEntry, xfaDatasetsRef, needAppearances, - newRefs, + changes, }); if (hasXfa) { updateXFA({ xfaData, xfaDatasetsRef, - newRefs, + changes, xref, }); } + const newXref = getTrailerDict(xrefInfo, changes, useXrefStream); const buffer = []; + const newRefs = await writeChanges(changes, xref, buffer); let baseOffset = originalData.length; const lastByte = originalData.at(-1); if (lastByte !== /* \n */ 0x0a && lastByte !== /* \r */ 0x0d) { @@ -449,10 +455,6 @@ async function incrementalUpdate({ baseOffset += 1; } - const newXref = getTrailerDict(xrefInfo, newRefs, useXrefStream); - newRefs = newRefs.sort( - (a, b) => /* compare the refs */ a.ref.num - b.ref.num - ); for (const { data } of newRefs) { if (data !== null) { buffer.push(data); @@ -482,4 +484,4 @@ async function incrementalUpdate({ return array; } -export { incrementalUpdate, writeDict, writeObject }; +export { incrementalUpdate, writeChanges, writeDict, writeObject }; diff --git a/test/unit/annotation_spec.js b/test/unit/annotation_spec.js index 9ef611407352f..68452d8fed84a 100644 --- a/test/unit/annotation_spec.js +++ b/test/unit/annotation_spec.js @@ -47,6 +47,7 @@ import { FlateStream } from "../../src/core/flate_stream.js"; import { PartialEvaluator } from "../../src/core/evaluator.js"; import { StringStream } from "../../src/core/stream.js"; import { WorkerTask } from "../../src/core/worker.js"; +import { writeChanges } from "../../src/core/writer.js"; describe("annotation", function () { class PDFManagerMock { @@ -2120,14 +2121,12 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: "hello world" }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -2166,14 +2165,12 @@ describe("annotation", function () { value: "hello world", rotation: 90, }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -2210,14 +2207,12 @@ describe("annotation", function () { const annotationStorage = new Map(); const value = "a".repeat(256); annotationStorage.set(annotation.data.id, { value }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -2356,16 +2351,14 @@ describe("annotation", function () { annotationStorage.set(annotation.data.id, { value: "こんにちは世界の", }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); const utf16String = "\x30\x53\x30\x93\x30\x6b\x30\x61\x30\x6f\x4e\x16\x75\x4c\x30\x6e"; expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -2771,12 +2764,10 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: true }); + const changes = new RefSetCache(); - const [oldData] = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const [oldData] = await writeChanges(changes, xref); oldData.data = oldData.data.replace(/\(D:\d+\)/, "(date)"); expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(oldData.data).toEqual( @@ -2788,12 +2779,9 @@ describe("annotation", function () { annotationStorage.set(annotation.data.id, { value: false }); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); - expect(data).toEqual(null); + changes.clear(); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + expect(changes.size).toEqual(0); }); it("should save rotated checkboxes", async function () { @@ -2822,12 +2810,10 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: true, rotation: 180 }); + const changes = new RefSetCache(); - const [oldData] = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const [oldData] = await writeChanges(changes, xref); oldData.data = oldData.data.replace(/\(D:\d+\)/, "(date)"); expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(oldData.data).toEqual( @@ -2839,12 +2825,9 @@ describe("annotation", function () { annotationStorage.set(annotation.data.id, { value: false }); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); - expect(data).toEqual(null); + changes.clear(); + await annotation.save(partialEvaluator, task, annotationStorage); + expect(changes.size).toEqual(0); }); it("should handle radio buttons with a field value", async function () { @@ -3117,12 +3100,10 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: true }); + const changes = new RefSetCache(); - let data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); const [radioData, parentData] = data; radioData.data = radioData.data.replace(/\(D:\d+\)/, "(date)"); @@ -3140,8 +3121,9 @@ describe("annotation", function () { annotationStorage.set(annotation.data.id, { value: false }); - data = await annotation.save(partialEvaluator, task, annotationStorage); - expect(data).toEqual(null); + changes.clear(); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + expect(changes.size).toEqual(0); }); it("should save radio buttons without a field value", async function () { @@ -3180,12 +3162,10 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: true }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); const [radioData, parentData] = data; radioData.data = radioData.data.replace(/\(D:\d+\)/, "(date)"); @@ -3216,13 +3196,10 @@ describe("annotation", function () { idFactoryMock ); const annotationStorage = new Map(); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); - expect(data).toEqual(null); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + expect(changes.size).toEqual(0); }); it("should handle push buttons", async function () { @@ -3734,14 +3711,12 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: "C", rotation: 270 }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -3795,14 +3770,12 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: "C" }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -3860,15 +3833,12 @@ describe("annotation", function () { ); const annotationStorage = new Map(); annotationStorage.set(annotation.data.id, { value: ["B", "C"] }); + const changes = new RefSetCache(); - const data = await annotation.save( - partialEvaluator, - task, - annotationStorage - ); - + await annotation.save(partialEvaluator, task, annotationStorage, changes); + const data = await writeChanges(changes, xref); expect(data.length).toEqual(2); - const [oldData, newData] = data; + const [newData, oldData] = data; expect(oldData.ref).toEqual(Ref.get(123, 0)); expect(newData.ref).toEqual(Ref.get(2, 0)); @@ -4154,9 +4124,10 @@ describe("annotation", function () { describe("FreeTextAnnotation", () => { it("should create a new FreeText annotation", async () => { - partialEvaluator.xref = new XRefMock(); + const xref = (partialEvaluator.xref = new XRefMock()); const task = new WorkerTask("test FreeText creation"); - const data = await AnnotationFactory.saveNewAnnotations( + const changes = new RefSetCache(); + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4168,10 +4139,13 @@ describe("annotation", function () { color: [0, 0, 0], value: "Hello PDF.js World!", }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replace(/\(D:\d+\)/, "(date)"); + const base = data[1].data.replace(/\(D:\d+\)/, "(date)"); expect(base).toEqual( "2 0 obj\n" + "<< /Type /Annot /Subtype /FreeText /CreationDate (date) " + @@ -4180,7 +4154,7 @@ describe("annotation", function () { "endobj\n" ); - const font = data.dependencies[0].data; + const font = data[0].data; expect(font).toEqual( "1 0 obj\n" + "<< /BaseFont /Helvetica /Type /Font /Subtype /Type1 /Encoding " + @@ -4188,7 +4162,7 @@ describe("annotation", function () { "endobj\n" ); - const appearance = data.dependencies[1].data; + const appearance = data[2].data; expect(appearance).toEqual( "3 0 obj\n" + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] " + @@ -4265,12 +4239,13 @@ describe("annotation", function () { freeTextDict.set("Foo", Name.get("Bar")); const freeTextRef = Ref.get(143, 0); - partialEvaluator.xref = new XRefMock([ + const xref = (partialEvaluator.xref = new XRefMock([ { ref: freeTextRef, data: freeTextDict }, - ]); + ])); + const changes = new RefSetCache(); const task = new WorkerTask("test FreeText update"); - const data = await AnnotationFactory.saveNewAnnotations( + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4285,10 +4260,13 @@ describe("annotation", function () { ref: freeTextRef, oldAnnotation: freeTextDict, }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replaceAll(/\(D:\d+\)/g, "(date)"); + const base = data[2].data.replaceAll(/\(D:\d+\)/g, "(date)"); expect(base).toEqual( "143 0 obj\n" + "<< /Type /Annot /Subtype /FreeText /CreationDate (date) /Foo /Bar /M (date) " + @@ -4379,9 +4357,10 @@ describe("annotation", function () { }); it("should create a new Ink annotation", async function () { - partialEvaluator.xref = new XRefMock(); + const xref = (partialEvaluator.xref = new XRefMock()); + const changes = new RefSetCache(); const task = new WorkerTask("test Ink creation"); - const data = await AnnotationFactory.saveNewAnnotations( + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4408,10 +4387,13 @@ describe("annotation", function () { }, ], }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replace(/\(D:\d+\)/, "(date)"); + const base = data[0].data.replace(/\(D:\d+\)/, "(date)"); expect(base).toEqual( "1 0 obj\n" + "<< /Type /Annot /Subtype /Ink /CreationDate (date) /Rect [12 34 56 78] " + @@ -4420,7 +4402,7 @@ describe("annotation", function () { "endobj\n" ); - const appearance = data.dependencies[0].data; + const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 129>> stream\n" + @@ -4440,9 +4422,10 @@ describe("annotation", function () { }); it("should create a new Ink annotation with some transparency", async function () { - partialEvaluator.xref = new XRefMock(); + const xref = (partialEvaluator.xref = new XRefMock()); + const changes = new RefSetCache(); const task = new WorkerTask("test Ink creation"); - const data = await AnnotationFactory.saveNewAnnotations( + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4469,10 +4452,13 @@ describe("annotation", function () { }, ], }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replace(/\(D:\d+\)/, "(date)"); + const base = data[0].data.replace(/\(D:\d+\)/, "(date)"); expect(base).toEqual( "1 0 obj\n" + "<< /Type /Annot /Subtype /Ink /CreationDate (date) /Rect [12 34 56 78] " + @@ -4481,7 +4467,7 @@ describe("annotation", function () { "endobj\n" ); - const appearance = data.dependencies[0].data; + const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 136 /Resources " + @@ -4627,9 +4613,10 @@ describe("annotation", function () { }); it("should create a new Highlight annotation", async function () { - partialEvaluator.xref = new XRefMock(); + const xref = (partialEvaluator.xref = new XRefMock()); + const changes = new RefSetCache(); const task = new WorkerTask("test Highlight creation"); - const data = await AnnotationFactory.saveNewAnnotations( + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4645,10 +4632,13 @@ describe("annotation", function () { [12, 13, 14, 15], ], }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replace(/\(D:\d+\)/, "(date)"); + const base = data[0].data.replace(/\(D:\d+\)/, "(date)"); expect(base).toEqual( "1 0 obj\n" + "<< /Type /Annot /Subtype /Highlight /CreationDate (date) /Rect [12 34 56 78] " + @@ -4657,7 +4647,7 @@ describe("annotation", function () { "endobj\n" ); - const appearance = data.dependencies[0].data; + const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] " + @@ -4717,9 +4707,10 @@ describe("annotation", function () { }); it("should create a new free Highlight annotation", async function () { - partialEvaluator.xref = new XRefMock(); + const xref = (partialEvaluator.xref = new XRefMock()); + const changes = new RefSetCache(); const task = new WorkerTask("test free Highlight creation"); - const data = await AnnotationFactory.saveNewAnnotations( + await AnnotationFactory.saveNewAnnotations( partialEvaluator, task, [ @@ -4749,10 +4740,13 @@ describe("annotation", function () { points: [Float32Array.from([16, 17, 18, 19])], }, }, - ] + ], + null, + changes ); + const data = await writeChanges(changes, xref); - const base = data.annotations[0].data.replace(/\(D:\d+\)/, "(date)"); + const base = data[0].data.replace(/\(D:\d+\)/, "(date)"); expect(base).toEqual( "1 0 obj\n" + "<< /Type /Annot /Subtype /Ink /CreationDate (date) /Rect [12 34 56 78] " + @@ -4761,7 +4755,7 @@ describe("annotation", function () { "endobj\n" ); - const appearance = data.dependencies[0].data; + const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] " + diff --git a/test/unit/writer_spec.js b/test/unit/writer_spec.js index 4298e0ba8a87b..5ebb37a9933f3 100644 --- a/test/unit/writer_spec.js +++ b/test/unit/writer_spec.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { Dict, Name, Ref } from "../../src/core/primitives.js"; +import { Dict, Name, Ref, RefSetCache } from "../../src/core/primitives.js"; import { incrementalUpdate, writeDict } from "../../src/core/writer.js"; import { bytesToString } from "../../src/shared/util.js"; import { StringStream } from "../../src/core/stream.js"; @@ -22,10 +22,9 @@ describe("Writer", function () { describe("Incremental update", function () { it("should update a file with new objects", async function () { const originalData = new Uint8Array(); - const newRefs = [ - { ref: Ref.get(123, 0x2d), data: "abc\n" }, - { ref: Ref.get(456, 0x4e), data: "defg\n" }, - ]; + const changes = new RefSetCache(); + changes.put(Ref.get(123, 0x2d), { data: "abc\n" }); + changes.put(Ref.get(456, 0x4e), { data: "defg\n" }); const xrefInfo = { newRef: Ref.get(789, 0), startXRef: 314, @@ -40,7 +39,8 @@ describe("Writer", function () { let data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, + xref: {}, useXrefStream: true, }); data = bytesToString(data); @@ -65,7 +65,8 @@ describe("Writer", function () { data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, + xref: {}, useXrefStream: false, }); data = bytesToString(data); @@ -91,7 +92,8 @@ describe("Writer", function () { it("should update a file, missing the /ID-entry, with new objects", async function () { const originalData = new Uint8Array(); - const newRefs = [{ ref: Ref.get(123, 0x2d), data: "abc\n" }]; + const changes = new RefSetCache(); + changes.put(Ref.get(123, 0x2d), { data: "abc\n" }); const xrefInfo = { newRef: Ref.get(789, 0), startXRef: 314, @@ -106,7 +108,8 @@ describe("Writer", function () { let data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, + xref: {}, useXrefStream: true, }); data = bytesToString(data); @@ -185,7 +188,7 @@ describe("Writer", function () { describe("XFA", function () { it("should update AcroForm when no datasets in XFA array", async function () { const originalData = new Uint8Array(); - const newRefs = []; + const changes = new RefSetCache(); const acroForm = new Dict(null); acroForm.set("XFA", [ @@ -212,7 +215,7 @@ describe("Writer", function () { let data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, hasXfa: true, xfaDatasetsRef, hasXfaDatasetsEntry: false, @@ -230,8 +233,7 @@ describe("Writer", function () { "<< /XFA [(preamble) 123 0 R (datasets) 101112 0 R (postamble) 456 0 R]>>\n" + "endobj\n" + "101112 0 obj\n" + - "<< /Type /EmbeddedFile /Length 20>>\n" + - "stream\n" + + "<< /Type /EmbeddedFile /Length 20>> stream\n" + "world\n" + "endstream\n" + "endobj\n" + @@ -250,10 +252,9 @@ describe("Writer", function () { it("should update a file with a deleted object", async function () { const originalData = new Uint8Array(); - const newRefs = [ - { ref: Ref.get(123, 0x2d), data: null }, - { ref: Ref.get(456, 0x4e), data: "abc\n" }, - ]; + const changes = new RefSetCache(); + changes.put(Ref.get(123, 0x2d), { data: null }); + changes.put(Ref.get(456, 0x4e), { data: "abc\n" }); const xrefInfo = { newRef: Ref.get(789, 0), startXRef: 314, @@ -268,7 +269,8 @@ describe("Writer", function () { let data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, + xref: {}, useXrefStream: true, }); data = bytesToString(data); @@ -292,7 +294,8 @@ describe("Writer", function () { data = await incrementalUpdate({ originalData, xrefInfo, - newRefs, + changes, + xref: {}, useXrefStream: false, }); data = bytesToString(data); From f40e86223ab9efdf622e15331461941dde7e44cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 12 Nov 2024 13:00:27 +0100 Subject: [PATCH 044/338] Migrate to ESLint flat config Flat config is the new config system used by ESLint 9. To make the migration easier, they also added flat config support to ESLint 8. This commit migrates the various ESLint configs in the repository to use the new system, **without** upgrading to ESLint 9 yet. --- .eslintignore | 13 -- .eslintrc | 265 ---------------------- eslint.config.mjs | 436 +++++++++++++++++++++++++++++++++++++ examples/.eslintrc | 11 - examples/node/.eslintrc | 9 - examples/webpack/.eslintrc | 9 - external/.eslintrc | 9 - gulpfile.mjs | 3 - package-lock.json | 18 +- package.json | 3 +- src/core/image_resizer.js | 5 +- src/core/jpeg_stream.js | 5 +- test/.eslintrc | 18 -- test/fuzz/.eslintrc | 9 - test/integration/.eslintrc | 14 -- test/unit/.eslintrc | 10 - 16 files changed, 450 insertions(+), 387 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc create mode 100644 eslint.config.mjs delete mode 100644 examples/.eslintrc delete mode 100644 examples/node/.eslintrc delete mode 100644 examples/webpack/.eslintrc delete mode 100644 external/.eslintrc delete mode 100644 test/.eslintrc delete mode 100644 test/fuzz/.eslintrc delete mode 100644 test/integration/.eslintrc delete mode 100644 test/unit/.eslintrc diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index a1279de754437..0000000000000 --- a/.eslintignore +++ /dev/null @@ -1,13 +0,0 @@ -build/ -l10n/ -docs/ -node_modules/ -external/bcmaps/ -external/builder/fixtures/ -external/builder/fixtures_babel/ -external/quickjs/ -external/openjpeg/ -test/tmp/ -test/pdfs/ -web/locale/ -*~/ diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 87715ac69acd0..0000000000000 --- a/.eslintrc +++ /dev/null @@ -1,265 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 2022, - "sourceType": "module", - }, - - "plugins": [ - "import", - "json", - "no-unsanitized", - "perfectionist", - "unicorn", - ], - - "extends": [ - "plugin:json/recommended", - "plugin:prettier/recommended" - ], - - "env": { - "browser": true, - "es2022": true, - "worker": true, - }, - - "globals": { - "PDFJSDev": "readonly", - "__non_webpack_import__": "readonly", - }, - - "rules": { - // Plugins - "import/export": "error", - "import/exports-last": "error", - "import/extensions": ["error", "always", { "ignorePackages": true, }], - "import/first": "error", - "import/named": "error", - "import/no-cycle": "error", - "import/no-empty-named-blocks": "error", - "import/no-commonjs": "error", - "import/no-mutable-exports": "error", - "import/no-self-import": "error", - "import/no-unresolved": ["error", { - "ignore": ["display", "pdfjs", "pdfjs-lib", "pdfjs-web", "web", "fluent-bundle", "fluent-dom"], - }], - "no-unsanitized/method": "error", - "no-unsanitized/property": "error", - "perfectionist/sort-exports": "error", - "perfectionist/sort-named-exports": "error", - "unicorn/no-abusive-eslint-disable": "error", - "unicorn/no-array-push-push": "error", - "unicorn/no-instanceof-array": "error", - "unicorn/no-invalid-remove-event-listener": "error", - "unicorn/no-new-buffer": "error", - "unicorn/no-typeof-undefined": ["error", { - "checkGlobalVariables": false, - }], - "unicorn/no-useless-promise-resolve-reject": "error", - "unicorn/no-useless-spread": "error", - "unicorn/prefer-array-find": "error", - "unicorn/prefer-array-flat": "error", - "unicorn/prefer-array-flat-map": "error", - "unicorn/prefer-array-index-of": "error", - "unicorn/prefer-array-some": "error", - "unicorn/prefer-at": "error", - "unicorn/prefer-date-now": "error", - "unicorn/prefer-dom-node-append": "error", - "unicorn/prefer-dom-node-remove": "error", - "unicorn/prefer-includes": "error", - "unicorn/prefer-logical-operator-over-ternary": "error", - "unicorn/prefer-modern-dom-apis": "error", - "unicorn/prefer-modern-math-apis": "error", - "unicorn/prefer-negative-index": "error", - "unicorn/prefer-optional-catch-binding": "error", - "unicorn/prefer-regexp-test": "error", - "unicorn/prefer-string-replace-all": "error", - "unicorn/prefer-string-starts-ends-with": "error", - "unicorn/prefer-ternary": ["error", "only-single-line"], - "unicorn/throw-new-error": "error", - - // Possible errors - "for-direction": "error", - "getter-return": "error", - "no-async-promise-executor": "error", - "no-cond-assign": ["error", "except-parens"], - "no-constant-condition": ["error", { "checkLoops": false, }], - "no-debugger": "error", - "no-dupe-args": "error", - "no-dupe-else-if": "error", - "no-dupe-keys": "error", - "no-duplicate-case": "error", - "no-empty": ["error", { "allowEmptyCatch": true, }], - "no-empty-character-class": "error", - "no-ex-assign": "error", - "no-extra-boolean-cast": "error", - "no-func-assign": "error", - "no-inner-declarations": ["error", "functions"], - "no-invalid-regexp": "error", - "no-irregular-whitespace": "error", - "no-loss-of-precision": "error", - "no-obj-calls": "error", - "no-promise-executor-return": "error", - "no-regex-spaces": "error", - "no-setter-return": "error", - "no-sparse-arrays": "error", - "no-template-curly-in-string": "error", - "no-unexpected-multiline": "error", - "no-unreachable": "error", - "no-unsafe-finally": "error", - "no-unsafe-negation": "error", - "no-unsafe-optional-chaining": ["error", { "disallowArithmeticOperators": true }], - "no-unused-private-class-members": "error", - "use-isnan": ["error", { "enforceForIndexOf": true, }], - "valid-typeof": ["error", { "requireStringLiterals": true, }], - - // Best Practices - "accessor-pairs": ["error", { - "setWithoutGet": true, - "enforceForClassMembers": true, - }], - "consistent-return": "error", - "curly": ["error", "all"], - "default-case-last": "error", - "dot-notation": "error", - "eqeqeq": ["error", "always"], - "grouped-accessor-pairs": ["error", "getBeforeSet"], - "no-alert": "error", - "no-caller": "error", - "no-else-return": "error", - "no-empty-pattern": "error", - "no-eval": "error", - "no-extend-native": "error", - "no-extra-bind": "error", - "no-extra-label": "error", - "no-fallthrough": "error", - "no-floating-decimal": "error", - "no-global-assign": "error", - "no-implied-eval": "error", - "no-iterator": "error", - "no-lone-blocks": "error", - "no-lonely-if": "error", - "no-multi-str": "error", - "no-new": "error", - "no-new-func": "error", - "no-new-symbol": "error", - "no-new-wrappers": "error", - "no-octal-escape": "error", - "no-octal": "error", - "no-redeclare": "error", - "no-return-await": "error", - "no-self-assign": "error", - "no-self-compare": "error", - "no-throw-literal": "error", - "no-unused-expressions": "error", - "no-unused-labels": "error", - "no-useless-call": "error", - "no-useless-catch": "error", - "no-useless-concat": "error", - "no-useless-escape": "error", - "no-useless-return": "error", - "prefer-promise-reject-errors": "error", - "prefer-spread": "error", - "wrap-iife": ["error", "any"], - "yoda": ["error", "never", { - "exceptRange": true, - }], - - // Strict Mode - "strict": ["off", "global"], - - // Variables - "no-delete-var": "error", - "no-label-var": "error", - "no-shadow": "error", - "no-shadow-restricted-names": "error", - "no-undef-init": "error", - "no-undef": ["error", { "typeof": true, }], - "no-unused-vars": ["error", { - "vars": "all", - "args": "none", - }], - "no-use-before-define": ["error", { - "functions": false, - "classes": false, - "variables": false, - }], - - // Stylistic Issues - "lines-between-class-members": ["error", "always"], - "max-len": ["error", { - "code": 1000, - "comments": 80, - "ignoreUrls": true - }], - "new-cap": ["error", { "newIsCap": true, "capIsNew": false, }], - "no-array-constructor": "error", - "no-multiple-empty-lines": ["error", { "max": 1, "maxEOF": 0, "maxBOF": 1, }], - "no-nested-ternary": "error", - "no-new-object": "error", - "no-restricted-syntax": ["error", - { - "selector": "BinaryExpression[operator='instanceof'][right.name='Object']", - "message": "Use `typeof` rather than `instanceof Object`.", - }, - { - "selector": "CallExpression[callee.name='assert'][arguments.length!=2]", - "message": "`assert()` must always be invoked with two arguments.", - }, - { - "selector": "CallExpression[callee.name='isCmd'][arguments.length<2]", - "message": "Use `instanceof Cmd` rather than `isCmd()` with one argument.", - }, - { - "selector": "CallExpression[callee.name='isDict'][arguments.length<2]", - "message": "Use `instanceof Dict` rather than `isDict()` with one argument.", - }, - { - "selector": "CallExpression[callee.name='isName'][arguments.length<2]", - "message": "Use `instanceof Name` rather than `isName()` with one argument.", - }, - { - "selector": "NewExpression[callee.name='Cmd']", - "message": "Use `Cmd.get()` rather than `new Cmd()`.", - }, - { - "selector": "NewExpression[callee.name='Name']", - "message": "Use `Name.get()` rather than `new Name()`.", - }, - { - "selector": "NewExpression[callee.name='Ref']", - "message": "Use `Ref.get()` rather than `new Ref()`.", - }, - ], - "no-unneeded-ternary": "error", - "operator-assignment": "error", - "prefer-exponentiation-operator": "error", - "spaced-comment": ["error", "always", { - "block": { - "balanced": true, - } - }], - - // ECMAScript 6 - "arrow-body-style": ["error", "as-needed"], - "constructor-super": "error", - "no-class-assign": "error", - "no-const-assign": "error", - "no-dupe-class-members": "error", - "no-duplicate-imports": "error", - "no-this-before-super": "error", - "no-useless-computed-key": "error", - "no-useless-constructor": "error", - "no-useless-rename": "error", - "no-var": "error", - "object-shorthand": ["error", "always", { - "avoidQuotes": true, - }], - "prefer-const": "error", - "require-yield": "error", - "sort-imports": ["error", { - "ignoreCase": true, - }], - "template-curly-spacing": ["error", "never"], - }, -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000000000..e0c2b8b014e31 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,436 @@ +import globals from "globals"; + +import import_ from "eslint-plugin-import"; +import jasmine from "eslint-plugin-jasmine"; +import json from "eslint-plugin-json"; +import noUnsanitized from "eslint-plugin-no-unsanitized"; +import perfectionist from "eslint-plugin-perfectionist"; +import prettierRecommended from "eslint-plugin-prettier/recommended"; +import unicorn from "eslint-plugin-unicorn"; + +const jsFiles = folder => { + const prefix = folder === "." ? "" : folder + "/"; + return [prefix + "**/*.js", prefix + "**/*.jsm", prefix + "**/*.mjs"]; +}; + +// Include all files referenced in extensions/chromium/background.js +const chromiumExtensionServiceWorkerFiles = [ + "extensions/chromium/extension-router.js", + "extensions/chromium/options/migration.js", + "extensions/chromium/pdfHandler.js", + "extensions/chromium/preserve-referer.js", + "extensions/chromium/suppress-update.js", + "extensions/chromium/telemetry.js", +]; + +export default [ + { + ignores: [ + "**/build/", + "**/l10n/", + "**/docs/", + "**/node_modules/", + "external/bcmaps/", + "external/builder/fixtures/", + "external/builder/fixtures_babel/", + "external/quickjs/", + "external/openjpeg/", + "test/tmp/", + "test/pdfs/", + "web/locale/", + "**/*~/", + ], + }, + + /* ======================================================================== *\ + Base configuration + \* ======================================================================== */ + + prettierRecommended, + { + files: ["**/*.json"], + ...json.configs.recommended, + }, + { + files: jsFiles("."), + ignores: chromiumExtensionServiceWorkerFiles, + languageOptions: { + globals: globals.browser, + }, + }, + { + files: jsFiles("."), + + plugins: { + import: import_.flatConfigs.recommended.plugins.import, + json, + "no-unsanitized": noUnsanitized, + perfectionist, + unicorn, + }, + + languageOptions: { + globals: { + ...globals.worker, + PDFJSDev: "readonly", + __non_webpack_import__: "readonly", + }, + + ecmaVersion: 2022, + sourceType: "module", + }, + + rules: { + "import/export": "error", + "import/exports-last": "error", + "import/extensions": ["error", "always", { ignorePackages: true }], + "import/first": "error", + "import/named": "error", + "import/no-cycle": "error", + "import/no-empty-named-blocks": "error", + "import/no-commonjs": "error", + "import/no-mutable-exports": "error", + "import/no-self-import": "error", + "import/no-unresolved": [ + "error", + { + ignore: [ + "display", + "pdfjs", + "pdfjs-lib", + "pdfjs-web", + "web", + "fluent-bundle", + "fluent-dom", + ], + }, + ], + "no-unsanitized/method": "error", + "no-unsanitized/property": "error", + "perfectionist/sort-exports": "error", + "perfectionist/sort-named-exports": "error", + "unicorn/no-abusive-eslint-disable": "error", + "unicorn/no-array-push-push": "error", + "unicorn/no-instanceof-array": "error", + "unicorn/no-invalid-remove-event-listener": "error", + "unicorn/no-new-buffer": "error", + "unicorn/no-typeof-undefined": ["error", { checkGlobalVariables: false }], + "unicorn/no-useless-promise-resolve-reject": "error", + "unicorn/no-useless-spread": "error", + "unicorn/prefer-array-find": "error", + "unicorn/prefer-array-flat": "error", + "unicorn/prefer-array-flat-map": "error", + "unicorn/prefer-array-index-of": "error", + "unicorn/prefer-array-some": "error", + "unicorn/prefer-at": "error", + "unicorn/prefer-date-now": "error", + "unicorn/prefer-dom-node-append": "error", + "unicorn/prefer-dom-node-remove": "error", + "unicorn/prefer-includes": "error", + "unicorn/prefer-logical-operator-over-ternary": "error", + "unicorn/prefer-modern-dom-apis": "error", + "unicorn/prefer-modern-math-apis": "error", + "unicorn/prefer-negative-index": "error", + "unicorn/prefer-optional-catch-binding": "error", + "unicorn/prefer-regexp-test": "error", + "unicorn/prefer-string-replace-all": "error", + "unicorn/prefer-string-starts-ends-with": "error", + "unicorn/prefer-ternary": ["error", "only-single-line"], + "unicorn/throw-new-error": "error", + + // Possible errors + "for-direction": "error", + "getter-return": "error", + "no-async-promise-executor": "error", + "no-cond-assign": ["error", "except-parens"], + "no-constant-condition": ["error", { checkLoops: false }], + "no-debugger": "error", + "no-dupe-args": "error", + "no-dupe-else-if": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty": ["error", { allowEmptyCatch: true }], + "no-empty-character-class": "error", + "no-ex-assign": "error", + "no-extra-boolean-cast": "error", + "no-func-assign": "error", + "no-inner-declarations": ["error", "functions"], + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-loss-of-precision": "error", + "no-obj-calls": "error", + "no-promise-executor-return": "error", + "no-regex-spaces": "error", + "no-setter-return": "error", + "no-sparse-arrays": "error", + "no-template-curly-in-string": "error", + "no-unexpected-multiline": "error", + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unsafe-optional-chaining": [ + "error", + { disallowArithmeticOperators: true }, + ], + "no-unused-private-class-members": "error", + "use-isnan": ["error", { enforceForIndexOf: true }], + "valid-typeof": ["error", { requireStringLiterals: true }], + + // Best Practices + "accessor-pairs": [ + "error", + { setWithoutGet: true, enforceForClassMembers: true }, + ], + "consistent-return": "error", + curly: ["error", "all"], + "default-case-last": "error", + "dot-notation": "error", + eqeqeq: ["error", "always"], + "grouped-accessor-pairs": ["error", "getBeforeSet"], + "no-alert": "error", + "no-caller": "error", + "no-else-return": "error", + "no-empty-pattern": "error", + "no-eval": "error", + "no-extend-native": "error", + "no-extra-bind": "error", + "no-extra-label": "error", + "no-fallthrough": "error", + "no-floating-decimal": "error", + "no-global-assign": "error", + "no-implied-eval": "error", + "no-iterator": "error", + "no-lone-blocks": "error", + "no-lonely-if": "error", + "no-multi-str": "error", + "no-new": "error", + "no-new-func": "error", + "no-new-symbol": "error", + "no-new-wrappers": "error", + "no-octal-escape": "error", + "no-octal": "error", + "no-redeclare": "error", + "no-return-await": "error", + "no-self-assign": "error", + "no-self-compare": "error", + "no-throw-literal": "error", + "no-unused-expressions": "error", + "no-unused-labels": "error", + "no-useless-call": "error", + "no-useless-catch": "error", + "no-useless-concat": "error", + "no-useless-escape": "error", + "no-useless-return": "error", + "prefer-promise-reject-errors": "error", + "prefer-spread": "error", + "wrap-iife": ["error", "any"], + yoda: ["error", "never", { exceptRange: true }], + + // Strict Mode + strict: ["off", "global"], + + // Variables + "no-delete-var": "error", + "no-label-var": "error", + "no-shadow": "error", + "no-shadow-restricted-names": "error", + "no-undef-init": "error", + "no-undef": ["error", { typeof: true }], + "no-unused-vars": ["error", { vars: "all", args: "none" }], + "no-use-before-define": [ + "error", + { functions: false, classes: false, variables: false }, + ], + + // Stylistic Issues + "lines-between-class-members": ["error", "always"], + "max-len": ["error", { code: 1000, comments: 80, ignoreUrls: true }], + "new-cap": ["error", { newIsCap: true, capIsNew: false }], + "no-array-constructor": "error", + "no-multiple-empty-lines": ["error", { max: 1, maxEOF: 0, maxBOF: 1 }], + "no-nested-ternary": "error", + "no-new-object": "error", + "no-restricted-syntax": [ + "error", + { + selector: + "BinaryExpression[operator='instanceof'][right.name='Object']", + message: "Use `typeof` rather than `instanceof Object`.", + }, + { + selector: "CallExpression[callee.name='assert'][arguments.length!=2]", + message: "`assert()` must always be invoked with two arguments.", + }, + { + selector: "CallExpression[callee.name='isCmd'][arguments.length<2]", + message: + "Use `instanceof Cmd` rather than `isCmd()` with one argument.", + }, + { + selector: "CallExpression[callee.name='isDict'][arguments.length<2]", + message: + "Use `instanceof Dict` rather than `isDict()` with one argument.", + }, + { + selector: "CallExpression[callee.name='isName'][arguments.length<2]", + message: + "Use `instanceof Name` rather than `isName()` with one argument.", + }, + { + selector: "NewExpression[callee.name='Cmd']", + message: "Use `Cmd.get()` rather than `new Cmd()`.", + }, + { + selector: "NewExpression[callee.name='Name']", + message: "Use `Name.get()` rather than `new Name()`.", + }, + { + selector: "NewExpression[callee.name='Ref']", + message: "Use `Ref.get()` rather than `new Ref()`.", + }, + ], + "no-unneeded-ternary": "error", + "operator-assignment": "error", + "prefer-exponentiation-operator": "error", + "spaced-comment": ["error", "always", { block: { balanced: true } }], + + // ECMAScript 6 + "arrow-body-style": ["error", "as-needed"], + "constructor-super": "error", + "no-class-assign": "error", + "no-const-assign": "error", + "no-dupe-class-members": "error", + "no-duplicate-imports": "error", + "no-this-before-super": "error", + "no-useless-computed-key": "error", + "no-useless-constructor": "error", + "no-useless-rename": "error", + "no-var": "error", + "object-shorthand": ["error", "always", { avoidQuotes: true }], + "prefer-const": "error", + "require-yield": "error", + "sort-imports": ["error", { ignoreCase: true }], + "template-curly-spacing": ["error", "never"], + }, + }, + + /* ======================================================================== *\ + Test-specific rules + \* ======================================================================== */ + + { + files: jsFiles("test"), + + plugins: { jasmine }, + + languageOptions: { + globals: { + ...globals.node, + ...globals.jasmine, + }, + }, + rules: { + ...jasmine.configs.recommended.rules, + "jasmine/new-line-before-expect": "off", + "jasmine/new-line-between-declarations": "off", + "jasmine/no-focused-tests": "error", + "jasmine/no-pending-tests": "off", + "jasmine/no-spec-dupes": ["error", "branch"], + "jasmine/no-suite-dupes": ["error", "branch"], + "jasmine/prefer-jasmine-matcher": "off", + "jasmine/prefer-toHaveBeenCalledWith": "off", + }, + }, + { + files: jsFiles("test/fuzz"), + rules: { + "import/no-unresolved": [ + "error", + { ignore: [".*/build/image_decoders/.*"] }, + ], + }, + }, + { + files: jsFiles("test/unit"), + rules: { + "import/no-unresolved": ["error", { ignore: ["pdfjs/"] }], + }, + }, + { + files: jsFiles("test/integration"), + rules: { + "no-restricted-syntax": [ + "error", + { + selector: "CallExpression[callee.name='waitForTimeout']", + message: + "`waitForTimeout` can cause intermittent failures and should not be used (see issue #17656 for replacements).", + }, + ], + }, + }, + + /* ======================================================================== *\ + External libraries + \* ======================================================================== */ + + { + files: jsFiles("external"), + + languageOptions: { globals: globals.node }, + }, + + /* ======================================================================== *\ + Examples + \* ======================================================================== */ + + { + files: jsFiles("examples"), + + languageOptions: { + globals: { + pdfjsImageDecoders: false, + pdfjsLib: false, + pdfjsViewer: false, + }, + }, + }, + { + files: [...jsFiles("examples/node"), ...jsFiles("examples/webpack")], + + languageOptions: { globals: globals.node }, + }, + + /* ======================================================================== *\ + Chromium extension + \* ======================================================================== */ + + { + files: jsFiles("extensions/chromium"), + + languageOptions: { + globals: globals.webextensions, + sourceType: "script", + }, + + rules: { + "no-var": "off", + }, + }, + { + files: chromiumExtensionServiceWorkerFiles, + + languageOptions: { + globals: globals.serviceworker, + sourceType: "script", + }, + }, + + /* ======================================================================== *\ + Other + \* ======================================================================== */ + { + files: ["gulpfile.mjs"], + languageOptions: { globals: globals.node }, + }, +]; diff --git a/examples/.eslintrc b/examples/.eslintrc deleted file mode 100644 index 433abdbfab2c4..0000000000000 --- a/examples/.eslintrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "globals": { - "pdfjsImageDecoders": false, - "pdfjsLib": false, - "pdfjsViewer": false, - }, -} diff --git a/examples/node/.eslintrc b/examples/node/.eslintrc deleted file mode 100644 index 46f120c21a4f5..0000000000000 --- a/examples/node/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "env": { - "node": true, - }, -} diff --git a/examples/webpack/.eslintrc b/examples/webpack/.eslintrc deleted file mode 100644 index 46f120c21a4f5..0000000000000 --- a/examples/webpack/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "env": { - "node": true, - }, -} diff --git a/external/.eslintrc b/external/.eslintrc deleted file mode 100644 index e3523dce526ed..0000000000000 --- a/external/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": [ - ../.eslintrc - ], - - "env": { - "node": true, - }, -} diff --git a/gulpfile.mjs b/gulpfile.mjs index ff4802cc1f785..7c0460d0f5c78 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -12,7 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* eslint-env node */ import { babelPluginPDFJSPreprocessor, @@ -1956,8 +1955,6 @@ gulp.task("lint", function (done) { // Ensure that we lint the Firefox specific *.jsm files too. const esLintOptions = [ "node_modules/eslint/bin/eslint", - "--ext", - ".js,.jsm,.mjs,.json", ".", "--report-unused-disable-directives", ]; diff --git a/package-lock.json b/package-lock.json index dc1270cb909f1..c059aba741a2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,11 +24,12 @@ "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", - "eslint-plugin-json": "^3.1.0", + "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.0", + "globals": "^15.12.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", @@ -5454,16 +5455,17 @@ } }, "node_modules/eslint-plugin-json": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-3.1.0.tgz", - "integrity": "sha512-MrlG2ynFEHe7wDGwbUuFPsaT2b1uhuEFhJ+W1f1u+1C2EkXmTYJp4B1aAdQQ8M+CC3t//N/oRKiIVw14L2HR1g==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-4.0.1.tgz", + "integrity": "sha512-3An5ISV5dq/kHfXdNyY5TUe2ONC3yXFSkLX2gu+W8xAhKhfvrRvkSAeKXCxZqZ0KJLX15ojBuLPyj+UikQMkOA==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.21", "vscode-json-languageservice": "^4.1.6" }, "engines": { - "node": ">=12.0" + "node": ">=18.0" } }, "node_modules/eslint-plugin-no-unsanitized": { @@ -6967,9 +6969,9 @@ } }, "node_modules/globals": { - "version": "15.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.10.0.tgz", - "integrity": "sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index de2ae98c7ac9e..4a1a069af5e4f 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,12 @@ "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", - "eslint-plugin-json": "^3.1.0", + "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.0", + "globals": "^15.12.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", diff --git a/src/core/image_resizer.js b/src/core/image_resizer.js index 8652a828b60b2..a21e175ebe6f3 100644 --- a/src/core/image_resizer.js +++ b/src/core/image_resizer.js @@ -48,11 +48,9 @@ class ImageResizer { return shadow( this, "canUseImageDecoder", - // eslint-disable-next-line no-undef this.#isChrome || typeof ImageDecoder === "undefined" ? Promise.resolve(false) - : // eslint-disable-next-line no-undef - ImageDecoder.isTypeSupported("image/bmp") + : ImageDecoder.isTypeSupported("image/bmp") ); } @@ -185,7 +183,6 @@ class ImageResizer { let decoder, imagePromise; if (await ImageResizer.canUseImageDecoder) { - // eslint-disable-next-line no-undef decoder = new ImageDecoder({ data, type: "image/bmp", diff --git a/src/core/jpeg_stream.js b/src/core/jpeg_stream.js index 6cf2de2cba764..f25ae4e40b2b7 100644 --- a/src/core/jpeg_stream.js +++ b/src/core/jpeg_stream.js @@ -36,11 +36,9 @@ class JpegStream extends DecodeStream { return shadow( this, "canUseImageDecoder", - // eslint-disable-next-line no-undef typeof ImageDecoder === "undefined" ? Promise.resolve(false) - : // eslint-disable-next-line no-undef - ImageDecoder.isTypeSupported("image/jpeg") + : ImageDecoder.isTypeSupported("image/jpeg") ); } @@ -163,7 +161,6 @@ class JpegStream extends DecodeStream { if (!JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform)) { return null; } - // eslint-disable-next-line no-undef decoder = new ImageDecoder({ data, type: "image/jpeg", diff --git a/test/.eslintrc b/test/.eslintrc deleted file mode 100644 index 4f371e4248581..0000000000000 --- a/test/.eslintrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "plugins": ["jasmine"], - "extends": ["../.eslintrc", "plugin:jasmine/recommended"], - "env": { - "node": true, - "jasmine": true - }, - "rules": { - "jasmine/new-line-before-expect": "off", - "jasmine/new-line-between-declarations": "off", - "jasmine/no-focused-tests": "error", - "jasmine/no-pending-tests": "off", - "jasmine/no-spec-dupes": ["error", "branch"], - "jasmine/no-suite-dupes": ["error", "branch"], - "jasmine/prefer-jasmine-matcher": "off", - "jasmine/prefer-toHaveBeenCalledWith": "off" - } -} diff --git a/test/fuzz/.eslintrc b/test/fuzz/.eslintrc deleted file mode 100644 index 7d611b5c61737..0000000000000 --- a/test/fuzz/.eslintrc +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "rules": { - "import/no-unresolved": ["error", { "ignore": [".*/build/image_decoders/.*"] }], - }, -} diff --git a/test/integration/.eslintrc b/test/integration/.eslintrc deleted file mode 100644 index 8aedbe37f89f8..0000000000000 --- a/test/integration/.eslintrc +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "rules": { - "no-restricted-syntax": ["error", - { - "selector": "CallExpression[callee.name='waitForTimeout']", - "message": "`waitForTimeout` can cause intermittent failures and should not be used (see issue #17656 for replacements).", - }, - ], - }, -} diff --git a/test/unit/.eslintrc b/test/unit/.eslintrc deleted file mode 100644 index 69af6d92d1199..0000000000000 --- a/test/unit/.eslintrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": [ - "../.eslintrc" - ], - - "rules": { - // Plugins - "import/no-unresolved": ["error", { "ignore": ["pdfjs/"] }], - }, -} From ecb4f3c8a1326515f0fcd5e3d1b0d57527594652 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 11 Nov 2024 11:56:47 +0100 Subject: [PATCH 045/338] Add a `PartialEvaluator` helper for fetching CMap and Standard Font data This avoids a little bit of code duplication, which cannot hurt. --- src/core/evaluator.js | 50 ++++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 29 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index d6d70bbdbc2d7..8be568a40f620 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -381,6 +381,16 @@ class PartialEvaluator { return false; } + async #fetchData(url) { + const response = await fetch(url); + if (!response.ok) { + throw new Error( + `Failed to fetch file "${url}" with "${response.statusText}".` + ); + } + return new Uint8Array(await response.arrayBuffer()); + } + async fetchBuiltInCMap(name) { const cachedData = this.builtInCMapCache.get(name); if (cachedData) { @@ -390,17 +400,10 @@ class PartialEvaluator { if (this.options.cMapUrl !== null) { // Only compressed CMaps are (currently) supported here. - const url = `${this.options.cMapUrl}${name}.bcmap`; - const response = await fetch(url); - if (!response.ok) { - throw new Error( - `fetchBuiltInCMap: failed to fetch file "${url}" with "${response.statusText}".` - ); - } - data = { - cMapData: new Uint8Array(await response.arrayBuffer()), - isCompressed: true, - }; + const cMapData = await this.#fetchData( + `${this.options.cMapUrl}${name}.bcmap` + ); + data = { cMapData, isCompressed: true }; } else { // Get the data on the main-thread instead. data = await this.handler.sendWithPromise("FetchBuiltInCMap", { name }); @@ -431,30 +434,19 @@ class PartialEvaluator { filename = standardFontNameToFileName[name]; let data; - if (this.options.standardFontDataUrl !== null) { - const url = `${this.options.standardFontDataUrl}${filename}`; - const response = await fetch(url); - if (!response.ok) { - warn( - `fetchStandardFontData: failed to fetch file "${url}" with "${response.statusText}".` + try { + if (this.options.standardFontDataUrl !== null) { + data = await this.#fetchData( + `${this.options.standardFontDataUrl}${filename}` ); } else { - data = new Uint8Array(await response.arrayBuffer()); - } - } else { - // Get the data on the main-thread instead. - try { + // Get the data on the main-thread instead. data = await this.handler.sendWithPromise("FetchStandardFontData", { filename, }); - } catch (e) { - warn( - `fetchStandardFontData: failed to fetch file "${filename}" with "${e}".` - ); } - } - - if (!data) { + } catch (ex) { + warn(ex); return null; } // Cache the "raw" standard font data, to avoid fetching it repeatedly From 6244859568e0e02cd9574d6207c136853d5202e6 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Tue, 12 Nov 2024 20:49:27 +0100 Subject: [PATCH 046/338] Use Python 3.13 in the GitHub workflows Python 3.13 is the current version and was released over a month ago (see https://devguide.python.org/versions). The dependencies we use now support Python 3.13, most importantly `fonttools` which uses OS-specific builds and for which compatibility got introduced in https://github.com/fonttools/fonttools/pull/3656 and the corresponding `cp313` wheels for all distributions are published on https://pypi.org/project/fonttools/#files. Moreover, we fix forgotten `npx` usage in the font tests README which was encountered while testing this patch. --- .github/workflows/fluent_linter.yml | 4 ++-- .github/workflows/font_tests.yml | 4 ++-- test/font/README.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/fluent_linter.yml b/.github/workflows/fluent_linter.yml index e3137415c8263..786c1c9413f03 100644 --- a/.github/workflows/fluent_linter.yml +++ b/.github/workflows/fluent_linter.yml @@ -27,10 +27,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Use Python 3.12 + - name: Use Python 3.13 uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.13' cache: 'pip' - name: Install Fluent dependencies diff --git a/.github/workflows/font_tests.yml b/.github/workflows/font_tests.yml index ff8353b371ae8..5ec02590d8d87 100644 --- a/.github/workflows/font_tests.yml +++ b/.github/workflows/font_tests.yml @@ -48,10 +48,10 @@ jobs: - name: Install dependencies run: npm ci - - name: Use Python 3.12 + - name: Use Python 3.13 uses: actions/setup-python@v5 with: - python-version: '3.12' + python-version: '3.13' cache: 'pip' - name: Install Fonttools diff --git a/test/font/README.md b/test/font/README.md index c3f31cc9e52f2..ec0bfd5ba3fa4 100644 --- a/test/font/README.md +++ b/test/font/README.md @@ -32,5 +32,5 @@ it before running the font tests: python3 -m venv venv source venv/bin/activate pip install fonttools -gulp fonttest +npx gulp fonttest ``` From cc5170febfb69459de02efe350375b3f1444949c Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Tue, 12 Nov 2024 20:22:27 +0100 Subject: [PATCH 047/338] Update dependencies to the most recent versions --- package-lock.json | 32 ++++++++++++++++---------------- package.json | 6 +++--- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index c059aba741a2e..c39f8b2fc92d1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,10 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.60", - "@types/node": "^22.8.7", + "@types/node": "^22.9.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001677", + "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", @@ -44,7 +44,7 @@ "metalsmith-html-relative": "^2.0.5", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", @@ -2643,9 +2643,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.7.tgz", - "integrity": "sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==", + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3893,9 +3893,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001677", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001677.tgz", - "integrity": "sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==", + "version": "1.0.30001680", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", + "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", "dev": true, "funding": [ { @@ -10286,9 +10286,9 @@ "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, @@ -10372,9 +10372,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -10393,7 +10393,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { diff --git a/package.json b/package.json index 4a1a069af5e4f..6ab9441b64d66 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,10 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.60", - "@types/node": "^22.8.7", + "@types/node": "^22.9.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001677", + "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", "eslint": "^8.57.1", "eslint-plugin-import": "^2.31.0", @@ -39,7 +39,7 @@ "metalsmith-html-relative": "^2.0.5", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.4.47", + "postcss": "^8.4.49", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", From 599c80336013447d53e78f7f4f01032267647e0f Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Tue, 12 Nov 2024 20:26:32 +0100 Subject: [PATCH 048/338] Upgrade `eslint` to version 9 This is unblocked now that all dependencies have been updated and the flat configuration format (compatible with ESLint 8 and 9) was introduced first. The following deprecation warnings during `npm install` are resolved by this upgrade: ``` npm warn deprecated @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead npm warn deprecated eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options. ``` Note that according to https://eslint.org/version-support ESLint 8 is officially EOL now, and ESLint 9 has been released for over seven months and is the only officially supported version. Fixes #17928. --- package-lock.json | 456 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 232 insertions(+), 226 deletions(-) diff --git a/package-lock.json b/package-lock.json index c39f8b2fc92d1..b1b221e94b9da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", - "eslint": "^8.57.1", + "eslint": "^9.14.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", @@ -1818,24 +1818,51 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -1843,7 +1870,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -1853,18 +1880,17 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -1875,6 +1901,7 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -1882,26 +1909,37 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/js": { + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", + "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@eslint/plugin-kit": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", + "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@fluent/bundle": { @@ -1950,20 +1988,42 @@ "node": ">=10.13.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -1979,13 +2039,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -2603,10 +2669,11 @@ "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -2820,12 +2887,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -3009,6 +3070,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -4842,18 +4904,6 @@ "dev": true, "license": "MIT" }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -5261,60 +5311,64 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", + "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.14.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.0", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -5692,15 +5746,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -5716,12 +5761,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5763,16 +5802,30 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -5783,6 +5836,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -5815,21 +5869,6 @@ "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5839,31 +5878,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -5935,27 +5949,6 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/eslint/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -5968,42 +5961,32 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "prelude-ls": "^1.2.1" + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -6306,15 +6289,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/file-uri-to-path": { @@ -6418,17 +6402,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { @@ -7053,12 +7037,6 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, "node_modules/gray-matter": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", @@ -7966,15 +7944,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -8880,6 +8849,20 @@ "node": ">=10.13.0" } }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/liftoff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-5.0.0.tgz", @@ -10787,6 +10770,16 @@ "node": ">=6" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prettier": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", @@ -13431,6 +13424,19 @@ "node": "*" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", diff --git a/package.json b/package.json index 6ab9441b64d66..39b5bc716f3a6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", - "eslint": "^8.57.1", + "eslint": "^9.14.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", From 6047e11619b124833f4c7ef883f1f2f60af0d874 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Tue, 12 Nov 2024 20:23:27 +0100 Subject: [PATCH 049/338] Update translations to the most recent versions --- l10n/es-ES/viewer.ftl | 4 ++++ l10n/eu/viewer.ftl | 4 ++++ l10n/fi/viewer.ftl | 4 ++++ l10n/gn/viewer.ftl | 2 ++ l10n/hr/viewer.ftl | 24 +++++++++++++++++++++++- l10n/hu/viewer.ftl | 4 ++++ l10n/it/viewer.ftl | 25 +++++++++++++++++++++---- l10n/ja/viewer.ftl | 4 ++++ l10n/kk/viewer.ftl | 4 ++++ l10n/nb-NO/viewer.ftl | 4 ++++ l10n/nn-NO/viewer.ftl | 4 ++++ l10n/pa-IN/viewer.ftl | 4 ++++ l10n/pt-PT/viewer.ftl | 4 ++++ l10n/sl/viewer.ftl | 4 ++++ l10n/sq/viewer.ftl | 4 ++++ l10n/tr/viewer.ftl | 4 ++++ l10n/uk/viewer.ftl | 4 ++++ 17 files changed, 102 insertions(+), 5 deletions(-) diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index 43df2afc18c88..73da02eccd02a 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Añadir imagen pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar el grosor al resaltar elementos que no sean texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Empiece a escribir… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Empezar a escribir… diff --git a/l10n/eu/viewer.ftl b/l10n/eu/viewer.ftl index 7675ffea6a6a8..6a49f06b0f644 100644 --- a/l10n/eu/viewer.ftl +++ b/l10n/eu/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Gehitu irudia pdfjs-editor-free-highlight-thickness-input = Loditasuna pdfjs-editor-free-highlight-thickness-title = .title = Aldatu loditasuna testua ez beste elementuak nabarmentzean +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Testu-editorea + .default-content = Hasi idazten… pdfjs-free-text = .aria-label = Testu-editorea pdfjs-free-text-default-content = Hasi idazten… diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 88c96de8f3b64..643fefbbe7d04 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Lisää kuva pdfjs-editor-free-highlight-thickness-input = Paksuus pdfjs-editor-free-highlight-thickness-title = .title = Muuta paksuutta korostaessasi muita kohteita kuin tekstiä +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstimuokkain + .default-content = Aloita kirjoittaminen… pdfjs-free-text = .aria-label = Tekstimuokkain pdfjs-free-text-default-content = Aloita kirjoittaminen… diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index 6a34d65ebec69..fe2ba9b97910d 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -471,9 +471,11 @@ pdfjs-image-alt-text-settings-button-label = Ta’ãnga moñe’ẽrã mokõiha pdfjs-editor-alt-text-settings-dialog-label = Ta’ãnga moñe’ẽrã mokõiha ñemboheko pdfjs-editor-alt-text-settings-automatic-title = Moñe’ẽrã mokõiha ijeheguíva pdfjs-editor-alt-text-settings-create-model-button-label = Emoheñói moñe’ẽrã mokõiha ijeheguíva +pdfjs-editor-alt-text-settings-create-model-description = Ñemyesakã mbykymi opavave tapicha ohecha’ỹva upe ta’ãnga térã pe ta’ãnga nahenyhẽiramo. # Variables: # $totalSize (Number) - the total size (in MB) of the AI model. pdfjs-editor-alt-text-settings-download-model-label = Peteĩva IA moñe’ẽrã mokõiha ({ $totalSize } MB) +pdfjs-editor-alt-text-settings-ai-model-description = Oku’e mba’e’okaitépe umi mba’ekuaarã hekoñemi hag̃ua. Tekotevẽva moñe’ẽrã ykegua ijeheguívape. pdfjs-editor-alt-text-settings-delete-model-button = Mboguete pdfjs-editor-alt-text-settings-download-model-button = Mboguejy pdfjs-editor-alt-text-settings-downloading-model-button = Emboguejyhína… diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index 0c66341f762d7..607a17540c31e 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -119,12 +119,15 @@ pdfjs-document-properties-keywords = Ključne riječi: pdfjs-document-properties-creation-date = Datum stvaranja: pdfjs-document-properties-modification-date = Datum promjene: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } pdfjs-document-properties-creator = Stvaratelj: pdfjs-document-properties-producer = PDF stvaratelj: -pdfjs-document-properties-version = PDF inačica: +pdfjs-document-properties-version = PDF verzija: pdfjs-document-properties-page-count = Broj stranica: pdfjs-document-properties-page-size = Dimenzije stranice: pdfjs-document-properties-page-size-unit-inches = in @@ -277,6 +280,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [{ $type } Bilješka] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -421,6 +427,18 @@ pdfjs-editor-new-alt-text-disclaimer1 = Ovaj je alternativni tekst stvoren autom pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saznaj više pdfjs-editor-new-alt-text-create-automatically-button-label = Automatski stvori alternativni tekst pdfjs-editor-new-alt-text-error-title = Nije bilo moguće automatski izraditi alternativni tekst +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) + .aria-valuetext = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button-label = Alternativni tekst je dodan +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button-label = Nedostaje alternativni tekst +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button-label = Pregledaj alternativni tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: # $generatedAltText (String) - the generated alt-text. @@ -434,6 +452,10 @@ pdfjs-image-alt-text-settings-button-label = Postavke alternativnog teksta slike pdfjs-editor-alt-text-settings-dialog-label = Postavke alternativnog teksta slike pdfjs-editor-alt-text-settings-automatic-title = Automatski alternativni tekst pdfjs-editor-alt-text-settings-create-model-button-label = Stvori alternativni tekst automatski +pdfjs-editor-alt-text-settings-create-model-description = Predlaže opise koji pomažu osobama koji ne mogu vidjeti sliku ili kada se slika ne učita. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = Alternativni tekst UI modela ({ $totalSize } MB) pdfjs-editor-alt-text-settings-ai-model-description = Radi lokalno na tvom uređaju kako bi tvoji podaci ostali privatni. Potrebno za automatski alternativni tekst. pdfjs-editor-alt-text-settings-delete-model-button = Izbriši pdfjs-editor-alt-text-settings-download-model-button = Preuzmi diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index d8f5c5eaae0b5..e38ac10a3180a 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Kép hozzáadása pdfjs-editor-free-highlight-thickness-input = Vastagság pdfjs-editor-free-highlight-thickness-title = .title = Vastagság módosítása, ha nem szöveges elemeket emel ki +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Szövegszerkesztő + .default-content = Kezdjen gépelni… pdfjs-free-text = .aria-label = Szövegszerkesztő pdfjs-free-text-default-content = Kezdjen el gépelni… diff --git a/l10n/it/viewer.ftl b/l10n/it/viewer.ftl index 9007d7c17c170..c30efec56a782 100644 --- a/l10n/it/viewer.ftl +++ b/l10n/it/viewer.ftl @@ -104,9 +104,11 @@ pdfjs-document-properties-button = pdfjs-document-properties-button-label = Proprietà del documento… pdfjs-document-properties-file-name = Nome file: pdfjs-document-properties-file-size = Dimensione file: +# Variables: # $kb (Number) - the PDF file size in kilobytes # $b (Number) - the PDF file size in bytes pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte) +# Variables: # $mb (Number) - the PDF file size in megabytes # $b (Number) - the PDF file size in bytes pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte) @@ -124,6 +126,8 @@ pdfjs-document-properties-subject = Oggetto: pdfjs-document-properties-keywords = Parole chiave: pdfjs-document-properties-creation-date = Data creazione: pdfjs-document-properties-modification-date = Data modifica: +# Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } # Variables: # $date (Date) - the creation/modification date of the PDF file @@ -282,6 +286,8 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [Annotazione: { $type }] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -337,12 +343,13 @@ pdfjs-editor-stamp-add-image-button-label = Aggiungi immagine pdfjs-editor-free-highlight-thickness-input = Spessore pdfjs-editor-free-highlight-thickness-title = .title = Modifica lo spessore della selezione per elementi non testuali -pdfjs-free-text = - .aria-label = Editor di testo -pdfjs-free-text-default-content = Inizia a digitare… +# .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor di testo .default-content = Inizia a digitare… +pdfjs-free-text = + .aria-label = Editor di testo +pdfjs-free-text-default-content = Inizia a digitare… pdfjs-ink = .aria-label = Editor disegni pdfjs-ink-canvas = @@ -350,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Testo alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Modifica testo alternativo pdfjs-editor-alt-text-edit-button-label = Modifica testo alternativo pdfjs-editor-alt-text-dialog-label = Scegli un’opzione pdfjs-editor-alt-text-dialog-description = Il testo alternativo (“alt text”) aiuta quando le persone non possono vedere l’immagine o quando l’immagine non viene caricata. @@ -365,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Contrassegnata come decorativa # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Ad esempio, “Un giovane si siede a tavola per mangiare” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Testo alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -446,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Chiudi pdfjs-editor-new-alt-text-ai-model-downloading-progress = Download in corso del modello IA per il testo alternativo ({ $downloadedSize } di { $totalSize } MB) .aria-valuetext = Download in corso del modello IA per il testo alternativo ({ $downloadedSize } di { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Aggiunto testo alternativo pdfjs-editor-new-alt-text-added-button-label = Aggiunto testo alternativo # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Testo alternativo mancante pdfjs-editor-new-alt-text-missing-button-label = Testo alternativo mancante # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Verifica testo alternativo pdfjs-editor-new-alt-text-to-review-button-label = Verifica testo alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/ja/viewer.ftl b/l10n/ja/viewer.ftl index 97a73987e279d..5f24b7f59a79d 100644 --- a/l10n/ja/viewer.ftl +++ b/l10n/ja/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = 画像を追加 pdfjs-editor-free-highlight-thickness-input = 太さ pdfjs-editor-free-highlight-thickness-title = .title = テキスト以外のアイテムを強調する時の太さを変更します +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = フリーテキスト注釈エディター + .default-content = テキストを入力してください... pdfjs-free-text = .aria-label = フリーテキスト注釈エディター pdfjs-free-text-default-content = テキストを入力してください... diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index 28a89962baf37..a53323e0cbe33 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Суретті қосу pdfjs-editor-free-highlight-thickness-input = Қалыңдығы pdfjs-editor-free-highlight-thickness-title = .title = Мәтіннен басқа элементтерді ерекшелеу кезінде қалыңдықты өзгерту +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Мәтін түзеткіші + .default-content = Теріп бастаңыз… pdfjs-free-text = .aria-label = Мәтін түзеткіші pdfjs-free-text-default-content = Теруді бастау… diff --git a/l10n/nb-NO/viewer.ftl b/l10n/nb-NO/viewer.ftl index d802ebcc4f81e..6165b74d1e35e 100644 --- a/l10n/nb-NO/viewer.ftl +++ b/l10n/nb-NO/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Legg til bilde pdfjs-editor-free-highlight-thickness-input = Tykkelse pdfjs-editor-free-highlight-thickness-title = .title = Endre tykkelse når du markerer andre elementer enn tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstredigering + .default-content = Begynn å skrive… pdfjs-free-text = .aria-label = Tekstredigering pdfjs-free-text-default-content = Begynn å skrive… diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index 3044c57b97e72..065932a86d685 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Legg til bilde pdfjs-editor-free-highlight-thickness-input = Tjukkleik pdfjs-editor-free-highlight-thickness-title = .title = Endre tjukn når du markerer andre element enn tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Tekstredigering + .default-content = Begynn å skrive… pdfjs-free-text = .aria-label = Tekstredigering pdfjs-free-text-default-content = Byrje å skrive… diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index f977edf297f01..3d6e963ffda9f 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = ਚਿੱਤਰ ਜੋੜੋ pdfjs-editor-free-highlight-thickness-input = ਮੋਟਾਈ pdfjs-editor-free-highlight-thickness-title = .title = ਚੀਜ਼ਾਂ ਨੂੰ ਹੋਰ ਲਿਖਤਾਂ ਤੋਂ ਉਘਾੜਨ ਸਮੇਂ ਮੋਟਾਈ ਨੂੰ ਬਦਲੋ +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = ਲਿਖਤ ਐਡੀਟਰ + .default-content = …ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ pdfjs-free-text = .aria-label = ਲਿਖਤ ਐਡੀਟਰ pdfjs-free-text-default-content = …ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ diff --git a/l10n/pt-PT/viewer.ftl b/l10n/pt-PT/viewer.ftl index 4184c0aa95b8f..1db61623bc957 100644 --- a/l10n/pt-PT/viewer.ftl +++ b/l10n/pt-PT/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Adicionar imagem pdfjs-editor-free-highlight-thickness-input = Espessura pdfjs-editor-free-highlight-thickness-title = .title = Alterar espessura quando destacar itens que não sejam texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Comece a escrever… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Começar a digitar… diff --git a/l10n/sl/viewer.ftl b/l10n/sl/viewer.ftl index d30bf3ea38ef5..1b17d9bfa99a4 100644 --- a/l10n/sl/viewer.ftl +++ b/l10n/sl/viewer.ftl @@ -347,6 +347,10 @@ pdfjs-editor-stamp-add-image-button-label = Dodaj sliko pdfjs-editor-free-highlight-thickness-input = Debelina pdfjs-editor-free-highlight-thickness-title = .title = Spremeni debelino pri označevanju nebesedilnih elementov +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Urejevalnik besedila + .default-content = Začnite tipkati … pdfjs-free-text = .aria-label = Urejevalnik besedila pdfjs-free-text-default-content = Začnite tipkati … diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index 78670821cd4d5..61149609a4231 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -334,6 +334,10 @@ pdfjs-editor-stamp-add-image-button-label = Shtoni figurë pdfjs-editor-free-highlight-thickness-input = Trashësi pdfjs-editor-free-highlight-thickness-title = .title = Ndryshoni trashësinë kur theksoni objekte tjetër nga tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Përpunues Tekstesh + .default-content = Filloni të shtypni… pdfjs-free-text = .aria-label = Përpunues Tekstesh pdfjs-free-text-default-content = Filloni të shtypni… diff --git a/l10n/tr/viewer.ftl b/l10n/tr/viewer.ftl index 0d70b3f94a206..4a8f9eed805bd 100644 --- a/l10n/tr/viewer.ftl +++ b/l10n/tr/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Resim ekle pdfjs-editor-free-highlight-thickness-input = Kalınlık pdfjs-editor-free-highlight-thickness-title = .title = Metin dışındaki öğeleri vurgularken kalınlığı değiştir +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Metin düzenleyicisi + .default-content = Yazmaya başlayın… pdfjs-free-text = .aria-label = Metin düzenleyicisi pdfjs-free-text-default-content = Yazmaya başlayın… diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index d11cb440d5a79..09afd34bd736c 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -345,6 +345,10 @@ pdfjs-editor-stamp-add-image-button-label = Додати зображення pdfjs-editor-free-highlight-thickness-input = Товщина pdfjs-editor-free-highlight-thickness-title = .title = Змінюйте товщину під час підсвічування елементів, крім тексту +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Текстовий редактор + .default-content = Напишіть щось… pdfjs-free-text = .aria-label = Текстовий редактор pdfjs-free-text-default-content = Почніть вводити… From e2a6088d7f53a370c5d094b36fac1a219b9d9848 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 12 Nov 2024 16:56:54 +0100 Subject: [PATCH 050/338] [api-minor] Add a `getDocument` option to disable `ImageDecoder` usage This allows end-users to forcibly disable `ImageDecoder` usage, even if the browser appears to support it (similar to the pre-existing option for `OffscreenCanvas`). --- src/core/evaluator.js | 13 +++++-------- src/core/image_resizer.js | 31 ++++++++++++++----------------- src/core/jpeg_stream.js | 14 ++++++++++---- src/core/pdf_manager.js | 6 ++++-- src/display/api.js | 9 +++++++++ src/shared/util.js | 8 ++++++++ 6 files changed, 50 insertions(+), 31 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 8be568a40f620..3fe20d2fa1ca3 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -72,6 +72,7 @@ import { getGlyphsUnicode } from "./glyphlist.js"; import { getMetrics } from "./metrics.js"; import { getUnicodeForGlyph } from "./unicode.js"; import { ImageResizer } from "./image_resizer.js"; +import { JpegStream } from "./jpeg_stream.js"; import { MurmurHash3_64 } from "../shared/murmurhash3.js"; import { OperatorList } from "./operator_list.js"; import { PDFImage } from "./image.js"; @@ -83,6 +84,7 @@ const DefaultPartialEvaluatorOptions = Object.freeze({ ignoreErrors: false, isEvalSupported: true, isOffscreenCanvasSupported: false, + isImageDecoderSupported: false, isChrome: false, canvasMaxAreaInBytes: -1, fontExtraProperties: false, @@ -233,14 +235,9 @@ class PartialEvaluator { this._regionalImageCache = new RegionalImageCache(); this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes); - } else { - ImageResizer.setOptions({ - isChrome: this.options.isChrome, - maxArea: this.options.canvasMaxAreaInBytes, - }); - } + + ImageResizer.setOptions(this.options); + JpegStream.setOptions(this.options); } /** diff --git a/src/core/image_resizer.js b/src/core/image_resizer.js index a21e175ebe6f3..e5ada29c20b9e 100644 --- a/src/core/image_resizer.js +++ b/src/core/image_resizer.js @@ -34,7 +34,7 @@ const MAX_ERROR = 128; class ImageResizer { static #goodSquareLength = MIN_IMAGE_DIM; - static #isChrome = false; + static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported; constructor(imgData, isMask) { this._imgData = imgData; @@ -42,15 +42,12 @@ class ImageResizer { } static get canUseImageDecoder() { - // TODO: remove the isChrome, once Chrome doesn't crash anymore with - // issue6741.pdf. - // https://issues.chromium.org/issues/374807001. return shadow( this, "canUseImageDecoder", - this.#isChrome || typeof ImageDecoder === "undefined" - ? Promise.resolve(false) - : ImageDecoder.isTypeSupported("image/bmp") + this.#isImageDecoderSupported + ? ImageDecoder.isTypeSupported("image/bmp") + : Promise.resolve(false) ); } @@ -121,19 +118,19 @@ class ImageResizer { } } - static setMaxArea(area) { + static setOptions({ + canvasMaxAreaInBytes = -1, + isChrome = false, + isImageDecoderSupported = false, + }) { if (!this._hasMaxArea) { // Divide by 4 to have the value in pixels. - this.MAX_AREA = area >> 2; + this.MAX_AREA = canvasMaxAreaInBytes >> 2; } - } - - static setOptions(opts) { - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - throw new Error("Not implemented: setOptions"); - } - this.setMaxArea(opts.maxArea ?? -1); - this.#isChrome = opts.isChrome ?? false; + // TODO: remove the isChrome, once Chrome doesn't crash anymore with + // issue6741.pdf. + // https://issues.chromium.org/issues/374807001. + this.#isImageDecoderSupported = isImageDecoderSupported && !isChrome; } static _areGoodDims(width, height) { diff --git a/src/core/jpeg_stream.js b/src/core/jpeg_stream.js index f25ae4e40b2b7..70789d543307a 100644 --- a/src/core/jpeg_stream.js +++ b/src/core/jpeg_stream.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { shadow, warn } from "../shared/util.js"; +import { FeatureTest, shadow, warn } from "../shared/util.js"; import { DecodeStream } from "./decode_stream.js"; import { Dict } from "./primitives.js"; import { JpegImage } from "./jpg.js"; @@ -23,6 +23,8 @@ import { JpegImage } from "./jpg.js"; * like all the other DecodeStreams. */ class JpegStream extends DecodeStream { + static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported; + constructor(stream, maybeLength, params) { super(maybeLength); @@ -36,12 +38,16 @@ class JpegStream extends DecodeStream { return shadow( this, "canUseImageDecoder", - typeof ImageDecoder === "undefined" - ? Promise.resolve(false) - : ImageDecoder.isTypeSupported("image/jpeg") + this.#isImageDecoderSupported + ? ImageDecoder.isTypeSupported("image/jpeg") + : Promise.resolve(false) ); } + static setOptions({ isImageDecoderSupported = false }) { + this.#isImageDecoderSupported = isImageDecoderSupported; + } + get bytes() { // If `this.maybeLength` is null, we'll get the entire stream. return shadow(this, "bytes", this.stream.getBytes(this.maybeLength)); diff --git a/src/core/pdf_manager.js b/src/core/pdf_manager.js index 35d34cb537095..94285f47ec48d 100644 --- a/src/core/pdf_manager.js +++ b/src/core/pdf_manager.js @@ -48,10 +48,12 @@ class BasePdfManager { this._password = args.password; this.enableXfa = args.enableXfa; - // Check `OffscreenCanvas` support once, rather than repeatedly throughout - // the worker-thread code. + // Check `OffscreenCanvas` and `ImageDecoder` support once, + // rather than repeatedly throughout the worker-thread code. args.evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported; + args.evaluatorOptions.isImageDecoderSupported &&= + FeatureTest.isImageDecoderSupported; this.evaluatorOptions = Object.freeze(args.evaluatorOptions); } diff --git a/src/display/api.js b/src/display/api.js index 5749d514da3f7..17b5525a78e04 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -177,6 +177,10 @@ const DefaultStandardFontDataFactory = * `OffscreenCanvas` in the worker. Primarily used to improve performance of * image conversion/rendering. * The default value is `true` in web environments and `false` in Node.js. + * @property {boolean} [isImageDecoderSupported] - Determines if we can use + * `ImageDecoder` in the worker. Primarily used to improve performance of + * image conversion/rendering. + * The default value is `true` in web environments and `false` in Node.js. * @property {boolean} [isChrome] - Determines if we can use bmp ImageDecoder. * NOTE: Temporary option until [https://issues.chromium.org/issues/374807001] * is fixed. @@ -284,6 +288,10 @@ function getDocument(src = {}) { typeof src.isOffscreenCanvasSupported === "boolean" ? src.isOffscreenCanvasSupported : !isNodeJS; + const isImageDecoderSupported = + typeof src.isImageDecoderSupported === "boolean" + ? src.isImageDecoderSupported + : !isNodeJS; const isChrome = typeof src.isChrome === "boolean" ? src.isChrome @@ -395,6 +403,7 @@ function getDocument(src = {}) { ignoreErrors, isEvalSupported, isOffscreenCanvasSupported, + isImageDecoderSupported, isChrome, canvasMaxAreaInBytes, fontExtraProperties, diff --git a/src/shared/util.js b/src/shared/util.js index 341f26c0bfd75..60ce504889c5b 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -623,6 +623,14 @@ class FeatureTest { ); } + static get isImageDecoderSupported() { + return shadow( + this, + "isImageDecoderSupported", + typeof ImageDecoder !== "undefined" + ); + } + static get platform() { if ( (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || From 26ef07dd8cf003da166b16616d81aa12e5b9ae9b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 16 Nov 2024 14:48:44 +0100 Subject: [PATCH 051/338] Remove the `extensions/chromium/.eslintrc` file (PR 19029 follow-up) This file became unused in PR 19029, but we apparently forgot to remove it. --- extensions/chromium/.eslintrc | 36 ----------------------------------- 1 file changed, 36 deletions(-) delete mode 100644 extensions/chromium/.eslintrc diff --git a/extensions/chromium/.eslintrc b/extensions/chromium/.eslintrc deleted file mode 100644 index dd74b7b7c64ab..0000000000000 --- a/extensions/chromium/.eslintrc +++ /dev/null @@ -1,36 +0,0 @@ -{ - "extends": [ - ../../.eslintrc - ], - - "env": { - "webextensions": true - }, - - "parserOptions": { - "sourceType": "script" - }, - - "rules": { - "no-var": "off", - }, - - "overrides": [ - { - // Include all files referenced in background.js - "files": [ - "options/migration.js", - "preserve-referer.js", - "pdfHandler.js", - "extension-router.js", - "suppress-update.js", - "telemetry.js" - ], - "env": { - // Background script is a service worker. - "browser": false, - "serviceworker": true - } - } - ] -} From 1617134cb36e92236baecb96fa715d122dfa0b8d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 15 Nov 2024 11:29:57 +0100 Subject: [PATCH 052/338] Enable the ESLint `no-var` rule in the `src/core/evaluator.js` file This was previously attempted in PR 13371, but had to be reverted because of issues related to SystemJS (which has since been removed). Also, while unrelated, shortens an existing conditional assignment. --- src/core/evaluator.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 3fe20d2fa1ca3..b00127e625c22 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -12,7 +12,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* eslint-disable no-var */ import { AbortException, @@ -1887,7 +1886,7 @@ class PartialEvaluator { ); return; case OPS.setFont: - var fontSize = args[1]; + const fontSize = args[1]; // eagerly collect all fonts next( self @@ -1913,7 +1912,7 @@ class PartialEvaluator { parsingText = false; break; case OPS.endInlineImage: - var cacheKey = args[0].cacheKey; + const cacheKey = args[0].cacheKey; if (cacheKey) { const localImage = localImageCache.getByName(cacheKey); if (localImage) { @@ -1946,8 +1945,8 @@ class PartialEvaluator { self.ensureStateFont(stateManager.state); continue; } - var combinedGlyphs = []; - var state = stateManager.state; + const combinedGlyphs = [], + state = stateManager.state; for (const arrItem of args[0]) { if (typeof arrItem === "string") { combinedGlyphs.push(...self.handleText(arrItem, state)); @@ -3079,6 +3078,8 @@ class PartialEvaluator { const operation = {}; let stop, + name, + isValidName, args = []; while (!(stop = timeSlotManager.check())) { // The arguments parsed by read() are not used beyond this loop, so @@ -3098,7 +3099,7 @@ class PartialEvaluator { switch (fn | 0) { case OPS.setFont: // Optimization to ignore multiple identical Tf commands. - var fontNameArg = args[0].name, + const fontNameArg = args[0].name, fontSizeArg = args[1]; if ( textState.font && @@ -3239,12 +3240,10 @@ class PartialEvaluator { break; case OPS.paintXObject: flushTextContentItem(); - if (!xobjs) { - xobjs = resources.get("XObject") || Dict.empty; - } + xobjs ??= resources.get("XObject") || Dict.empty; - var isValidName = args[0] instanceof Name; - var name = args[0].name; + isValidName = args[0] instanceof Name; + name = args[0].name; if (isValidName && emptyXObjectCache.getByName(name)) { break; From 8429648701ad9039887c811a7aa8e665dabea243 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 14 Nov 2024 12:29:52 +0100 Subject: [PATCH 053/338] Enable the ESLint `no-console` rule in parts of the code-base The purpose of these changes is to make it more difficult to accidentally include logging statements, used during development and debugging, when submitting patches for review. For (almost) all code residing in the `src/` folder we should use our existing helper functions to ensure that all logging can be controlled via the `verbosity` API-option. For the `test/unit/` respectively `test/integration/` folders we shouldn't need any "normal" logging, but it should be OK to print the *occasional* warning/error message. Please find additional details about the ESLint rule at https://eslint.org/docs/latest/rules/no-console --- eslint.config.mjs | 8 ++++++++ src/display/display_utils.js | 1 + src/display/editor/tools.js | 2 +- src/pdf.sandbox.js | 1 + src/shared/util.js | 2 ++ test/integration/test_utils.mjs | 6 ++++-- 6 files changed, 17 insertions(+), 3 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index e0c2b8b014e31..16bba1b99fbc5 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -313,6 +313,12 @@ export default [ "template-curly-spacing": ["error", "never"], }, }, + { + files: jsFiles("src"), + rules: { + "no-console": "error", + }, + }, /* ======================================================================== *\ Test-specific rules @@ -354,11 +360,13 @@ export default [ files: jsFiles("test/unit"), rules: { "import/no-unresolved": ["error", { ignore: ["pdfjs/"] }], + "no-console": ["error", { allow: ["warn", "error"] }], }, }, { files: jsFiles("test/integration"), rules: { + "no-console": ["error", { allow: ["warn", "error"] }], "no-restricted-syntax": [ "error", { diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 218a0f33bdd03..16fc7093e8238 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -413,6 +413,7 @@ function noContextMenu(e) { // Deprecated API function -- display regardless of the `verbosity` setting. function deprecated(details) { + // eslint-disable-next-line no-console console.log("Deprecated API usage: " + details); } diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index 9d4fd87476720..40b96897babba 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -166,7 +166,7 @@ class ImageManager { } data.refCounter = 1; } catch (e) { - console.error(e); + warn(e); data = null; } this.#cache.set(key, data); diff --git a/src/pdf.sandbox.js b/src/pdf.sandbox.js index adced961f5426..79cb05ec1afff 100644 --- a/src/pdf.sandbox.js +++ b/src/pdf.sandbox.js @@ -84,6 +84,7 @@ class Sandbox { [buf, this._alertOnError] ); } catch (error) { + // eslint-disable-next-line no-console console.error(error); } finally { if (buf) { diff --git a/src/shared/util.js b/src/shared/util.js index 60ce504889c5b..c4752522fcde9 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -363,6 +363,7 @@ function getVerbosityLevel() { // end users. function info(msg) { if (verbosity >= VerbosityLevel.INFOS) { + // eslint-disable-next-line no-console console.log(`Info: ${msg}`); } } @@ -370,6 +371,7 @@ function info(msg) { // Non-fatal warnings. function warn(msg) { if (verbosity >= VerbosityLevel.WARNINGS) { + // eslint-disable-next-line no-console console.log(`Warning: ${msg}`); } } diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 7e6ec548b0f22..84c74ed43541f 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -309,9 +309,11 @@ async function waitForEvent({ const success = await awaitPromise(handle); if (success === null) { - console.log(`waitForEvent: ${eventName} didn't trigger within the timeout`); + console.warn( + `waitForEvent: ${eventName} didn't trigger within the timeout` + ); } else if (!success) { - console.log(`waitForEvent: ${eventName} triggered, but validation failed`); + console.warn(`waitForEvent: ${eventName} triggered, but validation failed`); } } From ae2b228dabc2349e902fe6cbfc2d7a3f76d738c4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 17 Nov 2024 11:57:45 +0100 Subject: [PATCH 054/338] Avoid redundant CMap-value lookup in `extendCMap` (PR 5101 follow-up) When iterating through `useCMap` the value is already available, without having to manually invoke the `lookup`-method. While this will likely not affect performance in any noticeable way, it's nonetheless unnecessary to lookup an already available value twice. --- src/core/cmap.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/cmap.js b/src/core/cmap.js index 5e7040c6d2a4e..6c0cab60cc6ae 100644 --- a/src/core/cmap.js +++ b/src/core/cmap.js @@ -662,7 +662,7 @@ async function extendCMap(cMap, fetchBuiltInCMap, useCMap) { // any previously defined entries. cMap.useCMap.forEach(function (key, value) { if (!cMap.contains(key)) { - cMap.mapOne(key, cMap.useCMap.lookup(key)); + cMap.mapOne(key, value); } }); From 54e29e49ba6bf64f47af663cf431c36259f722e6 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 16 Nov 2024 11:50:51 +0100 Subject: [PATCH 055/338] Fix a couple of bugs affecting benchmarking - Ensure that `pdfjsTestingUtils` is available when running benchmarking, since that shouldn't be done in TESTING-mode. - Exclude the `test/stats/results/` folder from linting, since it'll contain *generated* JSON-files. --- .prettierignore | 1 + .stylelintignore | 1 + eslint.config.mjs | 1 + src/pdf.js | 2 +- 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.prettierignore b/.prettierignore index e33594bd7c3f8..90371a11625bd 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ external/bcmaps/ external/builder/fixtures/ external/builder/fixtures_babel/ external/quickjs/ +test/stats/results/ test/tmp/ test/pdfs/ web/locale/ diff --git a/.stylelintignore b/.stylelintignore index e33594bd7c3f8..90371a11625bd 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -6,6 +6,7 @@ external/bcmaps/ external/builder/fixtures/ external/builder/fixtures_babel/ external/quickjs/ +test/stats/results/ test/tmp/ test/pdfs/ web/locale/ diff --git a/eslint.config.mjs b/eslint.config.mjs index 16bba1b99fbc5..41ffad5d3f5f6 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -35,6 +35,7 @@ export default [ "external/builder/fixtures_babel/", "external/quickjs/", "external/openjpeg/", + "test/stats/results/", "test/tmp/", "test/pdfs/", "web/locale/", diff --git a/src/pdf.js b/src/pdf.js index 2febc4227393f..ecb6606dd9b14 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -80,7 +80,7 @@ const pdfjsVersion = const pdfjsBuild = typeof PDFJSDev !== "undefined" ? PDFJSDev.eval("BUNDLE_BUILD") : void 0; -if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { +if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING || GENERIC")) { globalThis.pdfjsTestingUtils = { HighlightOutliner, }; From cacc89a29a1e31e4f46975f13940d6a5d34a6a7b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 16 Nov 2024 11:51:03 +0100 Subject: [PATCH 056/338] Convert the `Dict`-implementation to use a `Map` internally With all the recent work happening under https://bugzilla.mozilla.org/show_bug.cgi?id=1851662, the performance of `Map` is already good enough that I believe that we should now be able to utilize it in the `Dict`-class without problem. This patch was tested in Firefox Nightly, specifically build https://hg.mozilla.org/mozilla-central/rev/6c508a387477e3b72db913a9e1761e9a433d06a2, with the following manifest file: ``` [ { "id": "tracemonkey-eq", "file": "pdfs/tracemonkey.pdf", "md5": "9a192d8b1a7dc652a19835f6f08098bd", "rounds": 100, "type": "eq" }, { "id": "issue2618", "file": "pdfs/issue2618.pdf", "md5": "2c554a99a52288ca1a44a422eeafb8fb", "rounds": 100, "type": "eq" } ] ``` which gave the following results, indicating no significant regression, when comparing this patch against the `master` branch: - Overall ``` -- Grouped By browser, pdf, stat -- browser | pdf | stat | Count | Baseline(ms) | Current(ms) | +/- | % | Result(P<.05) ------- | -------------- | ------------ | ----- | ------------ | ----------- | --- | ----- | ------------- firefox | issue2618 | Overall | 100 | 678 | 678 | 0 | 0.04 | firefox | issue2618 | Page Request | 100 | 1 | 1 | 0 | -3.88 | firefox | issue2618 | Rendering | 100 | 677 | 677 | 0 | 0.05 | firefox | tracemonkey-eq | Overall | 1400 | 35 | 36 | 0 | 0.96 | firefox | tracemonkey-eq | Page Request | 1400 | 1 | 1 | 0 | -8.08 | firefox | tracemonkey-eq | Rendering | 1400 | 34 | 35 | 0 | 1.26 | ``` - Page-specific ``` -- Grouped By browser, pdf, page, stat -- browser | pdf | page | stat | Count | Baseline(ms) | Current(ms) | +/- | % | Result(P<.05) ------- | -------------- | ---- | ------------ | ----- | ------------ | ----------- | --- | ------ | ------------- firefox | issue2618 | 0 | Overall | 100 | 678 | 678 | 0 | 0.04 | firefox | issue2618 | 0 | Page Request | 100 | 1 | 1 | 0 | -3.88 | firefox | issue2618 | 0 | Rendering | 100 | 677 | 677 | 0 | 0.05 | firefox | tracemonkey-eq | 0 | Overall | 100 | 23 | 24 | 0 | 1.24 | firefox | tracemonkey-eq | 0 | Page Request | 100 | 1 | 1 | 0 | 19.77 | firefox | tracemonkey-eq | 0 | Rendering | 100 | 23 | 23 | 0 | 0.40 | firefox | tracemonkey-eq | 1 | Overall | 100 | 32 | 32 | -1 | -1.89 | firefox | tracemonkey-eq | 1 | Page Request | 100 | 1 | 1 | 0 | -28.13 | firefox | tracemonkey-eq | 1 | Rendering | 100 | 31 | 31 | 0 | -0.77 | firefox | tracemonkey-eq | 2 | Overall | 100 | 17 | 18 | 1 | 4.60 | firefox | tracemonkey-eq | 2 | Page Request | 100 | 1 | 1 | 0 | 23.53 | slower firefox | tracemonkey-eq | 2 | Rendering | 100 | 17 | 17 | 1 | 3.71 | firefox | tracemonkey-eq | 3 | Overall | 100 | 23 | 24 | 0 | 1.71 | firefox | tracemonkey-eq | 3 | Page Request | 100 | 1 | 1 | 0 | 7.79 | firefox | tracemonkey-eq | 3 | Rendering | 100 | 23 | 23 | 0 | 1.55 | firefox | tracemonkey-eq | 4 | Overall | 100 | 31 | 31 | 1 | 2.49 | firefox | tracemonkey-eq | 4 | Page Request | 100 | 1 | 1 | 0 | 48.96 | firefox | tracemonkey-eq | 4 | Rendering | 100 | 30 | 30 | 0 | 1.05 | firefox | tracemonkey-eq | 5 | Overall | 100 | 31 | 30 | -1 | -2.42 | firefox | tracemonkey-eq | 5 | Page Request | 100 | 2 | 1 | -1 | -49.33 | firefox | tracemonkey-eq | 5 | Rendering | 100 | 29 | 29 | 0 | -0.03 | firefox | tracemonkey-eq | 6 | Overall | 100 | 27 | 27 | 0 | 1.81 | firefox | tracemonkey-eq | 6 | Page Request | 100 | 1 | 1 | 0 | 4.94 | firefox | tracemonkey-eq | 6 | Rendering | 100 | 26 | 27 | 0 | 1.68 | firefox | tracemonkey-eq | 7 | Overall | 100 | 26 | 26 | 1 | 3.13 | firefox | tracemonkey-eq | 7 | Page Request | 100 | 1 | 1 | 0 | 6.98 | firefox | tracemonkey-eq | 7 | Rendering | 100 | 25 | 25 | 1 | 2.92 | firefox | tracemonkey-eq | 8 | Overall | 100 | 25 | 26 | 1 | 5.16 | firefox | tracemonkey-eq | 8 | Page Request | 100 | 1 | 1 | -1 | -41.84 | firefox | tracemonkey-eq | 8 | Rendering | 100 | 23 | 25 | 2 | 8.19 | firefox | tracemonkey-eq | 9 | Overall | 100 | 33 | 33 | 0 | 0.03 | firefox | tracemonkey-eq | 9 | Page Request | 100 | 1 | 1 | 0 | 0.79 | firefox | tracemonkey-eq | 9 | Rendering | 100 | 32 | 32 | 0 | -0.10 | firefox | tracemonkey-eq | 10 | Overall | 100 | 144 | 144 | 1 | 0.52 | firefox | tracemonkey-eq | 10 | Page Request | 100 | 2 | 1 | -1 | -43.52 | firefox | tracemonkey-eq | 10 | Rendering | 100 | 141 | 143 | 2 | 1.18 | firefox | tracemonkey-eq | 11 | Overall | 100 | 24 | 25 | 1 | 2.51 | firefox | tracemonkey-eq | 11 | Page Request | 100 | 1 | 1 | 0 | -4.71 | firefox | tracemonkey-eq | 11 | Rendering | 100 | 23 | 24 | 1 | 2.78 | firefox | tracemonkey-eq | 12 | Overall | 100 | 40 | 39 | -1 | -1.67 | firefox | tracemonkey-eq | 12 | Page Request | 100 | 1 | 1 | 0 | 14.71 | firefox | tracemonkey-eq | 12 | Rendering | 100 | 39 | 38 | -1 | -1.98 | firefox | tracemonkey-eq | 13 | Overall | 100 | 19 | 20 | 1 | 3.09 | firefox | tracemonkey-eq | 13 | Page Request | 100 | 1 | 1 | 0 | 24.79 | firefox | tracemonkey-eq | 13 | Rendering | 100 | 18 | 19 | 0 | 1.70 | ``` --- src/core/primitives.js | 53 +++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/core/primitives.js b/src/core/primitives.js index 0ee5341455d39..bf556b53872f5 100644 --- a/src/core/primitives.js +++ b/src/core/primitives.js @@ -69,7 +69,7 @@ const nonSerializable = function nonSerializableClosure() { class Dict { constructor(xref = null) { // Map should only be used internally, use functions below to access. - this._map = Object.create(null); + this._map = new Map(); this.xref = xref; this.objId = null; this.suppressEncryption = false; @@ -81,12 +81,12 @@ class Dict { } get size() { - return Object.keys(this._map).length; + return this._map.size; } // Automatically dereferences Ref objects. get(key1, key2, key3) { - let value = this._map[key1]; + let value = this._map.get(key1); if (value === undefined && key2 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -94,7 +94,7 @@ class Dict { ) { unreachable("Dict.get: Expected keys to be ordered by length."); } - value = this._map[key2]; + value = this._map.get(key2); if (value === undefined && key3 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -102,7 +102,7 @@ class Dict { ) { unreachable("Dict.get: Expected keys to be ordered by length."); } - value = this._map[key3]; + value = this._map.get(key3); } } if (value instanceof Ref && this.xref) { @@ -113,7 +113,7 @@ class Dict { // Same as get(), but returns a promise and uses fetchIfRefAsync(). async getAsync(key1, key2, key3) { - let value = this._map[key1]; + let value = this._map.get(key1); if (value === undefined && key2 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -121,7 +121,7 @@ class Dict { ) { unreachable("Dict.getAsync: Expected keys to be ordered by length."); } - value = this._map[key2]; + value = this._map.get(key2); if (value === undefined && key3 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -129,7 +129,7 @@ class Dict { ) { unreachable("Dict.getAsync: Expected keys to be ordered by length."); } - value = this._map[key3]; + value = this._map.get(key3); } } if (value instanceof Ref && this.xref) { @@ -140,7 +140,7 @@ class Dict { // Same as get(), but dereferences all elements if the result is an Array. getArray(key1, key2, key3) { - let value = this._map[key1]; + let value = this._map.get(key1); if (value === undefined && key2 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -148,7 +148,7 @@ class Dict { ) { unreachable("Dict.getArray: Expected keys to be ordered by length."); } - value = this._map[key2]; + value = this._map.get(key2); if (value === undefined && key3 !== undefined) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && @@ -156,7 +156,7 @@ class Dict { ) { unreachable("Dict.getArray: Expected keys to be ordered by length."); } - value = this._map[key3]; + value = this._map.get(key3); } } if (value instanceof Ref && this.xref) { @@ -176,16 +176,16 @@ class Dict { // No dereferencing. getRaw(key) { - return this._map[key]; + return this._map.get(key); } getKeys() { - return Object.keys(this._map); + return [...this._map.keys()]; } // No dereferencing. getRawValues() { - return Object.values(this._map); + return [...this._map.values()]; } set(key, value) { @@ -196,16 +196,21 @@ class Dict { unreachable('Dict.set: The "value" cannot be undefined.'); } } - this._map[key] = value; + this._map.set(key, value); } has(key) { - return this._map[key] !== undefined; + return this._map.has(key); } forEach(callback) { - for (const key in this._map) { - callback(key, this.get(key)); + for (const [key, value] of this._map) { + callback( + key, + value instanceof Ref && this.xref + ? this.xref.fetch(value, this.suppressEncryption) + : value + ); } } @@ -226,7 +231,7 @@ class Dict { if (!(dict instanceof Dict)) { continue; } - for (const [key, value] of Object.entries(dict._map)) { + for (const [key, value] of dict._map) { let property = properties.get(key); if (property === undefined) { property = []; @@ -242,20 +247,20 @@ class Dict { } for (const [name, values] of properties) { if (values.length === 1 || !(values[0] instanceof Dict)) { - mergedDict._map[name] = values[0]; + mergedDict._map.set(name, values[0]); continue; } const subDict = new Dict(xref); for (const dict of values) { - for (const [key, value] of Object.entries(dict._map)) { - if (subDict._map[key] === undefined) { - subDict._map[key] = value; + for (const [key, value] of dict._map) { + if (!subDict._map.has(key)) { + subDict._map.set(key, value); } } } if (subDict.size > 0) { - mergedDict._map[name] = subDict; + mergedDict._map.set(name, subDict); } } properties.clear(); From cdec25516ee9ae257b7eb0c7090c44c7e1d67a39 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 16 Nov 2024 11:51:09 +0100 Subject: [PATCH 057/338] Replace the `forEach` method in `Dict` with "proper" iteration support --- src/core/catalog.js | 4 ++-- src/core/document.js | 7 +------ src/core/primitives.js | 8 ++++---- src/core/struct_tree.js | 9 ++++----- src/core/worker.js | 4 ++-- test/unit/primitives_spec.js | 17 ++++++----------- 6 files changed, 19 insertions(+), 30 deletions(-) diff --git a/src/core/catalog.js b/src/core/catalog.js index 8f09309b95ef2..00524c32ee4d9 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -720,12 +720,12 @@ class Catalog { } } } else if (obj instanceof Dict) { - obj.forEach(function (key, value) { + for (const [key, value] of obj) { const dest = fetchDest(value); if (dest) { dests[key] = dest; } - }); + } } return shadow(this, "destinations", dests); } diff --git a/src/core/document.js b/src/core/document.js index 3c259923347fa..1744066d1d625 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -1282,13 +1282,8 @@ class PDFDocument { }, }; - const fonts = new Map(); - fontRes.forEach((fontName, font) => { - fonts.set(fontName, font); - }); const promises = []; - - for (const [fontName, font] of fonts) { + for (const [fontName, font] of fontRes) { const descriptor = font.get("FontDescriptor"); if (!(descriptor instanceof Dict)) { continue; diff --git a/src/core/primitives.js b/src/core/primitives.js index bf556b53872f5..c48a34eb71c20 100644 --- a/src/core/primitives.js +++ b/src/core/primitives.js @@ -203,14 +203,14 @@ class Dict { return this._map.has(key); } - forEach(callback) { + *[Symbol.iterator]() { for (const [key, value] of this._map) { - callback( + yield [ key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) - : value - ); + : value, + ]; } } diff --git a/src/core/struct_tree.js b/src/core/struct_tree.js index 7f5c7b45e97a4..fa27a14c00ef3 100644 --- a/src/core/struct_tree.js +++ b/src/core/struct_tree.js @@ -62,12 +62,11 @@ class StructTreeRoot { if (!(roleMapDict instanceof Dict)) { return; } - roleMapDict.forEach((key, value) => { - if (!(value instanceof Name)) { - return; + for (const [key, value] of roleMapDict) { + if (value instanceof Name) { + this.roleMap.set(key, value.name); } - this.roleMap.set(key, value.name); - }); + } } static async canCreateStructureTree({ diff --git a/src/core/worker.js b/src/core/worker.js index cba6cb0ce2e9d..e285d6491bcac 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -688,11 +688,11 @@ class WorkerMessageHandler { const infoObj = Object.create(null); const xrefInfo = xref.trailer.get("Info") || null; if (xrefInfo instanceof Dict) { - xrefInfo.forEach((key, value) => { + for (const [key, value] of xrefInfo) { if (typeof value === "string") { infoObj[key] = stringToPDFString(value); } - }); + } } newXrefInfo = { diff --git a/test/unit/primitives_spec.js b/test/unit/primitives_spec.js index caefdf0250419..00c491004818c 100644 --- a/test/unit/primitives_spec.js +++ b/test/unit/primitives_spec.js @@ -221,17 +221,12 @@ describe("primitives", function () { expect(values[2]).toEqual(testFontFile); }); - it("should callback for each stored key", function () { - const callbackSpy = jasmine.createSpy("spy on callback in dictionary"); - - dictWithManyKeys.forEach(callbackSpy); - - expect(callbackSpy).toHaveBeenCalled(); - const callbackSpyCalls = callbackSpy.calls; - expect(callbackSpyCalls.argsFor(0)).toEqual(["FontFile", testFontFile]); - expect(callbackSpyCalls.argsFor(1)).toEqual(["FontFile2", testFontFile2]); - expect(callbackSpyCalls.argsFor(2)).toEqual(["FontFile3", testFontFile3]); - expect(callbackSpyCalls.count()).toEqual(3); + it("should iterate through each stored key", function () { + expect([...dictWithManyKeys]).toEqual([ + ["FontFile", testFontFile], + ["FontFile2", testFontFile2], + ["FontFile3", testFontFile3], + ]); }); it("should handle keys pointing to indirect objects, both sync and async", async function () { From c0c63728d1454ba11970d31d1709e0c37db3b361 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 17 Nov 2024 15:31:42 +0100 Subject: [PATCH 058/338] Improve clean-up of `#_hcmCache`-data in `DOMFilterFactory.prototype.destroy` - Use optional chaining when clearing various data-structures, since that's slightly shorter. - Ensure that checking for the existence of `#_hcmCache`-data won't cause it to be initialized. (Note how `this.#hcmCache` is actually a getter.) - Actually reset the `#_hcmCache`-data when that's appropriate, e.g. when closing the PDF document. --- src/display/filter_factory.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/display/filter_factory.js b/src/display/filter_factory.js index 84260464ef61a..6b844db350da1 100644 --- a/src/display/filter_factory.js +++ b/src/display/filter_factory.js @@ -423,17 +423,18 @@ class DOMFilterFactory extends BaseFilterFactory { } destroy(keepHCM = false) { - if (keepHCM && this.#hcmCache.size !== 0) { + if (keepHCM && this.#_hcmCache?.size) { return; } - if (this.#_defs) { - this.#_defs.parentNode.parentNode.remove(); - this.#_defs = null; - } - if (this.#_cache) { - this.#_cache.clear(); - this.#_cache = null; - } + this.#_defs?.parentNode.parentNode.remove(); + this.#_defs = null; + + this.#_cache?.clear(); + this.#_cache = null; + + this.#_hcmCache?.clear(); + this.#_hcmCache = null; + this.#id = 0; } From bc78f39e267f30f6d8cd526d29bfa00796c35a37 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 14 Nov 2024 11:47:49 +0100 Subject: [PATCH 059/338] [api-minor] Disable `ImageDecoder` usage by default in Chromium browsers Given that there are multiple issues with `ImageDecoder` in Chromium browsers, affecting both BMP and JPEG images, for now we (by default) disable that functionality there to avoid problems. This also means that we can remove the previously added, and separate, `isChrome` API-option. --- src/core/evaluator.js | 1 - src/core/image_resizer.js | 6 +----- src/display/api.js | 30 ++++++++++++++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index b00127e625c22..84cce0b28a9a2 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -84,7 +84,6 @@ const DefaultPartialEvaluatorOptions = Object.freeze({ isEvalSupported: true, isOffscreenCanvasSupported: false, isImageDecoderSupported: false, - isChrome: false, canvasMaxAreaInBytes: -1, fontExtraProperties: false, useSystemFonts: true, diff --git a/src/core/image_resizer.js b/src/core/image_resizer.js index e5ada29c20b9e..0f80c8f5981da 100644 --- a/src/core/image_resizer.js +++ b/src/core/image_resizer.js @@ -120,17 +120,13 @@ class ImageResizer { static setOptions({ canvasMaxAreaInBytes = -1, - isChrome = false, isImageDecoderSupported = false, }) { if (!this._hasMaxArea) { // Divide by 4 to have the value in pixels. this.MAX_AREA = canvasMaxAreaInBytes >> 2; } - // TODO: remove the isChrome, once Chrome doesn't crash anymore with - // issue6741.pdf. - // https://issues.chromium.org/issues/374807001. - this.#isImageDecoderSupported = isImageDecoderSupported && !isChrome; + this.#isImageDecoderSupported = isImageDecoderSupported; } static _areGoodDims(width, height) { diff --git a/src/display/api.js b/src/display/api.js index 17b5525a78e04..012e45a6373b4 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -181,9 +181,17 @@ const DefaultStandardFontDataFactory = * `ImageDecoder` in the worker. Primarily used to improve performance of * image conversion/rendering. * The default value is `true` in web environments and `false` in Node.js. - * @property {boolean} [isChrome] - Determines if we can use bmp ImageDecoder. - * NOTE: Temporary option until [https://issues.chromium.org/issues/374807001] - * is fixed. + * + * NOTE: Also temporarily disabled in Chromium browsers, until we no longer + * support the affected browser versions, because of various bugs: + * + * - Crashes when using the BMP decoder with huge images, e.g. issue6741.pdf; + * see https://issues.chromium.org/issues/374807001 + * + * - Broken images when using the JPEG decoder with images that have custom + * colour profiles, e.g. GitHub discussion 19030; + * see https://issues.chromium.org/issues/378869810 + * * @property {number} [canvasMaxAreaInBytes] - The integer value is used to * know when an image must be resized (uses `OffscreenCanvas` in the worker). * If it's -1 then a possibly slow algorithm is used to guess the max value. @@ -289,16 +297,15 @@ function getDocument(src = {}) { ? src.isOffscreenCanvasSupported : !isNodeJS; const isImageDecoderSupported = + // eslint-disable-next-line no-nested-ternary typeof src.isImageDecoderSupported === "boolean" ? src.isImageDecoderSupported - : !isNodeJS; - const isChrome = - typeof src.isChrome === "boolean" - ? src.isChrome - : (typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) && - !FeatureTest.platform.isFirefox && - typeof window !== "undefined" && - !!window?.chrome; + : // eslint-disable-next-line no-nested-ternary + typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL") + ? true + : typeof PDFJSDev !== "undefined" && PDFJSDev.test("CHROME") + ? false + : !isNodeJS && (FeatureTest.platform.isFirefox || !globalThis.chrome); const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1; @@ -404,7 +411,6 @@ function getDocument(src = {}) { isEvalSupported, isOffscreenCanvasSupported, isImageDecoderSupported, - isChrome, canvasMaxAreaInBytes, fontExtraProperties, useSystemFonts, From 3f3e7803a7eea1fcc8c4c790c9ac4763b8063643 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sat, 16 Nov 2024 21:56:01 +0100 Subject: [PATCH 060/338] When saving some annotations with the same name, set the value in the parent It fixes #18630. --- src/core/annotation.js | 50 ++++++++++++---------- src/core/core_utils.js | 31 ++++++++++++++ test/unit/annotation_spec.js | 81 +++++++++++++++++++++++++++++++++++- 3 files changed, 138 insertions(+), 24 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 365503cfe8b20..3a7c9ccdf7ed4 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -42,6 +42,7 @@ import { collectActions, escapeString, getInheritableProperty, + getParentToUpdate, getRotationMatrix, isNumberArray, lookupMatrix, @@ -2108,6 +2109,24 @@ class WidgetAnnotation extends Annotation { amendSavedDict(annotationStorage, dict) {} + setValue(dict, value, xref, changes) { + const { dict: parentDict, ref: parentRef } = getParentToUpdate( + dict, + this.ref, + xref + ); + if (!parentDict) { + dict.set("V", value); + } else if (!changes.has(parentRef)) { + const newParentDict = parentDict.clone(); + newParentDict.set("V", value); + changes.put(parentRef, { data: newParentDict }); + return newParentDict; + } + + return null; + } + async save(evaluator, task, annotationStorage, changes) { const storageEntry = annotationStorage?.get(this.data.id); const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint); @@ -2191,13 +2210,15 @@ class WidgetAnnotation extends Annotation { value, }; - dict.set( - "V", + const newParentDict = this.setValue( + dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) - : stringToAsciiOrUTF16BE(value) + : stringToAsciiOrUTF16BE(value), + xref, + changes ); - this.amendSavedDict(annotationStorage, dict); + this.amendSavedDict(annotationStorage, newParentDict || dict); const maybeMK = this._getMKDict(rotation); if (maybeMK) { @@ -3111,7 +3132,8 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { }; const name = Name.get(value ? this.data.exportValue : "Off"); - dict.set("V", name); + this.setValue(dict, name, evaluator.xref, changes); + dict.set("AS", name); dict.set("M", `D:${getModificationDate()}`); if (flags !== undefined) { @@ -3170,24 +3192,8 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { }; const name = Name.get(value ? this.data.buttonValue : "Off"); - if (value) { - if (this.parent instanceof Ref) { - const parent = evaluator.xref.fetch(this.parent).clone(); - parent.set("V", name); - changes.put(this.parent, { - data: parent, - xfa: null, - needAppearances: false, - }); - } else if (this.parent instanceof Dict) { - this.parent.set("V", name); - } - } - - if (!this.parent) { - // If there is no parent then we must set the value in the field. - dict.set("V", name); + this.setValue(dict, name, evaluator.xref, changes); } dict.set("AS", name); diff --git a/src/core/core_utils.js b/src/core/core_utils.js index cd892ed6ff6c3..2951bf0425bab 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -146,6 +146,36 @@ function getInheritableProperty({ return values; } +/** + * Get the parent dictionary to update when a property is set. + * + * @param {Dict} dict - Dictionary from where to start the traversal. + * @param {Ref} ref - The reference to the dictionary. + * @param {XRef} xref - The `XRef` instance. + */ +function getParentToUpdate(dict, ref, xref) { + const visited = new RefSet(); + const firstDict = dict; + const result = { dict: null, ref: null }; + + while (dict instanceof Dict && !visited.has(ref)) { + visited.put(ref); + if (dict.has("T")) { + break; + } + ref = dict.getRaw("Parent"); + if (!(ref instanceof Ref)) { + return result; + } + dict = xref.fetch(ref); + } + if (dict instanceof Dict && dict !== firstDict) { + result.dict = dict; + result.ref = ref; + } + return result; +} + // prettier-ignore const ROMAN_NUMBER_MAP = [ "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM", @@ -672,6 +702,7 @@ export { getInheritableProperty, getLookupTableFactory, getNewAnnotationsMap, + getParentToUpdate, getRotationMatrix, getSizeInBytes, isAscii, diff --git a/test/unit/annotation_spec.js b/test/unit/annotation_spec.js index 68452d8fed84a..7c840704d859d 100644 --- a/test/unit/annotation_spec.js +++ b/test/unit/annotation_spec.js @@ -2145,6 +2145,81 @@ describe("annotation", function () { ); }); + it("should save the text in two fields with the same name", async function () { + const textWidget1Ref = Ref.get(123, 0); + const textWidget2Ref = Ref.get(124, 0); + + const parentRef = Ref.get(125, 0); + textWidgetDict.set("Parent", parentRef); + const parentDict = new Dict(); + parentDict.set("Kids", [textWidget1Ref, textWidget2Ref]); + parentDict.set("T", "foo"); + const textWidget2Dict = textWidgetDict.clone(); + + const xref = new XRefMock([ + { ref: textWidget1Ref, data: textWidgetDict }, + { ref: textWidget2Ref, data: textWidget2Dict }, + { ref: parentRef, data: parentDict }, + helvRefObj, + ]); + partialEvaluator.xref = xref; + const task = new WorkerTask("test save"); + + const annotation1 = await AnnotationFactory.create( + xref, + textWidget1Ref, + annotationGlobalsMock, + idFactoryMock + ); + const annotation2 = await AnnotationFactory.create( + xref, + textWidget2Ref, + annotationGlobalsMock, + idFactoryMock + ); + const annotationStorage = new Map(); + annotationStorage.set(annotation1.data.id, { value: "hello world" }); + annotationStorage.set(annotation2.data.id, { value: "hello world" }); + const changes = new RefSetCache(); + + await annotation1.save( + partialEvaluator, + task, + annotationStorage, + changes + ); + await annotation2.save( + partialEvaluator, + task, + annotationStorage, + changes + ); + const data = await writeChanges(changes, xref); + expect(data.length).toEqual(5); + const [, , data1, data2, parentData] = data; + expect(data1.ref).toEqual(textWidget1Ref); + expect(data2.ref).toEqual(textWidget2Ref); + expect(parentData.ref).toEqual(parentRef); + + data1.data = data1.data.replace(/\(D:\d+\)/, "(date)"); + data2.data = data2.data.replace(/\(D:\d+\)/, "(date)"); + expect(data1.data).toEqual( + "123 0 obj\n" + + "<< /Type /Annot /Subtype /Widget /FT /Tx /DA (/Helv 5 Tf) /DR " + + "<< /Font << /Helv 314 0 R>>>> /Rect [0 0 32 10] " + + "/Parent 125 0 R /AP << /N 4 0 R>> /M (date)>>\nendobj\n" + ); + expect(data2.data).toEqual( + "124 0 obj\n" + + "<< /Type /Annot /Subtype /Widget /FT /Tx /DA (/Helv 5 Tf) /DR " + + "<< /Font << /Helv 314 0 R>>>> /Rect [0 0 32 10] " + + "/Parent 125 0 R /AP << /N 5 0 R>> /M (date)>>\nendobj\n" + ); + expect(parentData.data).toEqual( + "125 0 obj\n<< /Kids [123 0 R 124 0 R] /T (foo) /V (hello world)>>\nendobj\n" + ); + }); + it("should save rotated text", async function () { const textWidgetRef = Ref.get(123, 0); const xref = new XRefMock([ @@ -3080,6 +3155,7 @@ describe("annotation", function () { const parentDict = new Dict(); parentDict.set("V", Name.get("Off")); parentDict.set("Kids", [buttonWidgetRef]); + parentDict.set("T", "RadioGroup"); buttonWidgetDict.set("Parent", parentRef); const xref = new XRefMock([ @@ -3116,7 +3192,7 @@ describe("annotation", function () { ); expect(parentData.ref).toEqual(Ref.get(456, 0)); expect(parentData.data).toEqual( - "456 0 obj\n<< /V /Checked /Kids [123 0 R]>>\nendobj\n" + "456 0 obj\n<< /V /Checked /Kids [123 0 R] /T (RadioGroup)>>\nendobj\n" ); annotationStorage.set(annotation.data.id, { value: false }); @@ -3142,6 +3218,7 @@ describe("annotation", function () { const parentDict = new Dict(); parentDict.set("Kids", [buttonWidgetRef]); + parentDict.set("T", "RadioGroup"); buttonWidgetDict.set("Parent", parentRef); const xref = new XRefMock([ @@ -3178,7 +3255,7 @@ describe("annotation", function () { ); expect(parentData.ref).toEqual(Ref.get(456, 0)); expect(parentData.data).toEqual( - "456 0 obj\n<< /Kids [123 0 R] /V /Checked>>\nendobj\n" + "456 0 obj\n<< /Kids [123 0 R] /T (RadioGroup) /V /Checked>>\nendobj\n" ); }); From d35d0b405eb08fcffaff63f0f04536fa2e2f738a Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 17 Nov 2024 19:24:04 +0100 Subject: [PATCH 061/338] Remove obsolete Gitpod files In PR #11300 Gitpod support got introduced, but we re-evaluated that decision in #11732. In PR #11800 the support was partially reverted, but the actual Gitpod files were kept to not outright break potential workflows because at the time we were not sure if, and if so how often, Gitpod was actually used for contributing to PDF.js. However, in addition to the concerns mentioned in #11732 after five years we haven't seen any contributions that clearly originated from Gitpod, and the files have not been updated after e.g. PR #11807 and PR #17913 because it's not a workflow that we maintain or are able to test (nor have we seen Gitpod community contributions for this). This commit therefore removes the remaining Gitpod files to reduce maintainance burden for PDF.js. Note that users of Gitpod can still contribute to PDF.js via the platform; we just don't provide/manage workspace files from this repository anymore. --- .gitpod.Dockerfile | 7 ------- .gitpod.yml | 13 ------------- 2 files changed, 20 deletions(-) delete mode 100644 .gitpod.Dockerfile delete mode 100644 .gitpod.yml diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile deleted file mode 100644 index 43355323f071a..0000000000000 --- a/.gitpod.Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM gitpod/workspace-full-vnc - -USER gitpod - -RUN sudo apt-get update && \ - sudo apt-get install -yq firefox && \ - sudo rm -rf /var/lib/apt/lists/* diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 648e81e3f5a08..0000000000000 --- a/.gitpod.yml +++ /dev/null @@ -1,13 +0,0 @@ -image: - file: .gitpod.Dockerfile -tasks: - - command: | - gp await-port 8888 && gp preview $(gp url 8888)/web/viewer.html && echo '[{"name": "Firefox","path": "/usr/bin/firefox"}]' | jq '.' > test/resources/browser_manifests/browser_manifest.json - - - init: npm install -g gulp-cli && npm install - command: gulp server -ports: - - port: 8888 - onOpen: ignore - - port: 6080 - onOpen: ignore From 61c8561e1093cec3f159a292354bb349242c5683 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 17 Nov 2024 18:29:43 +0100 Subject: [PATCH 062/338] Update dependencies to the most recent versions --- gulpfile.mjs | 2 +- package-lock.json | 156 ++++++++++++++++++++++------------------------ package.json | 6 +- 3 files changed, 79 insertions(+), 85 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index 7c0460d0f5c78..e1fe53f32fe89 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2253,7 +2253,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - "@napi-rs/canvas": "^0.1.60", + "@napi-rs/canvas": "^0.1.62", }, browser: { canvas: false, diff --git a/package-lock.json b/package-lock.json index b1b221e94b9da..4e35511e9410b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,13 +15,13 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.60", + "@napi-rs/canvas": "^0.1.62", "@types/node": "^22.9.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", - "eslint": "^9.14.0", + "eslint": "^9.15.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", @@ -41,7 +41,7 @@ "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", - "metalsmith-html-relative": "^2.0.5", + "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", "postcss": "^8.4.49", @@ -1828,9 +1828,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1843,9 +1843,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1853,9 +1853,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -1910,9 +1910,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, "license": "MIT", "engines": { @@ -1930,9 +1930,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2353,30 +2353,30 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.60.tgz", - "integrity": "sha512-2a/8ynCHVXu9JVTeT/RLrZy6kro3VHnxDqy7SyHIdzCUUwJoKuKNmDzXjD6bqE0W/07j1lFW7OVIAYSr1GiWuA==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.62.tgz", + "integrity": "sha512-+aqi0evK3ohAG3pFhMhM5C6y26foMUK0C1c3dfC1p/CRETwAuQlobuFGxadHkyIgc9mVyfGTpZUCnlrzt6xSwg==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.60", - "@napi-rs/canvas-darwin-arm64": "0.1.60", - "@napi-rs/canvas-darwin-x64": "0.1.60", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.60", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.60", - "@napi-rs/canvas-linux-arm64-musl": "0.1.60", - "@napi-rs/canvas-linux-x64-gnu": "0.1.60", - "@napi-rs/canvas-linux-x64-musl": "0.1.60", - "@napi-rs/canvas-win32-x64-msvc": "0.1.60" + "@napi-rs/canvas-android-arm64": "0.1.62", + "@napi-rs/canvas-darwin-arm64": "0.1.62", + "@napi-rs/canvas-darwin-x64": "0.1.62", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.62", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.62", + "@napi-rs/canvas-linux-arm64-musl": "0.1.62", + "@napi-rs/canvas-linux-x64-gnu": "0.1.62", + "@napi-rs/canvas-linux-x64-musl": "0.1.62", + "@napi-rs/canvas-win32-x64-msvc": "0.1.62" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.60.tgz", - "integrity": "sha512-KNOBYH3BUfUl5mo5wvrA2C+tJk0RnF4InkbsCoHdsxjhLjbriJKmu5DCFLaiG/c6WPfTcLRz73bGcP7boVeb6A==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.62.tgz", + "integrity": "sha512-gilURMgNfCqXQmw211Jo6BiaQpPS7RD5baKWgnQ17XbgpJPi8+DFtbdIzQsCiFWl6p2TfXpg3cqWfN0fm+blRw==", "cpu": [ "arm64" ], @@ -2391,9 +2391,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.60.tgz", - "integrity": "sha512-j6PA7RwRcx0409Jk3zz6beq3EtvwEgvN46FyKgFnSnzoV0ey2kM+KI2XTpG3tE/v4+fTnQenR+ysUBEgtWuUuA==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.62.tgz", + "integrity": "sha512-TodBo7kdMEeGsGa80/BTJwyG9od+AMGDFe6UW7jkU8uEJmzOROVp6Y2Ka6LfLixpEGwNUCEFEUabr/gETD7bhg==", "cpu": [ "arm64" ], @@ -2408,9 +2408,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.60.tgz", - "integrity": "sha512-k0uBuShNK7QnOJlLhzxSsnSdJMkiU8VexqvuTEi0qABqKkHrYzD0ezUgtyvaVLOOoqxwGy1Hh5ZoEze5s9H/6g==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.62.tgz", + "integrity": "sha512-1SqtF7HbLh1XwxUhpkIZg2huG25UHkOvjMKh+GksARs4RiKFC7/jPnPyj3KtmkejyA6zsuqFd49qeJ3StJr4hQ==", "cpu": [ "x64" ], @@ -2425,9 +2425,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.60.tgz", - "integrity": "sha512-X2cQ6MIDZn5dMsy9jakASM6tvo2PGd3dq25gqrUzJeQIngQhLIWZtaYWza3md3M6HoQ4b/6W81OVQhgL/8uTkA==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.62.tgz", + "integrity": "sha512-L5Gp6sKyXV0KXw9V/Cy4DlouL/Wz+D5P14XsRQLlSnTXKVHSBEufZBopsbdjBu0XZTp5rAGWsdnACDzwMSsi+A==", "cpu": [ "arm" ], @@ -2442,9 +2442,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.60.tgz", - "integrity": "sha512-Ch02kQsetlXA4tfHfSJ63oyq9EbYB00yy/6hZ0/VYh60pLnopvsMt682+cM+rGBbgm14G+Heh3rDzJ6zBiiocw==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.62.tgz", + "integrity": "sha512-uiyeg4TFSf+SVOlM5pIh8a4oNEUAgL+KoCm6Qvpm8XhBmIpVrCpPShp0eje/zuaMCJtzFkenkbwOapW/blCCVQ==", "cpu": [ "arm64" ], @@ -2459,9 +2459,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.60.tgz", - "integrity": "sha512-7TpSJM4RnhHnAMrA/bDXitNVx9TV8ZLQ/47QHsNhdZ77yCgcEyLBRgUGvjsmnUpWIHhTOWTHDlGY47zHcQDfhA==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.62.tgz", + "integrity": "sha512-diZxX37Fs/Tn2m4UDhzVxAxu0rHtis8EImamcrL+KNDSjCiEe/h0r+Gfh7wNxRv9REh10UP+zlD8PTrcSKjL3g==", "cpu": [ "arm64" ], @@ -2476,9 +2476,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.60.tgz", - "integrity": "sha512-46yi+fIUQ5SRg0Qs3L04zh67kk0uFJa2elWt/cS/7kEydu06uhjbJwW3123J9KShu2PKLlaZEqxJPksYpowoeA==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.62.tgz", + "integrity": "sha512-nv0is/DH05kfREHD+62ienlb45Fi3kcvHKwmsHzSrvqNu0l6CFj8h8CuRvhB3tl1KStHZFDxUAqu14MecuK6eA==", "cpu": [ "x64" ], @@ -2493,9 +2493,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.60.tgz", - "integrity": "sha512-lTKiv5VnccFyZAd27AL6t69djDXQlfUgVE03PTM5HZUUy0h7sQKnrGh2mSMq58E3/vA0k65IFDqVqxyLjCpvlw==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.62.tgz", + "integrity": "sha512-r8tT3k67xN5KhPTEn2KPYZ4iEGTcE6b3+ahPpYBGhKRZfZkMdvzHnmuzcSLkjh8bBlkoiObSBK/G8oY7Q335RA==", "cpu": [ "x64" ], @@ -2510,9 +2510,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.60", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.60.tgz", - "integrity": "sha512-b7VjNQ3V/7G6VQqB8KvG9A06ENFZhxFMe4areUduipFwuJ0w35PGgOmYZHd0+iY9Nh7niECjgPRNDcrzpDlWXg==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.62.tgz", + "integrity": "sha512-uQdYrjHu6QfGFxD2K9qzomOzygC8Px5dy4v/PgwBSPCd0ShIjGrIGAY5YobjH2xwEtYEPL9KgJkGe3ts+k5Auw==", "cpu": [ "x64" ], @@ -4493,10 +4493,11 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5311,27 +5312,27 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -5350,8 +5351,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -9313,9 +9313,9 @@ } }, "node_modules/metalsmith-html-relative": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/metalsmith-html-relative/-/metalsmith-html-relative-2.0.5.tgz", - "integrity": "sha512-u5oZ19xP898DnIYW2LshjIvgBbCHtcxl3wcf4cG/Na83kkF1Ki+g4eoj7QEIQCddBh18aA6CqO3aYn3CNzgLFg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/metalsmith-html-relative/-/metalsmith-html-relative-2.0.6.tgz", + "integrity": "sha512-TxO9i71pudoNloCXXRglNMgGJAK0Iiyv5rFkLZLfwjX3LCI943VWppo+zEGnQTQTiHF5q4UA1QmlYzItiSi/cA==", "dev": true, "license": "GPL-3.0-or-later", "dependencies": { @@ -13147,12 +13147,6 @@ "b4a": "^1.6.4" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, "node_modules/textextensions": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", diff --git a/package.json b/package.json index 39b5bc716f3a6..ffc8e398d3240 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,13 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.60", + "@napi-rs/canvas": "^0.1.62", "@types/node": "^22.9.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001680", "core-js": "^3.39.0", - "eslint": "^9.14.0", + "eslint": "^9.15.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", @@ -36,7 +36,7 @@ "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", - "metalsmith-html-relative": "^2.0.5", + "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", "postcss": "^8.4.49", From 7f42c11ca541e0b3395af1dd1ffbb7a75da3c36b Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 17 Nov 2024 18:37:21 +0100 Subject: [PATCH 063/338] Update translations to the most recent versions --- l10n/cs/viewer.ftl | 12 +++++++++++- l10n/cy/viewer.ftl | 12 +++++++++++- l10n/da/viewer.ftl | 6 ++++-- l10n/de/viewer.ftl | 16 +++++++++++++++- l10n/dsb/viewer.ftl | 12 +++++++++++- l10n/el/viewer.ftl | 12 +++++++++++- l10n/en-GB/viewer.ftl | 12 +++++++++++- l10n/es-AR/viewer.ftl | 12 +++++++++++- l10n/es-CL/viewer.ftl | 12 +++++++++++- l10n/eu/viewer.ftl | 12 +++++++++++- l10n/fi/viewer.ftl | 12 +++++++++++- l10n/fy-NL/viewer.ftl | 12 +++++++++++- l10n/gn/viewer.ftl | 12 +++++++++++- l10n/he/viewer.ftl | 14 ++++++++++++-- l10n/hr/viewer.ftl | 13 ++++++++++--- l10n/hsb/viewer.ftl | 12 +++++++++++- l10n/hu/viewer.ftl | 12 +++++++++++- l10n/ia/viewer.ftl | 12 +++++++++++- l10n/is/viewer.ftl | 12 +++++++++++- l10n/kk/viewer.ftl | 12 +++++++++++- l10n/ko/viewer.ftl | 12 +++++++++++- l10n/nl/viewer.ftl | 12 +++++++++++- l10n/pa-IN/viewer.ftl | 12 +++++++++++- l10n/pt-BR/viewer.ftl | 12 +++++++++++- l10n/rm/viewer.ftl | 16 +++++++++++++++- l10n/ru/viewer.ftl | 12 +++++++++++- l10n/sk/viewer.ftl | 12 +++++++++++- l10n/sv-SE/viewer.ftl | 12 +++++++++++- l10n/tg/viewer.ftl | 16 +++++++++++++++- l10n/tr/viewer.ftl | 12 +++++++++++- l10n/vi/viewer.ftl | 12 +++++++++++- l10n/zh-CN/viewer.ftl | 14 ++++++++++++-- l10n/zh-TW/viewer.ftl | 12 +++++++++++- 33 files changed, 369 insertions(+), 38 deletions(-) diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index a770b2d97ff0a..bc6157b5b13fc 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -361,8 +361,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Náhradní popis +pdfjs-editor-alt-text-edit-button = + .aria-label = Upravit alternativní text pdfjs-editor-alt-text-edit-button-label = Upravit náhradní popis pdfjs-editor-alt-text-dialog-label = Vyberte možnost pdfjs-editor-alt-text-dialog-description = Náhradní popis pomáhá, když lidé obrázek nevidí nebo když se nenačítá. @@ -376,6 +377,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Označen jako dekorativní # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Například: “Mladý muž si sedá ke stolu, aby se najedl.” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativní text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -457,10 +461,16 @@ pdfjs-editor-new-alt-text-error-close-button = Zavřít pdfjs-editor-new-alt-text-ai-model-downloading-progress = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativní text byl přidán pdfjs-editor-new-alt-text-added-button-label = Alternativní text byl přidán # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Chybí alternativní text pdfjs-editor-new-alt-text-missing-button-label = Chybí alternativní text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Zkontrolovat alternativní text pdfjs-editor-new-alt-text-to-review-button-label = Zkontrolovat alternativní text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/cy/viewer.ftl b/l10n/cy/viewer.ftl index c4011c662ad91..6b89b5614d663 100644 --- a/l10n/cy/viewer.ftl +++ b/l10n/cy/viewer.ftl @@ -365,8 +365,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Testun amgen (alt) +pdfjs-editor-alt-text-edit-button = + .aria-label = Golygu testun amgen pdfjs-editor-alt-text-edit-button-label = Golygu testun amgen pdfjs-editor-alt-text-dialog-label = Dewisiadau pdfjs-editor-alt-text-dialog-description = Mae testun amgen (testun alt) yn helpu pan na all pobl weld y ddelwedd neu pan nad yw'n llwytho. @@ -380,6 +381,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcio fel addurniadol # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Er enghraifft, “Mae dyn ifanc yn eistedd wrth fwrdd i fwyta pryd bwyd” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Testun amgen (alt) ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -461,10 +465,16 @@ pdfjs-editor-new-alt-text-error-close-button = Cau pdfjs-editor-new-alt-text-ai-model-downloading-progress = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB) .aria-valuetext = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Ychwanegwyd testun amgen pdfjs-editor-new-alt-text-added-button-label = Ychwanegwyd testun amgen # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Testun amgen coll pdfjs-editor-new-alt-text-missing-button-label = Testun amgen coll # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Adolygu'r testun amgen pdfjs-editor-new-alt-text-to-review-button-label = Adolygu'r testun amgen # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index fe81c1851c3aa..2de749e7b72c0 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -353,7 +353,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternativ tekst pdfjs-editor-alt-text-edit-button-label = Rediger alternativ tekst pdfjs-editor-alt-text-dialog-label = Vælg en indstilling @@ -448,11 +447,14 @@ pdfjs-editor-new-alt-text-error-close-button = Luk # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) .aria-valuetext = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) -# This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst tilføjet # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Mangler alternativ tekst pdfjs-editor-new-alt-text-missing-button-label = Mangler alternativ tekst # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Gennemgå alternativ tekst pdfjs-editor-new-alt-text-to-review-button-label = Gennemgå alternativ tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/de/viewer.ftl b/l10n/de/viewer.ftl index b8d7ab9abf7a6..9df4c0791b6c1 100644 --- a/l10n/de/viewer.ftl +++ b/l10n/de/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Grafik hinzufügen pdfjs-editor-free-highlight-thickness-input = Linienstärke pdfjs-editor-free-highlight-thickness-title = .title = Linienstärke beim Hervorheben anderer Elemente als Text ändern +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Texteditor + .default-content = Schreiben beginnen… pdfjs-free-text = .aria-label = Texteditor pdfjs-free-text-default-content = Schreiben beginnen… @@ -353,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternativ-Text +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternativ-Text bearbeiten pdfjs-editor-alt-text-edit-button-label = Alternativ-Text bearbeiten pdfjs-editor-alt-text-dialog-label = Option wählen pdfjs-editor-alt-text-dialog-description = Alt-Text (Alternativtext) hilft, wenn Personen die Grafik nicht sehen können oder wenn sie nicht geladen wird. @@ -368,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Als dekorativ markiert # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Zum Beispiel: "Ein junger Mann setzt sich an einen Tisch, um zu essen." +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativ-Text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Schließen pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB) .aria-valuetext = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativ-Text hinzugefügt pdfjs-editor-new-alt-text-added-button-label = Alternativ-Text hinzugefügt # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Fehlender Alternativ-Text pdfjs-editor-new-alt-text-missing-button-label = Fehlender Alternativ-Text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternativ-Text überprüfen pdfjs-editor-new-alt-text-to-review-button-label = Alternativ-Text überprüfen # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index 84121bd111cf6..d1ec368862ef0 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -361,8 +361,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatiwny tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternatiwny tekst wobźěłaś pdfjs-editor-alt-text-edit-button-label = Alternatiwny tekst wobźěłaś pdfjs-editor-alt-text-dialog-label = Nastajenje wubraś pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomaga, gaž luźe njamógu wobraz wiźeś abo gaž se wobraz njezacytajo. @@ -376,6 +377,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Ako dekoratiwny markěrowany # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Na pśikład, „Młody muski za blidom sejźi, aby jěź jědł“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatiwny tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -457,10 +461,16 @@ pdfjs-editor-new-alt-text-error-close-button = Zacyniś pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatiwny tekst jo se pśidał pdfjs-editor-new-alt-text-added-button-label = Alternatiwny tekst jo se pśidał # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Alternatiwny tekst felujo pdfjs-editor-new-alt-text-missing-button-label = Alternatiwny tekst felujo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternatiwny tekst pśeglědowaś pdfjs-editor-new-alt-text-to-review-button-label = Alternatiwny tekst pśeglědowaś # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index b82c3a71efa72..4db9d9fb9225f 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Εναλλακτικό κείμενο +pdfjs-editor-alt-text-edit-button = + .aria-label = Επεξεργασία εναλλακτικού κειμένου pdfjs-editor-alt-text-edit-button-label = Επεξεργασία εναλλακτικού κειμένου pdfjs-editor-alt-text-dialog-label = Διαλέξτε μια επιλογή pdfjs-editor-alt-text-dialog-description = Το εναλλακτικό κείμενο είναι χρήσιμο όταν οι άνθρωποι δεν μπορούν να δουν την εικόνα ή όταν αυτή δεν φορτώνεται. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Επισημασμένο ως δια # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Για παράδειγμα, «Ένας νεαρός άνδρας κάθεται σε ένα τραπέζι για να φάει ένα γεύμα» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Εναλλακτικό κείμενο ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Κλείσιμο pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) .aria-valuetext = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Προστέθηκε εναλλακτικό κείμενο pdfjs-editor-new-alt-text-added-button-label = Προστέθηκε εναλλακτικό κείμενο # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Απουσία εναλλακτικού κειμένου pdfjs-editor-new-alt-text-missing-button-label = Απουσία εναλλακτικού κειμένου # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Έλεγχος εναλλακτικού κειμένου pdfjs-editor-new-alt-text-to-review-button-label = Έλεγχος εναλλακτικού κειμένου # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/en-GB/viewer.ftl b/l10n/en-GB/viewer.ftl index a1bd185f83c53..348b2db18810e 100644 --- a/l10n/en-GB/viewer.ftl +++ b/l10n/en-GB/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt text +pdfjs-editor-alt-text-edit-button = + .aria-label = Edit alt text pdfjs-editor-alt-text-edit-button-label = Edit alt text pdfjs-editor-alt-text-dialog-label = Choose an option pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = For example, “A young man sits down at a table to eat a meal” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Close pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alt text added pdfjs-editor-new-alt-text-added-button-label = Alt text added # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Missing alt text pdfjs-editor-new-alt-text-missing-button-label = Missing alt text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Review alt text pdfjs-editor-new-alt-text-to-review-button-label = Review alt text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index 6c4e55a4305f4..daf2c80977edd 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo pdfjs-editor-alt-text-dialog-label = Eligir una opción pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcado como decorativo # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Texto alternativo agregado pdfjs-editor-new-alt-text-added-button-label = Texto alternativo agregado # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Falta el texto alternativo pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Calificar el texto alternativo pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index a157bd63030ce..f83c16efe5324 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo pdfjs-editor-alt-text-dialog-label = Elige una opción pdfjs-editor-alt-text-dialog-description = El texto alternativo (alt text) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcada como decorativa # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Se añadió el texto alternativo pdfjs-editor-new-alt-text-added-button-label = Se añadió el texto alternativo # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Falta el texto alternativo pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Revisar el texto alternativo pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/eu/viewer.ftl b/l10n/eu/viewer.ftl index 6a49f06b0f644..16c0ce5b29af6 100644 --- a/l10n/eu/viewer.ftl +++ b/l10n/eu/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Testu alternatiboa +pdfjs-editor-alt-text-edit-button = + .aria-label = Editatu testu alternatiboa pdfjs-editor-alt-text-edit-button-label = Editatu testu alternatiboa pdfjs-editor-alt-text-dialog-label = Aukeratu aukera pdfjs-editor-alt-text-dialog-description = Testu alternatiboak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Apaingarri gisa markatuta # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Adibidez, "gizon gaztea mahaian eserita dago bazkaltzeko" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Testu alternatiboa ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Itxi pdfjs-editor-new-alt-text-ai-model-downloading-progress = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB) .aria-valuetext = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }/{ $downloadedSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Testu alternatiboa gehituta pdfjs-editor-new-alt-text-added-button-label = Testu alternatiboa gehituta # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Testu alternatiboa falta da pdfjs-editor-new-alt-text-missing-button-label = Testu alternatiboa falta da # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Berrikusi testu alternatiboa pdfjs-editor-new-alt-text-to-review-button-label = Berrikusi testu alternatiboa # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 643fefbbe7d04..1c148b02053f5 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Vaihtoehtoinen teksti +pdfjs-editor-alt-text-edit-button = + .aria-label = Muokkaa vaihtoehtoista tekstiä pdfjs-editor-alt-text-edit-button-label = Muokkaa vaihtoehtoista tekstiä pdfjs-editor-alt-text-dialog-label = Valitse vaihtoehto pdfjs-editor-alt-text-dialog-description = Vaihtoehtoinen teksti ("alt-teksti") auttaa ihmisiä, jotka eivät näe kuvaa tai kun kuva ei lataudu. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Merkitty koristeelliseksi # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Esimerkiksi "Nuori mies istuu pöytään syömään aterian" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Vaihtoehtoinen teksti ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Sulje pdfjs-editor-new-alt-text-ai-model-downloading-progress = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt) .aria-valuetext = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } / { $totalSize } Mt) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Vaihtoehtoinen teksti lisätty pdfjs-editor-new-alt-text-added-button-label = Vaihtoehtoinen teksti lisätty # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Vaihtoehtoinen teksti puuttuu pdfjs-editor-new-alt-text-missing-button-label = Vaihtoehtoinen teksti puuttuu # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Tarkista vaihtoehtoinen teksti pdfjs-editor-new-alt-text-to-review-button-label = Tarkista vaihtoehtoinen teksti # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index 13f83894c95b3..f719817a16d65 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternative tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternative tekst bewurkje pdfjs-editor-alt-text-edit-button-label = Alternative tekst bewurkje pdfjs-editor-alt-text-dialog-label = Kies in opsje pdfjs-editor-alt-text-dialog-description = Alternative tekst helpt wannear’t minsken de ôfbylding net sjen kinne of wannear’t dizze net laden wurdt. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = As dekoratyf markearre # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Bygelyks, ‘In jonge man sit oan in tafel om te iten’ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternative tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Slute pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB) .aria-valuetext = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternative tekst tafoege pdfjs-editor-new-alt-text-added-button-label = Alternative tekst tafoege # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Alternative tekst ûntbrekt pdfjs-editor-new-alt-text-missing-button-label = Alternative tekst ûntbrekt # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternative tekst beoardiele pdfjs-editor-new-alt-text-to-review-button-label = Alternative tekst beoardiele # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index fe2ba9b97910d..0ea1a42a2a991 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Moñe’ẽrã mokõiháva +pdfjs-editor-alt-text-edit-button = + .aria-label = Embojuruja moñe’ẽrã mokõiháva pdfjs-editor-alt-text-edit-button-label = Embojuruja moñe’ẽrã mokõiháva pdfjs-editor-alt-text-dialog-label = Eiporavo poravorã pdfjs-editor-alt-text-dialog-description = Moñe’ẽrã ykepegua (moñe’ẽrã ykepegua) nepytyvõ nderehecháiramo ta’ãnga térã nahenyhẽiramo. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Jeguakárõ mongurusupyre # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Techapyrã: “Peteĩ mitãrusu oguapy mesápe okaru hag̃ua” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Moñe’ẽrã mokõiháva ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Mboty pdfjs-editor-new-alt-text-ai-model-downloading-progress = Emboguejyhína IA moñe’ẽrã mokõiháva ({ $downloadedSize } { $totalSize } MB) mba’e .aria-valuetext = Emboguejyhína IA moñe’ẽrã mokõiháva ({ $downloadedSize } { $totalSize } MB) mba’e # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Moñe’ẽrã mokõiha mbojuajupyre pdfjs-editor-new-alt-text-added-button-label = Oñembojuaju moñe’ẽrã mokõiha # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Ndaipóri moñe’ẽrã mokõiha pdfjs-editor-new-alt-text-missing-button-label = Ndaipóri moñe’ẽrã mokõiha # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Ehechajey moñe’ẽrã mokõiha pdfjs-editor-new-alt-text-to-review-button-label = Ehechajey moñe’ẽrã mokõiha # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index c9b9a51ac6667..073ec0d19b9a4 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = טקסט חלופי +pdfjs-editor-alt-text-edit-button = + .aria-label = עריכת טקסט חלופי pdfjs-editor-alt-text-edit-button-label = עריכת טקסט חלופי pdfjs-editor-alt-text-dialog-label = בחירת אפשרות pdfjs-editor-alt-text-dialog-description = טקסט חלופי עוזר כשאנשים לא יכולים לראות את התמונה או כשהיא לא נטענת. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = מסומן כדקורטיבי # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = לדוגמה, ״גבר צעיר מתיישב ליד שולחן לאכול ארוחה״ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = טקסט חלופי ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = סגירה pdfjs-editor-new-alt-text-ai-model-downloading-progress = בתהליך הורדת מודל AI של טקסט חלופי ({ $downloadedSize } מתוך { $totalSize } מ״ב) .aria-valuetext = בתהליך הורדת מודל AI של טקסט חלופי ({ $downloadedSize } מתוך { $totalSize } מ״ב) # This is a button that users can click to edit the alt text they have already added. -pdfjs-editor-new-alt-text-added-button-label = טקסט חלופי נוסף +pdfjs-editor-new-alt-text-added-button = + .aria-label = נוסף טקסט חלופי +pdfjs-editor-new-alt-text-added-button-label = נוסף טקסט חלופי # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = חסר טקסט חלופי pdfjs-editor-new-alt-text-missing-button-label = חסר טקסט חלופי # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = סקירת טקסט חלופי pdfjs-editor-new-alt-text-to-review-button-label = סקירת טקסט חלופי # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index 607a17540c31e..3c8212dbf4d4e 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -105,6 +105,14 @@ pdfjs-document-properties-button-label = Svojstva dokumenta … pdfjs-document-properties-file-name = Ime datoteke: pdfjs-document-properties-file-size = Veličina datoteke: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtova) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtova) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtova) @@ -347,7 +355,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternativni tekst pdfjs-editor-alt-text-edit-button-label = Uredi alternativni tekst pdfjs-editor-alt-text-dialog-label = Odaberi jednu opciju @@ -433,11 +440,11 @@ pdfjs-editor-new-alt-text-error-title = Nije bilo moguće automatski izraditi al # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) .aria-valuetext = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) -# This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button-label = Alternativni tekst je dodan -# This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button-label = Nedostaje alternativni tekst # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Pregledaj alternativni tekst pdfjs-editor-new-alt-text-to-review-button-label = Pregledaj alternativni tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/hsb/viewer.ftl b/l10n/hsb/viewer.ftl index 1d5400a5103f8..f4598b114b9e7 100644 --- a/l10n/hsb/viewer.ftl +++ b/l10n/hsb/viewer.ftl @@ -361,8 +361,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatiwny tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternatiwny tekst wobdźěłać pdfjs-editor-alt-text-edit-button-label = Alternatiwny tekst wobdźěłać pdfjs-editor-alt-text-dialog-label = Nastajenje wubrać pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomha, hdyž ludźo njemóža wobraz widźeć abo hdyž so wobraz njezačita. @@ -376,6 +377,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Jako dekoratiwny markěrowany # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Na přikład, „Młody muž za blidom sedźi, zo by jědź jědł“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatiwny tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -457,10 +461,16 @@ pdfjs-editor-new-alt-text-error-close-button = Začinić pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst so sćahuje ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Model KI za alternatiwny tekst so sćahuje ({ $downloadedSize } z { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatiwny tekst je so přidał pdfjs-editor-new-alt-text-added-button-label = Alternatiwny tekst je so přidał # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Alternatiwny tekst faluje pdfjs-editor-new-alt-text-missing-button-label = Alternatiwny tekst faluje # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternatiwny tekst přepruwować pdfjs-editor-new-alt-text-to-review-button-label = Alternatiwny tekst přepruwować # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index e38ac10a3180a..e617f923231d4 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatív szöveg +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternatív szöveg szerkesztése pdfjs-editor-alt-text-edit-button-label = Alternatív szöveg szerkesztése pdfjs-editor-alt-text-dialog-label = Válasszon egy lehetőséget pdfjs-editor-alt-text-dialog-description = Az alternatív szöveg segít, ha az emberek nem látják a képet, vagy ha az nem töltődik be. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Megjelölve dekoratívként # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Például: „Egy fiatal férfi leül enni egy asztalhoz” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatív szöveg ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Bezárás pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternatív szöveg MI modell letöltése ({ $downloadedSize } / { $totalSize } MB) .aria-valuetext = Alternatív szöveg MI modell letöltése ({ $downloadedSize } / { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatív szöveg hozzáadva pdfjs-editor-new-alt-text-added-button-label = Alternatív szöveg hozzáadva # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Hiányzó alternatív szöveg pdfjs-editor-new-alt-text-missing-button-label = Hiányzó alternatív szöveg # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternatív szöveg áttekintése pdfjs-editor-new-alt-text-to-review-button-label = Alternatív szöveg szerkesztése # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/ia/viewer.ftl b/l10n/ia/viewer.ftl index 4cc66644a6ea1..fec5130f949b9 100644 --- a/l10n/ia/viewer.ftl +++ b/l10n/ia/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternative +pdfjs-editor-alt-text-edit-button = + .aria-label = Rediger texto alternative pdfjs-editor-alt-text-edit-button-label = Rediger texto alternative pdfjs-editor-alt-text-dialog-label = Elige un option pdfjs-editor-alt-text-dialog-description = Le texto alternative (alt text) adjuta quando le personas non pote vider le imagine o quando illo non carga. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcate como decorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Per exemplo, “Un juvene sede a un tabula pro mangiar un repasto” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternative ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Clauder pdfjs-editor-new-alt-text-ai-model-downloading-progress = Discargante modello de intelligentia artificial del texto alternative ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Discargante modello de intelligentia artificial del texto alternative ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Texto alternative addite pdfjs-editor-new-alt-text-added-button-label = Texto alternative addite # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Texto alternative mancante pdfjs-editor-new-alt-text-missing-button-label = Texto alternative mancante # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Revider texto alternative pdfjs-editor-new-alt-text-to-review-button-label = Revider texto alternative # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/is/viewer.ftl b/l10n/is/viewer.ftl index aaed09542f2b2..d263c2bb66272 100644 --- a/l10n/is/viewer.ftl +++ b/l10n/is/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt-varatexti +pdfjs-editor-alt-text-edit-button = + .aria-label = Breyta alt-myndatexta pdfjs-editor-alt-text-edit-button-label = Breyta alt-varatexta pdfjs-editor-alt-text-dialog-label = Veldu valkost pdfjs-editor-alt-text-dialog-description = Alt-varatexti (auka-myndatexti) hjálpar þegar fólk getur ekki séð myndina eða þegar hún hleðst ekki inn. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Merkt sem skraut # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Til dæmis: „Ungur maður sest við borð til að snæða máltíð“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt-myndatexti ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Loka pdfjs-editor-new-alt-text-ai-model-downloading-progress = Sækir gervigreindarlíkan með alt-myndatextum ({ $downloadedSize } af { $totalSize } MB) .aria-valuetext = Sækir gervigreindarlíkan með alt-myndatextum ({ $downloadedSize } af { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alt-myndatexta bætt við pdfjs-editor-new-alt-text-added-button-label = Alt-myndatexta bætt við # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Vantar alt-myndatexta pdfjs-editor-new-alt-text-missing-button-label = Vantar alt-myndatexta # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Yfirfara alt-myndatexta pdfjs-editor-new-alt-text-to-review-button-label = Yfirfara myndatexta # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index a53323e0cbe33..78be96a5c1361 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Балама мәтін +pdfjs-editor-alt-text-edit-button = + .aria-label = Балама мәтінді өңдеу pdfjs-editor-alt-text-edit-button-label = Балама мәтінді өңдеу pdfjs-editor-alt-text-dialog-label = Опцияны таңдау pdfjs-editor-alt-text-dialog-description = Балама мәтін адамдар суретті көре алмағанда немесе ол жүктелмегенде көмектеседі. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Декоративті деп бел # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Мысалы, "Жас жігіт тамақ ішу үшін үстел басына отырады" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Балама мәтін ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Жабу pdfjs-editor-new-alt-text-ai-model-downloading-progress = Балама мәтін үшін ЖИ моделі жүктеп алынуда ({ $downloadedSize }/{ $totalSize } МБ) .aria-valuetext = Балама мәтін үшін ЖИ моделі жүктеп алынуда ({ $downloadedSize }/{ $totalSize } МБ) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Балама мәтін қосылды pdfjs-editor-new-alt-text-added-button-label = Балама мәтін қосылды # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Балама мәтін жоқ pdfjs-editor-new-alt-text-missing-button-label = Балама мәтін жоқ # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Балама мәтінге пікір қалдыру pdfjs-editor-new-alt-text-to-review-button-label = Балама мәтінге пікір қалдыру # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/ko/viewer.ftl b/l10n/ko/viewer.ftl index a188af34ace37..3f3cd446ef06b 100644 --- a/l10n/ko/viewer.ftl +++ b/l10n/ko/viewer.ftl @@ -349,8 +349,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = 대체 텍스트 +pdfjs-editor-alt-text-edit-button = + .aria-label = 대체 텍스트 편집 pdfjs-editor-alt-text-edit-button-label = 대체 텍스트 편집 pdfjs-editor-alt-text-dialog-label = 옵션을 선택하세요 pdfjs-editor-alt-text-dialog-description = 대체 텍스트는 사람들이 이미지를 볼 수 없거나 이미지가 로드되지 않을 때 도움이 됩니다. @@ -364,6 +365,9 @@ pdfjs-editor-alt-text-decorative-tooltip = 장식용으로 표시됨 # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = 예를 들어, “한 청년이 식탁에 앉아 식사를 하고 있습니다.” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = 대체 텍스트 ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -445,10 +449,16 @@ pdfjs-editor-new-alt-text-error-close-button = 닫기 pdfjs-editor-new-alt-text-ai-model-downloading-progress = 대체 텍스트 AI 모델 다운로드 중 ({ $downloadedSize } / { $totalSize } MB) .aria-valuetext = 대체 텍스트 AI 모델 다운로드 중 ({ $downloadedSize } / { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = 대체 텍스트 추가됨 pdfjs-editor-new-alt-text-added-button-label = 대체 텍스트 추가됨 # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = 대체 텍스트 누락 pdfjs-editor-new-alt-text-missing-button-label = 대체 텍스트 누락 # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = 대체 텍스트 검토 pdfjs-editor-new-alt-text-to-review-button-label = 대체 텍스트 검토 # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/nl/viewer.ftl b/l10n/nl/viewer.ftl index 433be3c3e1f3e..7c681b6f4557a 100644 --- a/l10n/nl/viewer.ftl +++ b/l10n/nl/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatieve tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternatieve tekst bewerken pdfjs-editor-alt-text-edit-button-label = Alternatieve tekst bewerken pdfjs-editor-alt-text-dialog-label = Kies een optie pdfjs-editor-alt-text-dialog-description = Alternatieve tekst helpt wanneer mensen de afbeelding niet kunnen zien of wanneer deze niet wordt geladen. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Als decoratief gemarkeerd # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Bijvoorbeeld: ‘Een jonge man gaat aan een tafel zitten om te eten’ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatieve tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Sluiten pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model voor alternatieve tekst downloaden ({ $downloadedSize } van { $totalSize } MB) .aria-valuetext = AI-model voor alternatieve tekst downloaden ({ $downloadedSize } van { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatieve tekst toegevoegd pdfjs-editor-new-alt-text-added-button-label = Alternatieve tekst toegevoegd # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Alternatieve tekst ontbreekt pdfjs-editor-new-alt-text-missing-button-label = Alternatieve tekst ontbreekt # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternatieve tekst beoordelen pdfjs-editor-new-alt-text-to-review-button-label = Alternatieve tekst beoordelen # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index 3d6e963ffda9f..b1f508ab05a46 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = ਬਦਲਵੀਂ ਲਿਖਤ +pdfjs-editor-alt-text-edit-button = + .aria-label = ਬਦਲਵੀ ਲਿਖਤ ਨੂੰ ਸੋਧੋ pdfjs-editor-alt-text-edit-button-label = ਬਦਲਵੀ ਲਿਖਤ ਨੂੰ ਸੋਧੋ pdfjs-editor-alt-text-dialog-label = ਚੋਣ ਕਰੋ pdfjs-editor-alt-text-dialog-description = ਚਿੱਤਰ ਨਾ ਦਿੱਸਣ ਜਾਂ ਲੋਡ ਨਾ ਹੋਣ ਦੀ ਹਾਲਤ ਵਿੱਚ Alt ਲਿਖਤ (ਬਦਲਵੀਂ ਲਿਖਤ) ਲੋਕਾਂ ਲਈ ਮਦਦਗਾਰ ਹੁੰਦੀ ਹੈ। @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = ਸਜਾਵਟ ਵਜੋਂ ਨਿ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = ਮਿਸਾਲ ਵਜੋਂ, “ਗੱਭਰੂ ਭੋਜਨ ਲੈ ਕੇ ਮੇਜ਼ ਉੱਤੇ ਬੈਠਾ ਹੈ” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = ਬੰਦ ਕਰੋ pdfjs-editor-new-alt-text-ai-model-downloading-progress = ਬਦਲਵਾਂ ਲਿਖਤ AI ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ({ $totalSize } MB ਵਿੱਚੋਂ { $downloadedSize }) .aria-valuetext = ਬਦਲਵਾਂ ਲਿਖਤ AI ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ({ $totalSize } MB ਵਿੱਚੋਂ { $downloadedSize }) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ ਜੋੜੀ pdfjs-editor-new-alt-text-added-button-label = ਬਦਲਵੀਂ ਲਿਖਤ ਜੋੜੀ # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = ਬਦਲਵਾਂ ਲਿਖਤ ਗੁੰਮ ਹੈ pdfjs-editor-new-alt-text-missing-button-label = ਬਦਲਵਾਂ ਲਿਖਤ ਗੁੰਮ ਹੈ # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ ਦਾ ਰੀਵਿਊ ਕਰੋ pdfjs-editor-new-alt-text-to-review-button-label = ਬਦਲਵੀਂ ਲਿਖਤ ਦਾ ਰੀਵਿਊ ਕਰੋ # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 019df10f6f5b6..12774cd54a4f5 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo pdfjs-editor-alt-text-dialog-label = Escolha uma opção pdfjs-editor-alt-text-dialog-description = O texto alternativo ajuda quando uma imagem não aparece ou não é carregada. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcado como decorativa # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por exemplo, “Um jovem senta-se à mesa para comer uma refeição” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Fechar pdfjs-editor-new-alt-text-ai-model-downloading-progress = Baixando modelo de inteligência artificial de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Baixando modelo de inteligência artificial de texto alternativo ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Texto alternativo adicionado pdfjs-editor-new-alt-text-added-button-label = Texto alternativo adicionado # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Falta texto alternativo pdfjs-editor-new-alt-text-missing-button-label = Falta texto alternativo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Revisar texto alternativo pdfjs-editor-new-alt-text-to-review-button-label = Revisar texto alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/rm/viewer.ftl b/l10n/rm/viewer.ftl index 2c28eedd73641..a4dcda8ac203d 100644 --- a/l10n/rm/viewer.ftl +++ b/l10n/rm/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Agiuntar in maletg pdfjs-editor-free-highlight-thickness-input = Grossezza pdfjs-editor-free-highlight-thickness-title = .title = Midar la grossezza cun relevar elements betg textuals +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editur da text + .default-content = Cumenza a tippar… pdfjs-free-text = .aria-label = Editur da text pdfjs-free-text-default-content = Cumenzar a tippar… @@ -353,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Text alternativ +pdfjs-editor-alt-text-edit-button = + .aria-label = Modifitgar il text alternativ pdfjs-editor-alt-text-edit-button-label = Modifitgar il text alternativ pdfjs-editor-alt-text-dialog-label = Tscherner ina opziun pdfjs-editor-alt-text-dialog-description = Il text alternativ (alt text) gida en cas che persunas na vesan betg il maletg u sch'i na reussescha betg d'al chargiar. @@ -368,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcà sco decorativ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Per exempel: «In um giuven sesa a maisa per mangiar in past» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Text alternativ ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Serrar pdfjs-editor-new-alt-text-ai-model-downloading-progress = Telechargiar il model IA da text alternativ ({ $downloadedSize } da { $totalSize } MB) .aria-valuetext = Telechargiar il model IA da text alternativ ({ $downloadedSize } da { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Agiuntà text alternativ pdfjs-editor-new-alt-text-added-button-label = Text alternativ agiuntà # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Text alternativ manca pdfjs-editor-new-alt-text-missing-button-label = Text alternativ manca # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Repassar il text alternativ pdfjs-editor-new-alt-text-to-review-button-label = Repassar il text alternativ # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/ru/viewer.ftl b/l10n/ru/viewer.ftl index cb733a11a2e0c..9e0b41d2472ed 100644 --- a/l10n/ru/viewer.ftl +++ b/l10n/ru/viewer.ftl @@ -359,8 +359,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Альтернативный текст +pdfjs-editor-alt-text-edit-button = + .aria-label = Изменить альтернативный текст pdfjs-editor-alt-text-edit-button-label = Изменить альтернативный текст pdfjs-editor-alt-text-dialog-label = Выберите вариант pdfjs-editor-alt-text-dialog-description = Альтернативный текст помогает, когда люди не видят изображение или оно не загружается. @@ -374,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Помечен как декорат # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Например: «Молодой человек садится за стол, чтобы поесть» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Альтернативный текст ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -455,10 +459,16 @@ pdfjs-editor-new-alt-text-error-close-button = Закрыть pdfjs-editor-new-alt-text-ai-model-downloading-progress = Загрузка модели ИИ для альтернативного текста ({ $downloadedSize } из { $totalSize } МБ) .aria-valuetext = Загрузка модели ИИ для альтернативного текста ({ $downloadedSize } из { $totalSize } МБ) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Альтернативный текст добавлен pdfjs-editor-new-alt-text-added-button-label = Альтернативный текст добавлен # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Отсутствует альтернативный текст pdfjs-editor-new-alt-text-missing-button-label = Отсутствует альтернативный текст # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Оценить альтернативный текст pdfjs-editor-new-alt-text-to-review-button-label = Оценить альтернативный текст # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index f1684d56749e7..66cd84b2d5f8f 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -361,8 +361,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatívny text +pdfjs-editor-alt-text-edit-button = + .aria-label = Upraviť alternatívny text pdfjs-editor-alt-text-edit-button-label = Upraviť alternatívny text pdfjs-editor-alt-text-dialog-label = Vyberte možnosť pdfjs-editor-alt-text-dialog-description = Alternatívny text (alt text) pomáha, keď ľudia obrázok nevidia alebo sa nenačítava. @@ -376,6 +377,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Označený ako dekoratívny # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Napríklad: „Mladý muž si sadá za stôl, aby sa najedol“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatívny text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -457,10 +461,16 @@ pdfjs-editor-new-alt-text-error-close-button = Zavrieť pdfjs-editor-new-alt-text-ai-model-downloading-progress = Sťahuje sa model AI pre alternatívne texty ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Sťahuje sa model AI pre alternatívne texty ({ $downloadedSize } z { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatívny text bol pridaný pdfjs-editor-new-alt-text-added-button-label = Alternatívny text bol pridaný # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Chýbajúci alternatívny text pdfjs-editor-new-alt-text-missing-button-label = Chýbajúci alternatívny text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Skontrolovať alternatívny text pdfjs-editor-new-alt-text-to-review-button-label = Skontrolovať alternatívny text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/sv-SE/viewer.ftl b/l10n/sv-SE/viewer.ftl index 50fdf53a8d888..fd5ada0c5e237 100644 --- a/l10n/sv-SE/viewer.ftl +++ b/l10n/sv-SE/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternativ text +pdfjs-editor-alt-text-edit-button = + .aria-label = Redigera alternativ text pdfjs-editor-alt-text-edit-button-label = Redigera alternativ text pdfjs-editor-alt-text-dialog-label = Välj ett alternativ pdfjs-editor-alt-text-dialog-description = Alt text (alternativ text) hjälper till när människor inte kan se bilden eller när den inte laddas. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Märkt som dekorativ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Till exempel, "En ung man sätter sig vid ett bord för att äta en måltid" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativ text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Stäng pdfjs-editor-new-alt-text-ai-model-downloading-progress = Hämtar AI-modell med alternativ text ({ $downloadedSize } av { $totalSize } MB) .aria-valuetext = Hämtar AI-modell med alternativ text ({ $downloadedSize } av { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativ text tillagd pdfjs-editor-new-alt-text-added-button-label = Alternativ text tillagd # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Saknar alternativ text pdfjs-editor-new-alt-text-missing-button-label = Saknar alternativ text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Granska alternativ text pdfjs-editor-new-alt-text-to-review-button-label = Granska alternativ text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/tg/viewer.ftl b/l10n/tg/viewer.ftl index 8b25bad6f7eb5..442b7bf1914b7 100644 --- a/l10n/tg/viewer.ftl +++ b/l10n/tg/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Илова кардани тасви pdfjs-editor-free-highlight-thickness-input = Ғафсӣ pdfjs-editor-free-highlight-thickness-title = .title = Иваз кардани ғафсӣ ҳангоми ҷудокунии унсурҳо ба ғайр аз матн +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Муҳаррири матн + .default-content = Матнро ворид кунед… pdfjs-free-text = .aria-label = Муҳаррири матн pdfjs-free-text-default-content = Нависед… @@ -353,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Матни иловагӣ +pdfjs-editor-alt-text-edit-button = + .aria-label = Таҳрир кардани матни ивазкунанда pdfjs-editor-alt-text-edit-button-label = Таҳрир кардани матни иловагӣ pdfjs-editor-alt-text-dialog-label = Имконеро интихоб намоед pdfjs-editor-alt-text-dialog-description = Вақте ки одамон тасвирро дида наметавонанд ё вақте ки тасвир бор карда намешавад, матни иловагӣ (Alt text) кумак мерасонад. @@ -368,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Ҳамчун матни ороишӣ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Барои мисол, «Ман забони тоҷикиро дӯст медорам» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Матни ивазкунанда ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -439,10 +447,16 @@ pdfjs-editor-new-alt-text-error-title = Матни иловагӣ ба тавр pdfjs-editor-new-alt-text-error-description = Лутфан, матни иловагии худро ворид кунед ё баъдтар аз нав кӯшиш кунед. pdfjs-editor-new-alt-text-error-close-button = Пӯшидан # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Матни иловагӣ илова карда шуд pdfjs-editor-new-alt-text-added-button-label = Матни иловагӣ илова карда шуд # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Матни иловагӣ вуҷуд надорад pdfjs-editor-new-alt-text-missing-button-label = Матни иловагӣ вуҷуд надорад # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Бознигарӣ кардани матни иловагӣ pdfjs-editor-new-alt-text-to-review-button-label = Бознигарӣ кардани матни иловагӣ # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/tr/viewer.ftl b/l10n/tr/viewer.ftl index 4a8f9eed805bd..8104fdc365f5f 100644 --- a/l10n/tr/viewer.ftl +++ b/l10n/tr/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternatif metin +pdfjs-editor-alt-text-edit-button = + .aria-label = Alternatif metni düzenle pdfjs-editor-alt-text-edit-button-label = Alternatif metni düzenle pdfjs-editor-alt-text-dialog-label = Bir seçenek seçin pdfjs-editor-alt-text-dialog-description = Alternatif metin, insanlar resmi göremediğinde veya resim yüklenmediğinde işe yarar. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Dekoratif olarak işaretlendi # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Örneğin, “Genç bir adam yemek yemek için masaya oturuyor” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternatif metin ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Kapat pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alt metin yapay zekâ modeli indiriliyor ({ $downloadedSize } / { $totalSize } MB) .aria-valuetext = Alt metin yapay zekâ modeli indiriliyor ({ $downloadedSize } / { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternatif metin eklendi pdfjs-editor-new-alt-text-added-button-label = Alt metin eklendi # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Alternatif metin eksik pdfjs-editor-new-alt-text-missing-button-label = Alt metin eksik # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Alternatif metni incele pdfjs-editor-new-alt-text-to-review-button-label = Alt metni incele # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/vi/viewer.ftl b/l10n/vi/viewer.ftl index 4d0b81571a887..2b0213a1cc0e1 100644 --- a/l10n/vi/viewer.ftl +++ b/l10n/vi/viewer.ftl @@ -349,8 +349,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Văn bản thay thế +pdfjs-editor-alt-text-edit-button = + .aria-label = Chỉnh sửa văn bản thay thế pdfjs-editor-alt-text-edit-button-label = Chỉnh sửa văn bản thay thế pdfjs-editor-alt-text-dialog-label = Chọn một lựa chọn pdfjs-editor-alt-text-dialog-description = Văn bản thay thế sẽ hữu ích khi mọi người không thể thấy hình ảnh hoặc khi hình ảnh không tải. @@ -364,6 +365,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Đã đánh dấu là trang trí # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Ví dụ: “Một thanh niên ngồi xuống bàn để thưởng thức một bữa ăn” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Văn bản thay thế ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -445,10 +449,16 @@ pdfjs-editor-new-alt-text-error-close-button = Đóng pdfjs-editor-new-alt-text-ai-model-downloading-progress = Đang tải xuống mô hình AI văn bản thay thế ({ $downloadedSize } trong số { $totalSize } MB) .aria-valuetext = Đang tải xuống mô hình AI văn bản thay thế ({ $downloadedSize } trong số { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Đã thêm văn bản thay thế pdfjs-editor-new-alt-text-added-button-label = Đã thêm văn bản thay thế # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Thiếu văn bản thay thế pdfjs-editor-new-alt-text-missing-button-label = Thiếu văn bản thay thế # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Xem lại văn bản thay thế pdfjs-editor-new-alt-text-to-review-button-label = Xem lại văn bản thay thế # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/zh-CN/viewer.ftl b/l10n/zh-CN/viewer.ftl index 05439ec88bb73..7a79f379a8466 100644 --- a/l10n/zh-CN/viewer.ftl +++ b/l10n/zh-CN/viewer.ftl @@ -349,13 +349,14 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = 替换文字 +pdfjs-editor-alt-text-edit-button = + .aria-label = 编辑替换文字 pdfjs-editor-alt-text-edit-button-label = 编辑替换文字 pdfjs-editor-alt-text-dialog-label = 选择一项 pdfjs-editor-alt-text-dialog-description = 替换文字可在用户无法看到或加载图像时,描述其内容。 pdfjs-editor-alt-text-add-description-label = 添加描述 -pdfjs-editor-alt-text-add-description-description = 描述主题、背景或动作,长度尽量控制在两句话内。 +pdfjs-editor-alt-text-add-description-description = 用一两个句子,描述主题、背景或动作。 pdfjs-editor-alt-text-mark-decorative-label = 标记为装饰 pdfjs-editor-alt-text-mark-decorative-description = 用于装饰的图像,例如边框和水印。 pdfjs-editor-alt-text-cancel-button = 取消 @@ -364,6 +365,9 @@ pdfjs-editor-alt-text-decorative-tooltip = 已标记为装饰 # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = 例如:一个少年坐到桌前,准备吃饭 +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = 替换文字 ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -445,10 +449,16 @@ pdfjs-editor-new-alt-text-error-close-button = 关闭 pdfjs-editor-new-alt-text-ai-model-downloading-progress = 正在下载提供替换文字的 AI 模型({ $downloadedSize }/{ $totalSize } MB) .aria-valuetext = 正在下载提供替换文字的 AI 模型({ $downloadedSize }/{ $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = 已添加替换文字 pdfjs-editor-new-alt-text-added-button-label = 已添加替换文字 # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = 缺少替换文字 pdfjs-editor-new-alt-text-missing-button-label = 缺少替换文字 # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = 检查替换文字 pdfjs-editor-new-alt-text-to-review-button-label = 检查替换文字 # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/zh-TW/viewer.ftl b/l10n/zh-TW/viewer.ftl index 705eff142872d..16d41797ae621 100644 --- a/l10n/zh-TW/viewer.ftl +++ b/l10n/zh-TW/viewer.ftl @@ -349,8 +349,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = 替代文字 +pdfjs-editor-alt-text-edit-button = + .aria-label = 編輯替代文字 pdfjs-editor-alt-text-edit-button-label = 編輯替代文字 pdfjs-editor-alt-text-dialog-label = 挑選一種 pdfjs-editor-alt-text-dialog-description = 替代文字可協助盲人,或於圖片無法載入時提供說明。 @@ -364,6 +365,9 @@ pdfjs-editor-alt-text-decorative-tooltip = 已標示為裝飾性內容 # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = 例如:「有一位年輕男人坐在桌子前面吃飯」 +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = 替代文字 ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -445,10 +449,16 @@ pdfjs-editor-new-alt-text-error-close-button = 關閉 pdfjs-editor-new-alt-text-ai-model-downloading-progress = 正在下載替代文字 AI 模型({ $downloadedSize } / { $totalSize } MB) .aria-valuetext = 正在下載替代文字 AI 模型({ $downloadedSize } / { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = 已新增替代文字 pdfjs-editor-new-alt-text-added-button-label = 已新增替代文字 # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = 缺少替代文字 pdfjs-editor-new-alt-text-missing-button-label = 缺少替代文字 # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = 確認替代文字 pdfjs-editor-new-alt-text-to-review-button-label = 確認替代文字 # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: From c248fdbdbbc6b72a3021db4b537260c2bc823e5b Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 30 Aug 2024 19:18:36 +0200 Subject: [PATCH 064/338] Update svglint to 3.1.0 The new release contains: - https://github.com/simple-icons/svglint/pull/110 - https://github.com/simple-icons/svglint/pull/111 which allow us to slightly simplify our code. --- .svglintrc.js | 14 ++++++++++++++ gulpfile.mjs | 10 +++------- package-lock.json | 9 +++++---- package.json | 2 +- 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/.svglintrc.js b/.svglintrc.js index 25dad02764f52..68cf2ce57b64e 100644 --- a/.svglintrc.js +++ b/.svglintrc.js @@ -18,4 +18,18 @@ export default { }, ], }, + ignore: [ + "build/**", + "l10n/**", + "docs/**", + "node_modules/**", + "external/bcmaps/**", + "external/builder/fixtures/**", + "external/builder/fixtures_babel/**", + "external/quickjs/**", + "test/tmp/**", + "test/pdfs/**", + "web/locale/**", + "*~/**", + ], }; diff --git a/gulpfile.mjs b/gulpfile.mjs index e1fe53f32fe89..703053f536726 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1983,8 +1983,9 @@ gulp.task("lint", function (done) { const svgLintOptions = [ "node_modules/svglint/bin/cli.js", - "web/**/*.svg", + "**/*.svg", "--ci", + "--no-summary", ]; const esLintProcess = startNode(esLintOptions, { stdio: "inherit" }); @@ -2009,12 +2010,7 @@ gulp.task("lint", function (done) { } const svgLintProcess = startNode(svgLintOptions, { - stdio: "pipe", - }); - svgLintProcess.stdout.setEncoding("utf8"); - svgLintProcess.stdout.on("data", m => { - m = m.toString().replace(/-+ Summary -+.*/ms, ""); - console.log(m); + stdio: "inherit", }); svgLintProcess.on("close", function (svgLintCode) { if (svgLintCode !== 0) { diff --git a/package-lock.json b/package-lock.json index 4e35511e9410b..ad6e48ec01a28 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "puppeteer": "23.3.1", "stylelint": "^16.10.0", "stylelint-prettier": "^5.0.2", - "svglint": "^3.0.0", + "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.10", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", @@ -12521,10 +12521,11 @@ "dev": true }, "node_modules/svglint": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/svglint/-/svglint-3.0.0.tgz", - "integrity": "sha512-WX1gta0wz0dH35J5Dq3CP4Mz2jrrxrSqmEyehtraZaw4L4KRKAcTADaHxmj4Z+qYB6DP3IbDnaKNaQDFrpvVvA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/svglint/-/svglint-3.1.0.tgz", + "integrity": "sha512-5poEBAiB1VpswI2YLS2tx50/KfbcYc3AWWjsXBQJxcl6nkx632+LvN3biopFJbPGU1qrSnPQ22Iq42pFzbvBZw==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1", "chalk": "^5.0.0", diff --git a/package.json b/package.json index ffc8e398d3240..1478dbc10ffc0 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "puppeteer": "23.3.1", "stylelint": "^16.10.0", "stylelint-prettier": "^5.0.2", - "svglint": "^3.0.0", + "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.10", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", From ecc7fcd6118cfe700ae128282ba694045d1e9908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 18 Nov 2024 15:04:14 +0100 Subject: [PATCH 065/338] Use JSON imports instead of PDFJSDev.json JSON imports are now supported by all tools used in PDF.js' build process. The `chromecom.js` file is bundled by webpack and import attributes are thus removed, so browser compatibility for this new syntax is not relevant. --- eslint.config.mjs | 2 +- .../builder/babel-plugin-pdfjs-preprocessor.mjs | 15 --------------- external/builder/fixtures_babel/evals-expected.js | 3 --- external/builder/fixtures_babel/evals.js | 1 - external/builder/fixtures_babel/evals.json | 1 - gulpfile.mjs | 1 + web/chromecom.js | 10 +++++----- 7 files changed, 7 insertions(+), 26 deletions(-) delete mode 100644 external/builder/fixtures_babel/evals.json diff --git a/eslint.config.mjs b/eslint.config.mjs index 41ffad5d3f5f6..a9e4f4687e88b 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -77,7 +77,7 @@ export default [ __non_webpack_import__: "readonly", }, - ecmaVersion: 2022, + ecmaVersion: 2025, sourceType: "module", }, diff --git a/external/builder/babel-plugin-pdfjs-preprocessor.mjs b/external/builder/babel-plugin-pdfjs-preprocessor.mjs index 8f8be7a724e75..ff92a7a765022 100644 --- a/external/builder/babel-plugin-pdfjs-preprocessor.mjs +++ b/external/builder/babel-plugin-pdfjs-preprocessor.mjs @@ -1,10 +1,7 @@ import { types as t, transformSync } from "@babel/core"; -import fs from "fs"; -import { join as joinPaths } from "path"; import vm from "vm"; const PDFJS_PREPROCESSOR_NAME = "PDFJSDev"; -const ROOT_PREFIX = "$ROOT/"; function isPDFJSPreprocessor(obj) { return obj.type === "Identifier" && obj.name === PDFJS_PREPROCESSOR_NAME; @@ -40,18 +37,6 @@ function handlePreprocessorAction(ctx, actionName, args, path) { return result; } break; - case "json": - if (!t.isStringLiteral(arg)) { - throw new Error("Path to JSON is not provided"); - } - let jsonPath = arg.value; - if (jsonPath.startsWith(ROOT_PREFIX)) { - jsonPath = joinPaths( - ctx.rootPath, - jsonPath.substring(ROOT_PREFIX.length) - ); - } - return JSON.parse(fs.readFileSync(jsonPath, "utf8")); } throw new Error("Unsupported action"); } catch (e) { diff --git a/external/builder/fixtures_babel/evals-expected.js b/external/builder/fixtures_babel/evals-expected.js index 510e62f1bb523..71eee73d1e89d 100644 --- a/external/builder/fixtures_babel/evals-expected.js +++ b/external/builder/fixtures_babel/evals-expected.js @@ -10,9 +10,6 @@ var g = { }, j: 2 }; -var h = { - test: "test" -}; var i = '0'; var j = { i: 1 diff --git a/external/builder/fixtures_babel/evals.js b/external/builder/fixtures_babel/evals.js index 94ec543b04d19..cabeb0746a949 100644 --- a/external/builder/fixtures_babel/evals.js +++ b/external/builder/fixtures_babel/evals.js @@ -5,7 +5,6 @@ var d = PDFJSDev.test('FALSE'); var e = PDFJSDev.eval('TRUE'); var f = PDFJSDev.eval('TEXT'); var g = PDFJSDev.eval('OBJ'); -var h = PDFJSDev.json('$ROOT/external/builder/fixtures_babel/evals.json'); var i = typeof PDFJSDev === 'undefined' ? PDFJSDev.eval('FALSE') : '0'; var j = typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('OBJ.obj') : '0'; var k = !PDFJSDev.test('TRUE'); diff --git a/external/builder/fixtures_babel/evals.json b/external/builder/fixtures_babel/evals.json deleted file mode 100644 index 000642c425cbf..0000000000000 --- a/external/builder/fixtures_babel/evals.json +++ /dev/null @@ -1 +0,0 @@ -{ "test": "test" } \ No newline at end of file diff --git a/gulpfile.mjs b/gulpfile.mjs index 703053f536726..403d606fee8d8 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -382,6 +382,7 @@ function createWebpackConfig( module: { rules: [ { + test: /\.[mc]?js$/, loader: "babel-loader", exclude: babelExcludeRegExp, options: { diff --git a/web/chromecom.js b/web/chromecom.js index 1ece304791c1d..a2eec5c347ec3 100644 --- a/web/chromecom.js +++ b/web/chromecom.js @@ -20,6 +20,9 @@ import { BasePreferences } from "./preferences.js"; import { GenericL10n } from "./genericl10n.js"; import { GenericScripting } from "./generic_scripting.js"; +// These strings are from chrome/app/resources/generated_resources_*.xtb. +import i18nFileAccessLabels from "./chrome-i18n-allow-access-to-file-urls.json" with { type: "json" }; + if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME")) { throw new Error( 'Module "pdfjs-web/chromecom" shall not be used outside CHROME build.' @@ -194,11 +197,8 @@ function requestAccessToLocalFile(fileUrl, overlayManager, callback) { // Use Chrome's definition of UI language instead of PDF.js's #lang=..., // because the shown string should match the UI at chrome://extensions. - // These strings are from chrome/app/resources/generated_resources_*.xtb. - const i18nFileAccessLabel = PDFJSDev.json( - "$ROOT/web/chrome-i18n-allow-access-to-file-urls.json" - )[chrome.i18n.getUILanguage?.()]; - + const i18nFileAccessLabel = + i18nFileAccessLabels[chrome.i18n.getUILanguage?.()]; if (i18nFileAccessLabel) { document.getElementById("chrome-file-access-label").textContent = i18nFileAccessLabel; From 969332d6828a2d4baaa3210a2e9561c7b879b88d Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 17 Nov 2024 21:05:37 +0100 Subject: [PATCH 066/338] Fix the "must check that an infinite loop is not triggered" integration test This integration test fails intermittently, locally at least in Chrome with Puppeteer 23.4.0+, with the following errors: ``` In chrome: Expected '123Hello' to equal 'Hello123'. In chrome: Expected '123Hello' to equal '123'. ``` This happens because the test before it left queued sandbox events behind. We don't close the document between tests, so those get run when we click the textbox in this test and that interferes with our selection/typing actions. This commit fixes the issue by flushing the queued sandbox events in the first test, which makes sure that state no longer leaks through to the next test and thus improves isolation. Morever, similar to commit 3adf8b6 we use safer assertions to avoid further intermittent failures, and we replace the `page.$eval` call with a simpler Home button push like we already do in e.g. the test helpers. This combined makes the code shorter and simpler. --- test/integration/scripting_spec.mjs | 30 +++++++++++++---------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 7f74d5893c13f..1228e4ff13edf 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -1266,6 +1266,13 @@ describe("Interaction", () => { await page.waitForFunction( `${getQuerySelector("27R")}.value === "HEAO "` ); + + // The typing actions in the first textbox caused sandbox events to be + // queued. We don't close the document between tests, so we have to + // flush them here, by clicking the second textbox, so they don't leak + // through to the following test. + await page.click(getSelector("28R")); + await waitForSandboxTrip(page); }) ); }); @@ -1276,30 +1283,19 @@ describe("Interaction", () => { await waitForScripting(page); await page.click(getSelector("28R")); - await page.$eval(getSelector("28R"), el => - el.setSelectionRange(0, 0) - ); - + await page.keyboard.press("Home"); await page.type(getSelector("28R"), "Hello"); await page.waitForFunction( - `${getQuerySelector("28R")}.value !== "123"` + `${getQuerySelector("28R")}.value === "Hello123"` ); - let text = await page.$eval(getSelector("28R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("Hello123"); - - // The action will trigger a calculateNow which itself - // will trigger a resetForm (inducing a calculateNow) and a - // calculateNow. + // The action triggers a `calculateNow` which in turn triggers a + // `resetForm (inducing a `calculateNow`) and a `calculateNow`. + // Without infinite loop prevention the field would be empty. await page.click("[data-annotation-id='31R']"); - await page.waitForFunction( - `${getQuerySelector("28R")}.value !== "Hello123"` + `${getQuerySelector("28R")}.value === "123"` ); - - // Without preventing against infinite loop the field is empty. - text = await page.$eval(getSelector("28R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("123"); }) ); }); From 3cdb439d72eb6df68287c9b12b5e305da3194a83 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 19 Nov 2024 11:36:58 +0100 Subject: [PATCH 067/338] Enable the `unicorn/no-single-promise-in-promise-methods` ESLint plugin rule Please see https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-single-promise-in-promise-methods.md --- eslint.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index a9e4f4687e88b..caf6c01a4f230 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -115,6 +115,7 @@ export default [ "unicorn/no-instanceof-array": "error", "unicorn/no-invalid-remove-event-listener": "error", "unicorn/no-new-buffer": "error", + "unicorn/no-single-promise-in-promise-methods": "error", "unicorn/no-typeof-undefined": ["error", { checkGlobalVariables: false }], "unicorn/no-useless-promise-resolve-reject": "error", "unicorn/no-useless-spread": "error", From a1363f0aea600152922bfee94ad6c9d527987333 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 18 Nov 2024 21:25:43 +0100 Subject: [PATCH 068/338] Fix 'must load a SVG, delete it and undo' integration test We wait for the canvas before trying to serialize the annotation in order to make sure the image has been loaded. --- test/integration/stamp_editor_spec.mjs | 8 ++++---- test/integration/test_utils.mjs | 15 ++++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index c8c4275e3c011..224e6cf2ab5a5 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -195,14 +195,14 @@ describe("Stamp Editor", () => { ); const editorSelector = getEditorSelector(0); await waitForImage(page, editorSelector); - await waitForSerialized(page, 1); + await page.waitForSelector(`${editorSelector} button.delete`); await page.click(`${editorSelector} button.delete`); - await waitForSerialized(page, 0); await kbUndo(page); + await waitForImage(page, editorSelector); await waitForSerialized(page, 1); await waitForSelectedEditor(page, editorSelector); @@ -654,8 +654,8 @@ describe("Stamp Editor", () => { await waitForSerialized(page, 0); await kbUndo(page); + await waitForImage(page, selector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} canvas`); } }); }); @@ -739,8 +739,8 @@ describe("Stamp Editor", () => { } await kbUndo(page); + await waitForImage(page, selector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} canvas`); } }); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 84c74ed43541f..4cdc400bffe34 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -327,9 +327,18 @@ async function waitForStorageEntries(page, nEntries) { async function waitForSerialized(page, nEntries) { return page.waitForFunction( - n => - (window.PDFViewerApplication.pdfDocument.annotationStorage.serializable - .map?.size ?? 0) === n, + n => { + try { + return ( + (window.PDFViewerApplication.pdfDocument.annotationStorage + .serializable.map?.size ?? 0) === n + ); + } catch { + // When serializing a stamp annotation with a SVG, the transfer + // can fail because of the SVG, so we just retry. + return false; + } + }, {}, nEntries ); From e0138286b5a85695e6a2dd4057ca517706bf4dc6 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 21 Nov 2024 13:03:08 +0100 Subject: [PATCH 069/338] Simplify the `getUuid` helper function We can remove most feature testing from this helper function, with the exception of `randomUUID` since that's only available in "secure contexts", and also remove the fallback code-path. Note that this code was only added for Node.js compatibility, and it's no longer necessary now that the minimum support version is `20`; see also https://developer.mozilla.org/en-US/docs/Web/API/Crypto#browser_compatibility Finally, this patch also adds a basic unit-test for the helper function. --- src/shared/util.js | 13 ++----------- test/unit/util_spec.js | 9 +++++++++ 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/shared/util.js b/src/shared/util.js index c4752522fcde9..006c416b0db49 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1075,21 +1075,12 @@ function normalizeUnicode(str) { function getUuid() { if ( (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || - (typeof crypto !== "undefined" && typeof crypto?.randomUUID === "function") + typeof crypto.randomUUID === "function" ) { return crypto.randomUUID(); } const buf = new Uint8Array(32); - if ( - typeof crypto !== "undefined" && - typeof crypto?.getRandomValues === "function" - ) { - crypto.getRandomValues(buf); - } else { - for (let i = 0; i < 32; i++) { - buf[i] = Math.floor(Math.random() * 255); - } - } + crypto.getRandomValues(buf); return bytesToString(buf); } diff --git a/test/unit/util_spec.js b/test/unit/util_spec.js index c5a9e07da1a72..9d96e118e11a1 100644 --- a/test/unit/util_spec.js +++ b/test/unit/util_spec.js @@ -18,6 +18,7 @@ import { bytesToString, createValidAbsoluteUrl, getModificationDate, + getUuid, string32, stringToBytes, stringToPDFString, @@ -248,4 +249,12 @@ describe("util", function () { expect(getModificationDate(date)).toEqual("31410609020653"); }); }); + + describe("getUuid", function () { + it("should get uuid string", function () { + const uuid = getUuid(); + expect(typeof uuid).toEqual("string"); + expect(uuid.length).toBeGreaterThanOrEqual(32); + }); + }); }); From fc044d43296df4ce6a5ca3623f6da7ddd6494a07 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 21 Nov 2024 17:27:31 +0100 Subject: [PATCH 070/338] Use the V entry as an option when no options in a choice widget It fixes #19083. It isn't really a fix but more a workaround (we should correctly implement the choice widget as a mix of text input+select). --- src/core/annotation.js | 12 ++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19083.pdf | Bin 0 -> 6673 bytes test/test_manifest.json | 9 +++++++++ 4 files changed, 22 insertions(+) create mode 100755 test/pdfs/issue19083.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index 3a7c9ccdf7ed4..e970dc34cddd4 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -3511,6 +3511,18 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { } } + // It's a workaround for the issue #19083. + // Normally a choice widget is a mix of a text field and a listbox, + // So in the case where the V entry isn't an option we should just set it + // as the text field value. + if (this.data.options.length === 0 && this.data.fieldValue.length > 0) { + // If there are no options, then the field value is the only option. + this.data.options = this.data.fieldValue.map(value => ({ + exportValue: value, + displayValue: value, + })); + } + // Process field flags for the display layer. this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO); this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 4bf8b655473e2..0d392f67c82dd 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -681,3 +681,4 @@ !issue18894.pdf !bug1922766.pdf !issue18956.pdf +!issue19083.pdf diff --git a/test/pdfs/issue19083.pdf b/test/pdfs/issue19083.pdf new file mode 100755 index 0000000000000000000000000000000000000000..508b7db9630cd351778d3d6b31cd618f9fe735a2 GIT binary patch literal 6673 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 Date: Thu, 21 Nov 2024 15:14:17 +0100 Subject: [PATCH 071/338] [Editor] Simplify the draw layer code and tweak a bit the highlight one (e.g. it's useless to have 64 bits floating point numbers when 32 bits ones are enough). It's a required step for the refactoring of the ink tool (in order to use the draw layer). It avoids to call several functions acting on the same SVG element. --- src/display/draw_layer.js | 106 +++++----- src/display/editor/drawers/freedraw.js | 76 ++++---- src/display/editor/drawers/highlight.js | 37 ++-- src/display/editor/drawers/outline.js | 26 +-- src/display/editor/highlight.js | 246 ++++++++++++++++-------- test/driver.js | 36 +++- web/draw_layer_builder.css | 31 +-- 7 files changed, 323 insertions(+), 235 deletions(-) diff --git a/src/display/draw_layer.js b/src/display/draw_layer.js index 4e649f93e9085..d7592069814d8 100644 --- a/src/display/draw_layer.js +++ b/src/display/draw_layer.js @@ -55,7 +55,7 @@ class DrawLayer { return shadow(this, "_svgFactory", new DOMSVGFactory()); } - static #setBox(element, { x = 0, y = 0, width = 1, height = 1 } = {}) { + static #setBox(element, [x, y, width, height]) { const { style } = element; style.top = `${100 * y}%`; style.left = `${100 * x}%`; @@ -63,11 +63,10 @@ class DrawLayer { style.height = `${100 * height}%`; } - #createSVG(box) { + #createSVG() { const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true); this.#parent.append(svg); svg.setAttribute("aria-hidden", true); - DrawLayer.#setBox(svg, box); return svg; } @@ -86,10 +85,19 @@ class DrawLayer { return clipPathId; } - draw(outlines, color, opacity, isPathUpdatable = false) { + #updateProperties(element, properties) { + for (const [key, value] of Object.entries(properties)) { + if (value === null) { + element.removeAttribute(key); + } else { + element.setAttribute(key, value); + } + } + } + + draw(properties, isPathUpdatable = false, hasClip = false) { const id = this.#id++; - const root = this.#createSVG(outlines.box); - root.classList.add(...outlines.classNamesForDrawing); + const root = this.#createSVG(); const defs = DrawLayer._svgFactory.createElement("defs"); root.append(defs); @@ -97,45 +105,42 @@ class DrawLayer { defs.append(path); const pathId = `path_p${this.pageIndex}_${id}`; path.setAttribute("id", pathId); - path.setAttribute("d", outlines.toSVGPath()); + path.setAttribute("vector-effect", "non-scaling-stroke"); if (isPathUpdatable) { this.#toUpdate.set(id, path); } // Create the clipping path for the editor div. - const clipPathId = this.#createClipPath(defs, pathId); + const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null; const use = DrawLayer._svgFactory.createElement("use"); root.append(use); - root.setAttribute("fill", color); - root.setAttribute("fill-opacity", opacity); use.setAttribute("href", `#${pathId}`); + this.updateProperties(root, properties); this.#mapping.set(id, root); return { id, clipPathId: `url(#${clipPathId})` }; } - drawOutline(outlines) { + drawOutline(properties, mustRemoveSelfIntersections) { // We cannot draw the outline directly in the SVG for highlights because // it composes with its parent with mix-blend-mode: multiply. // But the outline has a different mix-blend-mode, so we need to draw it in // its own SVG. const id = this.#id++; - const root = this.#createSVG(outlines.box); - root.classList.add(...outlines.classNamesForOutlining); + const root = this.#createSVG(); const defs = DrawLayer._svgFactory.createElement("defs"); root.append(defs); const path = DrawLayer._svgFactory.createElement("path"); defs.append(path); const pathId = `path_p${this.pageIndex}_${id}`; path.setAttribute("id", pathId); - path.setAttribute("d", outlines.toSVGPath()); path.setAttribute("vector-effect", "non-scaling-stroke"); let maskId; - if (outlines.mustRemoveSelfIntersections) { + if (mustRemoveSelfIntersections) { const mask = DrawLayer._svgFactory.createElement("mask"); defs.append(mask); maskId = `mask_p${this.pageIndex}_${id}`; @@ -166,59 +171,40 @@ class DrawLayer { use1.classList.add("mainOutline"); use2.classList.add("secondaryOutline"); + this.updateProperties(root, properties); + this.#mapping.set(id, root); return id; } - finalizeLine(id, line) { - const path = this.#toUpdate.get(id); + finalizeDraw(id, properties) { this.#toUpdate.delete(id); - this.updateBox(id, line.box); - path.setAttribute("d", line.toSVGPath()); - } - - updateLine(id, line) { - const root = this.#mapping.get(id); - const defs = root.firstChild; - const path = defs.firstChild; - path.setAttribute("d", line.toSVGPath()); + this.updateProperties(id, properties); } - updatePath(id, line) { - this.#toUpdate.get(id).setAttribute("d", line.toSVGPath()); - } - - updateBox(id, box) { - DrawLayer.#setBox(this.#mapping.get(id), box); - } - - show(id, visible) { - this.#mapping.get(id).classList.toggle("hidden", !visible); - } - - rotate(id, angle) { - this.#mapping.get(id).setAttribute("data-main-rotation", angle); - } - - changeColor(id, color) { - this.#mapping.get(id).setAttribute("fill", color); - } - - changeOpacity(id, opacity) { - this.#mapping.get(id).setAttribute("fill-opacity", opacity); - } - - addClass(id, className) { - this.#mapping.get(id).classList.add(className); - } - - removeClass(id, className) { - this.#mapping.get(id).classList.remove(className); - } - - getSVGRoot(id) { - return this.#mapping.get(id); + updateProperties(elementOrId, { root, bbox, rootClass, path }) { + const element = + typeof elementOrId === "number" + ? this.#mapping.get(elementOrId) + : elementOrId; + if (root) { + this.#updateProperties(element, root); + } + if (bbox) { + DrawLayer.#setBox(element, bbox); + } + if (rootClass) { + const { classList } = element; + for (const [className, value] of Object.entries(rootClass)) { + classList.toggle(className, value); + } + } + if (path) { + const defs = element.firstChild; + const pathElement = defs.firstChild; + this.#updateProperties(pathElement, path); + } } remove(id) { diff --git a/src/display/editor/drawers/freedraw.js b/src/display/editor/drawers/freedraw.js index 38ded7ff81e7f..30f73d90cd478 100644 --- a/src/display/editor/drawers/freedraw.js +++ b/src/display/editor/drawers/freedraw.js @@ -34,7 +34,7 @@ class FreeDrawOutliner { // We track the last 3 points in order to be able to: // - compute the normal of the line, // - compute the control points of the quadratic Bézier curve. - #last = new Float64Array(18); + #last = new Float32Array(18); #lastX; @@ -302,7 +302,7 @@ class FreeDrawOutliner { const last = this.#last; const [layerX, layerY, layerWidth, layerHeight] = this.#box; - const points = new Float64Array((this.#points?.length ?? 0) + 2); + const points = new Float32Array((this.#points?.length ?? 0) + 2); for (let i = 0, ii = points.length - 2; i < ii; i += 2) { points[i] = (this.#points[i] - layerX) / layerWidth; points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight; @@ -315,7 +315,7 @@ class FreeDrawOutliner { return this.#getOutlineTwoPoints(points); } - const outline = new Float64Array( + const outline = new Float32Array( this.#top.length + 24 + this.#bottom.length ); let N = top.length; @@ -360,7 +360,7 @@ class FreeDrawOutliner { const [layerX, layerY, layerWidth, layerHeight] = this.#box; const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords(); - const outline = new Float64Array(36); + const outline = new Float32Array(36); outline.set( [ NaN, @@ -460,7 +460,7 @@ class FreeDrawOutliner { class FreeDrawOutline extends Outline { #box; - #bbox = null; + #bbox = new Float32Array(4); #innerMargin; @@ -480,9 +480,10 @@ class FreeDrawOutline extends Outline { this.#scaleFactor = scaleFactor; this.#innerMargin = innerMargin; this.#isLTR = isLTR; + this.lastPoint = [NaN, NaN]; this.#computeMinMax(isLTR); - const { x, y, width, height } = this.#bbox; + const [x, y, width, height] = this.#bbox; for (let i = 0, ii = outline.length; i < ii; i += 2) { outline[i] = (outline[i] - x) / width; outline[i + 1] = (outline[i + 1] - y) / height; @@ -517,49 +518,43 @@ class FreeDrawOutline extends Outline { let points; switch (rotation) { case 0: - outline = this.#rescale(this.#outline, blX, trY, width, -height); - points = this.#rescale(this.#points, blX, trY, width, -height); + outline = Outline._rescale(this.#outline, blX, trY, width, -height); + points = Outline._rescale(this.#points, blX, trY, width, -height); break; case 90: - outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height); - points = this.#rescaleAndSwap(this.#points, blX, blY, width, height); + outline = Outline._rescaleAndSwap( + this.#outline, + blX, + blY, + width, + height + ); + points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height); break; case 180: - outline = this.#rescale(this.#outline, trX, blY, -width, height); - points = this.#rescale(this.#points, trX, blY, -width, height); + outline = Outline._rescale(this.#outline, trX, blY, -width, height); + points = Outline._rescale(this.#points, trX, blY, -width, height); break; case 270: - outline = this.#rescaleAndSwap( + outline = Outline._rescaleAndSwap( this.#outline, trX, trY, -width, -height ); - points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height); + points = Outline._rescaleAndSwap( + this.#points, + trX, + trY, + -width, + -height + ); break; } return { outline: Array.from(outline), points: [Array.from(points)] }; } - #rescale(src, tx, ty, sx, sy) { - const dest = new Float64Array(src.length); - for (let i = 0, ii = src.length; i < ii; i += 2) { - dest[i] = tx + src[i] * sx; - dest[i + 1] = ty + src[i + 1] * sy; - } - return dest; - } - - #rescaleAndSwap(src, tx, ty, sx, sy) { - const dest = new Float64Array(src.length); - for (let i = 0, ii = src.length; i < ii; i += 2) { - dest[i] = tx + src[i + 1] * sx; - dest[i + 1] = ty + src[i] * sy; - } - return dest; - } - #computeMinMax(isLTR) { const outline = this.#outline; let lastX = outline[4]; @@ -605,11 +600,12 @@ class FreeDrawOutline extends Outline { lastY = outline[i + 5]; } - const x = minX - this.#innerMargin, - y = minY - this.#innerMargin, - width = maxX - minX + 2 * this.#innerMargin, - height = maxY - minY + 2 * this.#innerMargin; - this.#bbox = { x, y, width, height, lastPoint: [lastPointX, lastPointY] }; + const bbox = this.#bbox; + bbox[0] = minX - this.#innerMargin; + bbox[1] = minY - this.#innerMargin; + bbox[2] = maxX - minX + 2 * this.#innerMargin; + bbox[3] = maxY - minY + 2 * this.#innerMargin; + this.lastPoint = [lastPointX, lastPointY]; } get box() { @@ -629,7 +625,7 @@ class FreeDrawOutline extends Outline { getNewOutline(thickness, innerMargin) { // Build the outline of the highlight to use as the focus outline. - const { x, y, width, height } = this.#bbox; + const [x, y, width, height] = this.#bbox; const [layerX, layerY, layerWidth, layerHeight] = this.#box; const sx = width * layerWidth; const sy = height * layerHeight; @@ -654,10 +650,6 @@ class FreeDrawOutline extends Outline { } return outliner.getOutlines(); } - - get mustRemoveSelfIntersections() { - return true; - } } export { FreeDrawOutline, FreeDrawOutliner }; diff --git a/src/display/editor/drawers/highlight.js b/src/display/editor/drawers/highlight.js index 2e01e5c274219..a6389284a2766 100644 --- a/src/display/editor/drawers/highlight.js +++ b/src/display/editor/drawers/highlight.js @@ -19,6 +19,8 @@ import { Outline } from "./outline.js"; class HighlightOutliner { #box; + #lastPoint; + #verticalEdges = []; #intervals = []; @@ -77,13 +79,13 @@ class HighlightOutliner { edge[2] = (y2 - shiftedMinY) / bboxHeight; } - this.#box = { - x: shiftedMinX, - y: shiftedMinY, - width: bboxWidth, - height: bboxHeight, - lastPoint, - }; + this.#box = new Float32Array([ + shiftedMinX, + shiftedMinY, + bboxWidth, + bboxHeight, + ]); + this.#lastPoint = lastPoint; } getOutlines() { @@ -173,7 +175,7 @@ class HighlightOutliner { } outline.push(lastPointX, lastPointY); } - return new HighlightOutline(outlines, this.#box); + return new HighlightOutline(outlines, this.#box, this.#lastPoint); } #binarySearch(y) { @@ -267,10 +269,11 @@ class HighlightOutline extends Outline { #outlines; - constructor(outlines, box) { + constructor(outlines, box, lastPoint) { super(); this.#outlines = outlines; this.#box = box; + this.lastPoint = lastPoint; } toSVGPath() { @@ -319,10 +322,6 @@ class HighlightOutline extends Outline { return this.#box; } - get classNamesForDrawing() { - return ["highlight"]; - } - get classNamesForOutlining() { return ["highlightOutline"]; } @@ -339,21 +338,9 @@ class FreeHighlightOutliner extends FreeDrawOutliner { isLTR ); } - - get classNamesForDrawing() { - return ["highlight", "free"]; - } } class FreeHighlightOutline extends FreeDrawOutline { - get classNamesForDrawing() { - return ["highlight", "free"]; - } - - get classNamesForOutlining() { - return ["highlightOutline", "free"]; - } - newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) { return new FreeHighlightOutliner( point, diff --git a/src/display/editor/drawers/outline.js b/src/display/editor/drawers/outline.js index d272526f3a553..2e05e61f7efd0 100644 --- a/src/display/editor/drawers/outline.js +++ b/src/display/editor/drawers/outline.js @@ -35,20 +35,22 @@ class Outline { unreachable("Abstract method `serialize` must be implemented."); } - // eslint-disable-next-line getter-return - get classNamesForDrawing() { - unreachable("Abstract getter `classNamesForDrawing` must be implemented."); - } - - // eslint-disable-next-line getter-return - get classNamesForOutlining() { - unreachable( - "Abstract getter `classNamesForOutlining` must be implemented." - ); + static _rescale(src, tx, ty, sx, sy, dest) { + dest ||= new Float32Array(src.length); + for (let i = 0, ii = src.length; i < ii; i += 2) { + dest[i] = tx + src[i] * sx; + dest[i + 1] = ty + src[i + 1] * sy; + } + return dest; } - get mustRemoveSelfIntersections() { - return false; + static _rescaleAndSwap(src, tx, ty, sx, sy, dest) { + dest ||= new Float32Array(src.length); + for (let i = 0, ii = src.length; i < ii; i += 2) { + dest[i] = tx + src[i + 1] * sx; + dest[i + 1] = ty + src[i] * sy; + } + return dest; } } diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index 345b6b0d43cc9..d7df763af48af 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -157,12 +157,7 @@ class HighlightEditor extends AnnotationEditor { /* borderWidth = */ 0.001 ); this.#highlightOutlines = outliner.getOutlines(); - ({ - x: this.x, - y: this.y, - width: this.width, - height: this.height, - } = this.#highlightOutlines.box); + [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box; const outlinerForOutline = new HighlightOutliner( this.#boxes, @@ -173,7 +168,7 @@ class HighlightEditor extends AnnotationEditor { this.#focusOutlines = outlinerForOutline.getOutlines(); // The last point is in the pages coordinate system. - const { lastPoint } = this.#focusOutlines.box; + const { lastPoint } = this.#focusOutlines; this.#lastPoint = [ (lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height, @@ -195,26 +190,44 @@ class HighlightEditor extends AnnotationEditor { this.#clipPathId = clipPathId; // We need to redraw the highlight because we change the coordinates to be // in the box coordinate system. - this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines); - this.#outlineId = this.parent.drawLayer.drawOutline(this.#focusOutlines); + this.parent.drawLayer.finalizeDraw(highlightId, { + bbox: highlightOutlines.box, + path: { + d: highlightOutlines.toSVGPath(), + }, + }); + this.#outlineId = this.parent.drawLayer.drawOutline( + { + rootClass: { + highlightOutline: true, + free: true, + }, + bbox: this.#focusOutlines.box, + path: { + d: this.#focusOutlines.toSVGPath(), + }, + }, + /* mustRemoveSelfIntersections = */ true + ); } else if (this.parent) { const angle = this.parent.viewport.rotation; - this.parent.drawLayer.updateLine(this.#id, highlightOutlines); - this.parent.drawLayer.updateBox( - this.#id, - HighlightEditor.#rotateBbox( + this.parent.drawLayer.updateProperties(this.#id, { + bbox: HighlightEditor.#rotateBbox( this.#highlightOutlines.box, (angle - this.rotation + 360) % 360 - ) - ); - - this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines); - this.parent.drawLayer.updateBox( - this.#outlineId, - HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle) - ); + ), + path: { + d: highlightOutlines.toSVGPath(), + }, + }); + this.parent.drawLayer.updateProperties(this.#outlineId, { + bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle), + path: { + d: this.#focusOutlines.toSVGPath(), + }, + }); } - const { x, y, width, height } = highlightOutlines.box; + const [x, y, width, height] = highlightOutlines.box; switch (this.rotation) { case 0: this.x = x; @@ -246,7 +259,7 @@ class HighlightEditor extends AnnotationEditor { } } - const { lastPoint } = this.#focusOutlines.box; + const { lastPoint } = this.#focusOutlines; this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height]; } @@ -324,10 +337,14 @@ class HighlightEditor extends AnnotationEditor { #updateColor(color) { const setColorAndOpacity = (col, opa) => { this.color = col; - this.parent?.drawLayer.changeColor(this.#id, col); - this.#colorPicker?.updateColor(col); this.#opacity = opa; - this.parent?.drawLayer.changeOpacity(this.#id, opa); + this.parent?.drawLayer.updateProperties(this.#id, { + root: { + fill: col, + "fill-opacity": opa, + }, + }); + this.#colorPicker?.updateColor(col); }; const savedColor = this.color; const savedOpacity = this.#opacity; @@ -503,46 +520,53 @@ class HighlightEditor extends AnnotationEditor { return; } ({ id: this.#id, clipPathId: this.#clipPathId } = parent.drawLayer.draw( - this.#highlightOutlines, - this.color, - this.#opacity + { + bbox: this.#highlightOutlines.box, + root: { + viewBox: "0 0 1 1", + fill: this.color, + "fill-opacity": this.#opacity, + }, + rootClass: { + highlight: true, + free: this.#isFreeHighlight, + }, + path: { + d: this.#highlightOutlines.toSVGPath(), + }, + }, + /* isPathUpdatable = */ false, + /* hasClip = */ true )); - this.#outlineId = parent.drawLayer.drawOutline(this.#focusOutlines); + this.#outlineId = parent.drawLayer.drawOutline( + { + rootClass: { + highlightOutline: true, + free: this.#isFreeHighlight, + }, + bbox: this.#focusOutlines.box, + path: { + d: this.#focusOutlines.toSVGPath(), + }, + }, + /* mustRemoveSelfIntersections = */ this.#isFreeHighlight + ); + if (this.#highlightDiv) { this.#highlightDiv.style.clipPath = this.#clipPathId; } } - static #rotateBbox({ x, y, width, height }, angle) { + static #rotateBbox([x, y, width, height], angle) { switch (angle) { case 90: - return { - x: 1 - y - height, - y: x, - width: height, - height: width, - }; + return [1 - y - height, x, height, width]; case 180: - return { - x: 1 - x - width, - y: 1 - y - height, - width, - height, - }; + return [1 - x - width, 1 - y - height, width, height]; case 270: - return { - x: y, - y: 1 - x - width, - width: height, - height: width, - }; + return [y, 1 - x - width, height, width]; } - return { - x, - y, - width, - height, - }; + return [x, y, width, height]; } /** @inheritdoc */ @@ -555,15 +579,23 @@ class HighlightEditor extends AnnotationEditor { box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle); } else { // An highlight annotation is always drawn horizontally. - box = HighlightEditor.#rotateBbox(this, angle); - } - drawLayer.rotate(this.#id, angle); - drawLayer.rotate(this.#outlineId, angle); - drawLayer.updateBox(this.#id, box); - drawLayer.updateBox( - this.#outlineId, - HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle) - ); + box = HighlightEditor.#rotateBbox( + [this.x, this.y, this.width, this.height], + angle + ); + } + drawLayer.updateProperties(this.#id, { + bbox: box, + root: { + "data-main-rotation": angle, + }, + }); + drawLayer.updateProperties(this.#outlineId, { + bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle), + root: { + "data-main-rotation": angle, + }, + }); } /** @inheritdoc */ @@ -600,13 +632,21 @@ class HighlightEditor extends AnnotationEditor { pointerover() { if (!this.isSelected) { - this.parent.drawLayer.addClass(this.#outlineId, "hovered"); + this.parent?.drawLayer.updateProperties(this.#outlineId, { + rootClass: { + hovered: true, + }, + }); } } pointerleave() { if (!this.isSelected) { - this.parent.drawLayer.removeClass(this.#outlineId, "hovered"); + this.parent?.drawLayer.updateProperties(this.#outlineId, { + rootClass: { + hovered: false, + }, + }); } } @@ -646,8 +686,12 @@ class HighlightEditor extends AnnotationEditor { if (!this.#outlineId) { return; } - this.parent?.drawLayer.removeClass(this.#outlineId, "hovered"); - this.parent?.drawLayer.addClass(this.#outlineId, "selected"); + this.parent?.drawLayer.updateProperties(this.#outlineId, { + rootClass: { + hovered: false, + selected: true, + }, + }); } /** @inheritdoc */ @@ -656,7 +700,11 @@ class HighlightEditor extends AnnotationEditor { if (!this.#outlineId) { return; } - this.parent?.drawLayer.removeClass(this.#outlineId, "selected"); + this.parent?.drawLayer.updateProperties(this.#outlineId, { + rootClass: { + selected: false, + }, + }); if (!this.#isFreeHighlight) { this.#setCaret(/* start = */ false); } @@ -671,8 +719,16 @@ class HighlightEditor extends AnnotationEditor { show(visible = this._isVisible) { super.show(visible); if (this.parent) { - this.parent.drawLayer.show(this.#id, visible); - this.parent.drawLayer.show(this.#outlineId, visible); + this.parent.drawLayer.updateProperties(this.#id, { + rootClass: { + hidden: !visible, + }, + }); + this.parent.drawLayer.updateProperties(this.#outlineId, { + rootClass: { + hidden: !visible, + }, + }); } } @@ -755,17 +811,34 @@ class HighlightEditor extends AnnotationEditor { ); ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } = parent.drawLayer.draw( - this._freeHighlight, - this._defaultColor, - this._defaultOpacity, - /* isPathUpdatable = */ true + { + bbox: [0, 0, 1, 1], + root: { + viewBox: "0 0 1 1", + fill: this._defaultColor, + "fill-opacity": this._defaultOpacity, + }, + rootClass: { + highlight: true, + free: true, + }, + path: { + d: this._freeHighlight.toSVGPath(), + }, + }, + /* isPathUpdatable = */ true, + /* hasClip = */ true )); } static #highlightMove(parent, event) { if (this._freeHighlight.add(event)) { // Redraw only if the point has been added. - parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight); + parent.drawLayer.updateProperties(this._freeHighlightId, { + path: { + d: this._freeHighlight.toSVGPath(), + }, + }); } } @@ -886,10 +959,23 @@ class HighlightEditor extends AnnotationEditor { outliner.add(point); } const { id, clipPathId } = parent.drawLayer.draw( - outliner, - editor.color, - editor._defaultOpacity, - /* isPathUpdatable = */ true + { + bbox: [0, 0, 1, 1], + root: { + viewBox: "0 0 1 1", + fill: editor.color, + "fill-opacity": editor._defaultOpacity, + }, + rootClass: { + highlight: true, + free: true, + }, + path: { + d: outliner.toSVGPath(), + }, + }, + /* isPathUpdatable = */ true, + /* hasClip = */ true ); editor.#createFreeOutlines({ highlightOutlines: outliner.getOutlines(), diff --git a/test/driver.js b/test/driver.js index c99b82744fe22..8991e50ab6771 100644 --- a/test/driver.js +++ b/test/driver.js @@ -381,8 +381,40 @@ class Rasterize { ); const drawLayer = new DrawLayer({ pageIndex: 0 }); drawLayer.setParent(div); - drawLayer.draw(outliner.getOutlines(), "orange", 0.4); - drawLayer.drawOutline(outlinerForOutline.getOutlines()); + const outlines = outliner.getOutlines(); + drawLayer.draw( + { + bbox: outlines.box, + root: { + viewBox: "0 0 1 1", + fill: "orange", + "fill-opacity": 0.4, + }, + rootClass: { + highlight: true, + free: false, + }, + path: { + d: outlines.toSVGPath(), + }, + }, + /* isPathUpdatable = */ false, + /* hasClip = */ true + ); + const focusLine = outlinerForOutline.getOutlines(); + drawLayer.drawOutline( + { + rootClass: { + highlightOutline: true, + free: false, + }, + bbox: focusLine.box, + path: { + d: focusLine.toSVGPath(), + }, + }, + /* mustRemoveSelfIntersections = */ false + ); svg.append(foreignObject); diff --git a/web/draw_layer_builder.css b/web/draw_layer_builder.css index 2adeebc811243..e4b6ae385adfb 100644 --- a/web/draw_layer_builder.css +++ b/web/draw_layer_builder.css @@ -17,24 +17,27 @@ svg { transform: none; - &[data-main-rotation="90"] { - mask, - use:not(.clip, .mask) { - transform: matrix(0, 1, -1, 0, 1, 0); + &.highlight, + &.highlightOutline { + &[data-main-rotation="90"] { + mask, + use:not(.clip, .mask) { + transform: matrix(0, 1, -1, 0, 1, 0); + } } - } - &[data-main-rotation="180"] { - mask, - use:not(.clip, .mask) { - transform: matrix(-1, 0, 0, -1, 1, 1); + &[data-main-rotation="180"] { + mask, + use:not(.clip, .mask) { + transform: matrix(-1, 0, 0, -1, 1, 1); + } } - } - &[data-main-rotation="270"] { - mask, - use:not(.clip, .mask) { - transform: matrix(0, -1, 1, 0, 0, 1); + &[data-main-rotation="270"] { + mask, + use:not(.clip, .mask) { + transform: matrix(0, -1, 1, 0, 0, 1); + } } } From d358d8520e7fe4d292f6e6546ac7c68a49b21863 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 21 Nov 2024 22:54:07 +0100 Subject: [PATCH 072/338] [Editor] Avoid to scroll when dragging an editor on a touch screen --- src/display/editor/editor.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 6320d7a592f80..c7c6f9d9e1617 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -1134,6 +1134,14 @@ class AnnotationEditor { capture: true, signal, }); + window.addEventListener( + "touchmove", + e => { + // Prevent the page from scrolling. + e.preventDefault(); + }, + { passive: false, signal } + ); } const pointerUpCallback = () => { From 462e483d0100c59f3e0122c322ebbab1f08a38a1 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 21 Nov 2024 23:25:15 +0100 Subject: [PATCH 073/338] [Editor] Avoid to use event.movementX/Y when resizing an editor Those propertie can have some non-expected values so use screenX/Y instead. --- src/display/editor/editor.js | 37 ++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index c7c6f9d9e1617..2ace781179e4e 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -52,6 +52,8 @@ class AnnotationEditor { #resizersDiv = null; + #lastPointerCoords = null; + #savedDimensions = null; #focusAC = null; @@ -736,6 +738,7 @@ class AnnotationEditor { const savedDraggable = this._isDraggable; this._isDraggable = false; + this.#lastPointerCoords = [event.screenX, event.screenY]; const ac = new AbortController(); const signal = this._uiManager.combinedSignal(ac); @@ -746,6 +749,14 @@ class AnnotationEditor { this.#resizerPointermove.bind(this, name), { passive: true, capture: true, signal } ); + window.addEventListener( + "touchmove", + e => { + // Prevent the page from scrolling. + e.preventDefault(); + }, + { passive: false, signal } + ); window.addEventListener("contextmenu", noContextMenu, { signal }); const savedX = this.x; const savedY = this.y; @@ -886,10 +897,23 @@ class AnnotationEditor { let ratioX = 1; let ratioY = 1; - let [deltaX, deltaY] = this.screenToPageTranslation( - event.movementX, - event.movementY - ); + let deltaX, deltaY; + + if (!event.fromKeyboard) { + // We can't use event.movementX/Y because they're not reliable: + // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX + // (it was buggy on a laptop with a touch screen). + const { screenX, screenY } = event; + const [lastScreenX, lastScreenY] = this.#lastPointerCoords; + [deltaX, deltaY] = this.screenToPageTranslation( + screenX - lastScreenX, + screenY - lastScreenY + ); + this.#lastPointerCoords[0] = screenX; + this.#lastPointerCoords[1] = screenY; + } else { + ({ deltaX, deltaY } = event); + } [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight); if (isDiagonal) { @@ -1567,8 +1591,9 @@ class AnnotationEditor { return; } this.#resizerPointermove(this.#focusedResizerName, { - movementX: x, - movementY: y, + deltaX: x, + deltaY: y, + fromKeyboard: true, }); } From d922ec5a1617d87f5cb984aa224b8d7b5cfcc5d5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 10 Nov 2024 16:00:38 +0100 Subject: [PATCH 074/338] Ensure that the response-origin of range requests match the full request (issue 12744) The following cases are excluded in the patch: - The Firefox PDF Viewer, since it has been fixed on the platform side already; please see https://bugzilla.mozilla.org/show_bug.cgi?id=1683940 - The `PDFNodeStream`-implementation, used in Node.js environments, since after recent changes that code only supports `file://`-URLs. Also updates the `PDFNetworkStreamFullRequestReader.read`-method to await the headers before returning any data, similar to the implementation in `src/display/fetch_stream.js`. *Note:* The relevant unit-tests are updated to await the `headersReady` Promise before dispatching range requests, since that's consistent with the actual usage in the `src/`-folder. --- src/display/fetch_stream.js | 12 ++++++++++++ src/display/network.js | 25 ++++++++++++++++++++++++- src/display/network_utils.js | 11 +++++++++++ src/interfaces.js | 4 ++++ test/unit/fetch_stream_spec.js | 7 +++---- test/unit/network_spec.js | 7 +++---- 6 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/display/fetch_stream.js b/src/display/fetch_stream.js index 1d025ce8bee68..24604e43b68df 100644 --- a/src/display/fetch_stream.js +++ b/src/display/fetch_stream.js @@ -18,6 +18,7 @@ import { createHeaders, createResponseStatusError, extractFilenameFromHeader, + getResponseOrigin, validateRangeRequestCapabilities, validateResponseStatus, } from "./network_utils.js"; @@ -52,6 +53,8 @@ function getArrayBuffer(val) { /** @implements {IPDFStream} */ class PDFFetchStream { + _responseOrigin = null; + constructor(source) { this.source = source; this.isHttp = /^https?:/i.test(source.url); @@ -121,6 +124,8 @@ class PDFFetchStreamReader { createFetchOptions(headers, this._withCredentials, this._abortController) ) .then(response => { + stream._responseOrigin = getResponseOrigin(response.url); + if (!validateResponseStatus(response.status)) { throw createResponseStatusError(response.status, url); } @@ -217,6 +222,13 @@ class PDFFetchStreamRangeReader { createFetchOptions(headers, this._withCredentials, this._abortController) ) .then(response => { + const responseOrigin = getResponseOrigin(response.url); + + if (responseOrigin !== stream._responseOrigin) { + throw new Error( + `Expected range response-origin "${responseOrigin}" to match "${stream._responseOrigin}".` + ); + } if (!validateResponseStatus(response.status)) { throw createResponseStatusError(response.status, url); } diff --git a/src/display/network.js b/src/display/network.js index 9bf7aec9610db..3beb3257bd546 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -18,6 +18,7 @@ import { createHeaders, createResponseStatusError, extractFilenameFromHeader, + getResponseOrigin, validateRangeRequestCapabilities, } from "./network_utils.js"; @@ -39,6 +40,8 @@ function getArrayBuffer(xhr) { } class NetworkManager { + _responseOrigin = null; + constructor({ url, httpHeaders, withCredentials }) { this.url = url; this.isHttp = /^https?:/i.test(url); @@ -273,6 +276,10 @@ class PDFNetworkStreamFullRequestReader { const fullRequestXhrId = this._fullRequestId; const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId); + this._manager._responseOrigin = getResponseOrigin( + fullRequestXhr.responseURL + ); + const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders(); const responseHeaders = new Headers( rawResponseHeaders @@ -370,6 +377,8 @@ class PDFNetworkStreamFullRequestReader { } async read() { + await this._headersCapability.promise; + if (this._storedError) { throw this._storedError; } @@ -405,6 +414,7 @@ class PDFNetworkStreamRangeRequestReader { this._manager = manager; const args = { + onHeadersReceived: this._onHeadersReceived.bind(this), onDone: this._onDone.bind(this), onError: this._onError.bind(this), onProgress: this._onProgress.bind(this), @@ -420,6 +430,19 @@ class PDFNetworkStreamRangeRequestReader { this.onClosed = null; } + _onHeadersReceived() { + const responseOrigin = getResponseOrigin( + this._manager.getRequestXhr(this._requestId)?.responseURL + ); + + if (responseOrigin !== this._manager._responseOrigin) { + this._storedError = new Error( + `Expected range response-origin "${responseOrigin}" to match "${this._manager._responseOrigin}".` + ); + this._onError(0); + } + } + _close() { this.onClosed?.(this); } @@ -441,7 +464,7 @@ class PDFNetworkStreamRangeRequestReader { } _onError(status) { - this._storedError = createResponseStatusError(status, this._url); + this._storedError ??= createResponseStatusError(status, this._url); for (const requestCapability of this._requests) { requestCapability.reject(this._storedError); } diff --git a/src/display/network_utils.js b/src/display/network_utils.js index 80f89588566c4..98ba103fdba43 100644 --- a/src/display/network_utils.js +++ b/src/display/network_utils.js @@ -36,6 +36,16 @@ function createHeaders(isHttp, httpHeaders) { return headers; } +function getResponseOrigin(url) { + try { + return new URL(url).origin; + } catch { + // `new URL()` will throw on incorrect data. + } + // Notably, null is distinct from "null" string (e.g. from file:-URLs). + return null; +} + function validateRangeRequestCapabilities({ responseHeaders, isHttp, @@ -116,6 +126,7 @@ export { createHeaders, createResponseStatusError, extractFilenameFromHeader, + getResponseOrigin, validateRangeRequestCapabilities, validateResponseStatus, }; diff --git a/src/interfaces.js b/src/interfaces.js index e0ecb54746c57..15493bdb819f2 100644 --- a/src/interfaces.js +++ b/src/interfaces.js @@ -30,6 +30,10 @@ class IPDFStream { /** * Gets a reader for the range of the PDF data. + * + * NOTE: Currently this method is only expected to be invoked *after* + * the `IPDFStreamReader.prototype.headersReady` promise has resolved. + * * @param {number} begin - the start offset of the data. * @param {number} end - the end offset of the data. * @returns {IPDFStreamRangeReader} diff --git a/test/unit/fetch_stream_spec.js b/test/unit/fetch_stream_spec.js index 75bda5d2caf4f..3fbe1efc10ef4 100644 --- a/test/unit/fetch_stream_spec.js +++ b/test/unit/fetch_stream_spec.js @@ -54,7 +54,7 @@ describe("fetch_stream", function () { const fullReader = stream.getFullReader(); let isStreamingSupported, isRangeSupported; - const promise = fullReader.headersReady.then(function () { + await fullReader.headersReady.then(function () { isStreamingSupported = fullReader.isStreamingSupported; isRangeSupported = fullReader.isRangeSupported; }); @@ -71,7 +71,7 @@ describe("fetch_stream", function () { }); }; - await Promise.all([read(), promise]); + await read(); expect(len).toEqual(pdfLength); expect(isStreamingSupported).toEqual(true); @@ -90,7 +90,7 @@ describe("fetch_stream", function () { const fullReader = stream.getFullReader(); let isStreamingSupported, isRangeSupported, fullReaderCancelled; - const promise = fullReader.headersReady.then(function () { + await fullReader.headersReady.then(function () { isStreamingSupported = fullReader.isStreamingSupported; isRangeSupported = fullReader.isRangeSupported; // We shall be able to close full reader without any issue. @@ -121,7 +121,6 @@ describe("fetch_stream", function () { await Promise.all([ read(rangeReader1, result1), read(rangeReader2, result2), - promise, ]); expect(isStreamingSupported).toEqual(true); diff --git a/test/unit/network_spec.js b/test/unit/network_spec.js index e8b4b9f4c8e1e..9a55b4771ff0e 100644 --- a/test/unit/network_spec.js +++ b/test/unit/network_spec.js @@ -31,7 +31,7 @@ describe("network", function () { const fullReader = stream.getFullReader(); let isStreamingSupported, isRangeSupported; - const promise = fullReader.headersReady.then(function () { + await fullReader.headersReady.then(function () { isStreamingSupported = fullReader.isStreamingSupported; isRangeSupported = fullReader.isRangeSupported; }); @@ -49,7 +49,7 @@ describe("network", function () { }); }; - await Promise.all([read(), promise]); + await read(); expect(len).toEqual(pdf1Length); expect(count).toEqual(1); @@ -72,7 +72,7 @@ describe("network", function () { const fullReader = stream.getFullReader(); let isStreamingSupported, isRangeSupported, fullReaderCancelled; - const promise = fullReader.headersReady.then(function () { + await fullReader.headersReady.then(function () { isStreamingSupported = fullReader.isStreamingSupported; isRangeSupported = fullReader.isRangeSupported; // we shall be able to close the full reader without issues @@ -107,7 +107,6 @@ describe("network", function () { await Promise.all([ read(range1Reader, result1), read(range2Reader, result2), - promise, ]); expect(result1.value).toEqual(rangeSize); From be40554ab90dea9e65c196372c55698fbbe74783 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sat, 23 Nov 2024 20:35:30 +0100 Subject: [PATCH 075/338] Rescale the image data when they're really too large It fixes #17190. --- src/core/core_utils.js | 4 ++ src/core/image_resizer.js | 101 +++++++++++++++++++++++++++++++- src/core/jbig2.js | 12 ++-- src/shared/image_utils.js | 9 +-- test/pdfs/issue17190.pdf.link | 1 + test/pdfs/issue17190_1.pdf.link | 1 + test/test_manifest.json | 18 ++++++ 7 files changed, 136 insertions(+), 10 deletions(-) create mode 100644 test/pdfs/issue17190.pdf.link create mode 100644 test/pdfs/issue17190_1.pdf.link diff --git a/src/core/core_utils.js b/src/core/core_utils.js index 2951bf0425bab..2049eb1391212 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -27,6 +27,8 @@ import { Dict, isName, Ref, RefSet } from "./primitives.js"; import { BaseStream } from "./base_stream.js"; const PDF_VERSION_REGEXP = /^[1-9]\.\d$/; +const MAX_INT_32 = 2 ** 31 - 1; +const MIN_INT_32 = -(2 ** 31); function getLookupTableFactory(initializer) { let lookup; @@ -713,6 +715,8 @@ export { lookupMatrix, lookupNormalRect, lookupRect, + MAX_INT_32, + MIN_INT_32, MissingDataException, numberToString, ParserEOFException, diff --git a/src/core/image_resizer.js b/src/core/image_resizer.js index 0f80c8f5981da..3268a742825ff 100644 --- a/src/core/image_resizer.js +++ b/src/core/image_resizer.js @@ -14,6 +14,8 @@ */ import { FeatureTest, ImageKind, shadow, warn } from "../shared/util.js"; +import { convertToRGBA } from "../shared/image_utils.js"; +import { MAX_INT_32 } from "./core_utils.js"; const MIN_IMAGE_DIM = 2048; @@ -172,6 +174,18 @@ class ImageResizer { } async _createImage() { + const { _imgData: imgData } = this; + const { width, height } = imgData; + + if (width * height * 4 > MAX_INT_32) { + // The resulting RGBA image is too large. + // We just rescale the data. + const result = this.#rescaleImageData(); + if (result) { + return result; + } + } + const data = this._encodeBMP(); let decoder, imagePromise; @@ -206,8 +220,6 @@ class ImageResizer { } const { MAX_AREA, MAX_DIM } = ImageResizer; - const { _imgData: imgData } = this; - const { width, height } = imgData; const minFactor = Math.max( width / MAX_DIM, height / MAX_DIM, @@ -268,6 +280,91 @@ class ImageResizer { return imgData; } + #rescaleImageData() { + const { _imgData: imgData } = this; + const { data, width, height, kind } = imgData; + const rgbaSize = width * height * 4; + // K is such as width * height * 4 / 2 ** K <= 2 ** 31 - 1 + const K = Math.ceil(Math.log2(rgbaSize / MAX_INT_32)); + const newWidth = width >> K; + const newHeight = height >> K; + let rgbaData; + let maxHeight = height; + + // We try to allocate the buffer with the maximum size but it can fail. + try { + rgbaData = new Uint8Array(rgbaSize); + } catch { + // n is such as 2 ** n - 1 > width * height * 4 + let n = Math.floor(Math.log2(rgbaSize + 1)); + + while (true) { + try { + rgbaData = new Uint8Array(2 ** n - 1); + break; + } catch { + n -= 1; + } + } + + maxHeight = Math.floor((2 ** n - 1) / (width * 4)); + const newSize = width * maxHeight * 4; + if (newSize < rgbaData.length) { + rgbaData = new Uint8Array(newSize); + } + } + + const src32 = new Uint32Array(rgbaData.buffer); + const dest32 = new Uint32Array(newWidth * newHeight); + + let srcPos = 0; + let newIndex = 0; + const step = Math.ceil(height / maxHeight); + const remainder = height % maxHeight === 0 ? height : height % maxHeight; + for (let k = 0; k < step; k++) { + const h = k < step - 1 ? maxHeight : remainder; + ({ srcPos } = convertToRGBA({ + kind, + src: data, + dest: src32, + width, + height: h, + inverseDecode: this._isMask, + srcPos, + })); + + for (let i = 0, ii = h >> K; i < ii; i++) { + const buf = src32.subarray((i << K) * width); + for (let j = 0; j < newWidth; j++) { + dest32[newIndex++] = buf[j << K]; + } + } + } + + if (ImageResizer.needsToBeResized(newWidth, newHeight)) { + imgData.data = dest32; + imgData.width = newWidth; + imgData.height = newHeight; + imgData.kind = ImageKind.RGBA_32BPP; + + return null; + } + + const canvas = new OffscreenCanvas(newWidth, newHeight); + const ctx = canvas.getContext("2d", { willReadFrequently: true }); + ctx.putImageData( + new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), + 0, + 0 + ); + imgData.data = null; + imgData.bitmap = canvas.transferToImageBitmap(); + imgData.width = newWidth; + imgData.height = newHeight; + + return imgData; + } + _encodeBMP() { const { width, height, kind } = this._imgData; let data = this._imgData.data; diff --git a/src/core/jbig2.js b/src/core/jbig2.js index cb50f0833a238..3775468278eda 100644 --- a/src/core/jbig2.js +++ b/src/core/jbig2.js @@ -14,7 +14,14 @@ */ import { BaseException, shadow } from "../shared/util.js"; -import { log2, readInt8, readUint16, readUint32 } from "./core_utils.js"; +import { + log2, + MAX_INT_32, + MIN_INT_32, + readInt8, + readUint16, + readUint32, +} from "./core_utils.js"; import { ArithmeticDecoder } from "./arithmetic_decoder.js"; import { CCITTFaxDecoder } from "./ccitt.js"; @@ -52,9 +59,6 @@ class DecodingContext { } } -const MAX_INT_32 = 2 ** 31 - 1; -const MIN_INT_32 = -(2 ** 31); - // Annex A. Arithmetic Integer Decoding Procedure // A.2 Procedure for decoding values function decodeInteger(contextCache, procedure, decoder) { diff --git a/src/shared/image_utils.js b/src/shared/image_utils.js index e2e5c04e63203..b88342ccbfc31 100644 --- a/src/shared/image_utils.js +++ b/src/shared/image_utils.js @@ -77,7 +77,8 @@ function convertRGBToRGBA({ height, }) { let i = 0; - const len32 = src.length >> 2; + const len = width * height * 3; + const len32 = len >> 2; const src32 = new Uint32Array(src.buffer, srcPos, len32); if (FeatureTest.isLittleEndian) { @@ -94,7 +95,7 @@ function convertRGBToRGBA({ dest[destPos + 3] = (s3 >>> 8) | 0xff000000; } - for (let j = i * 4, jj = src.length; j < jj; j += 3) { + for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) { dest[destPos++] = src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000; } @@ -110,13 +111,13 @@ function convertRGBToRGBA({ dest[destPos + 3] = (s3 << 8) | 0xff; } - for (let j = i * 4, jj = src.length; j < jj; j += 3) { + for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) { dest[destPos++] = (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff; } } - return { srcPos, destPos }; + return { srcPos: srcPos + len, destPos }; } function grayToRGBA(src, dest) { diff --git a/test/pdfs/issue17190.pdf.link b/test/pdfs/issue17190.pdf.link new file mode 100644 index 0000000000000..618accffb1023 --- /dev/null +++ b/test/pdfs/issue17190.pdf.link @@ -0,0 +1 @@ +https://github.com/mozilla/pdf.js/files/13180762/org_AVA89V01U0.Black.pdf diff --git a/test/pdfs/issue17190_1.pdf.link b/test/pdfs/issue17190_1.pdf.link new file mode 100644 index 0000000000000..506054eb5da31 --- /dev/null +++ b/test/pdfs/issue17190_1.pdf.link @@ -0,0 +1 @@ +https://github.com/mozilla/pdf.js/files/13670664/abc.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 508e2af7d2fb1..0b6dcc6cdc004 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10775,5 +10775,23 @@ "forms": true, "talos": false, "type": "eq" + }, + { + "id": "issue17190", + "file": "pdfs/issue17190.pdf", + "md5": "06e3ce6492dc0b5815a63965b5d7144c", + "rounds": 1, + "talos": false, + "type": "eq", + "link": true + }, + { + "id": "issue17190_1", + "file": "pdfs/issue17190_1.pdf", + "md5": "63bbc71a6c2cdec11bb20c5744232c47", + "rounds": 1, + "talos": false, + "type": "eq", + "link": true } ] From 2c83ec926edb167c33f69db7bf152f49cc630df9 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sat, 23 Nov 2024 21:32:24 +0100 Subject: [PATCH 076/338] Fix path traversal issue in createTemporaryNodeServer The test-only createTemporaryNodeServer helper featured a path traversal vulnerability. This enables attackers with network access to the device to read arbitrary files while unit tests are running that activate this test server. This patch fixes the issue by validation of paths. To test this vulnerability before the patch: 1. Run the test-only server: ``` node -e 'console.log(require("./test/unit/test_utils.js").createTemporaryNodeServer().port) ``` 2. From another terminal, send the following request (modify the port to the port reported in the previous step): ``` curl --path-as-is http://localhost:45755/../../package.json ``` Before the patch, the second step would traverse the directory, and return results from the root of the PDF.js repository, instead of files within test/pdfs/. With the patch, the server refuses the request with HTTP status 400. --- test/unit/test_utils.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index 5ca113989df68..db2fdc2fde90a 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -127,9 +127,23 @@ function createTemporaryNodeServer() { const fs = process.getBuiltinModule("fs"), http = process.getBuiltinModule("http"); + function isAcceptablePath(requestUrl) { + try { + // Reject unnormalized paths, to protect against path traversal attacks. + const url = new URL(requestUrl, "https://localhost/"); + return url.pathname === requestUrl; + } catch { + return false; + } + } // Create http server to serve pdf data for tests. const server = http .createServer((request, response) => { + if (!isAcceptablePath(request.url)) { + response.writeHead(400); + response.end("Invalid path"); + return; + } const filePath = process.cwd() + "/test/pdfs" + request.url; fs.promises.lstat(filePath).then( stat => { From e9f662eca4a0f61b12f4cd1ccfc1e6a7d721b208 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 22 Nov 2024 17:49:43 +0100 Subject: [PATCH 077/338] Convert the `getPdfManager` function to be asynchronous This is fairly old code, and by making the function `async` we can handle initialization errors "automatically" without the need for try-catch statements. --- src/core/worker.js | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/core/worker.js b/src/core/worker.js index e285d6491bcac..533d8d01286ae 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -189,7 +189,7 @@ class WorkerMessageHandler { return { numPages, fingerprints, htmlForXfa }; } - function getPdfManager({ + async function getPdfManager({ data, password, disableAutoFetch, @@ -211,32 +211,20 @@ class WorkerMessageHandler { password, rangeChunkSize, }; - const pdfManagerCapability = Promise.withResolvers(); - let newPdfManager; if (data) { - try { - pdfManagerArgs.source = data; + pdfManagerArgs.source = data; - newPdfManager = new LocalPdfManager(pdfManagerArgs); - pdfManagerCapability.resolve(newPdfManager); - } catch (ex) { - pdfManagerCapability.reject(ex); - } - return pdfManagerCapability.promise; + return new LocalPdfManager(pdfManagerArgs); } + const pdfStream = new PDFWorkerStream(handler), + fullRequest = pdfStream.getFullReader(); - let pdfStream, + const pdfManagerCapability = Promise.withResolvers(); + let newPdfManager, cachedChunks = [], loaded = 0; - try { - pdfStream = new PDFWorkerStream(handler); - } catch (ex) { - pdfManagerCapability.reject(ex); - return pdfManagerCapability.promise; - } - const fullRequest = pdfStream.getFullReader(); fullRequest.headersReady .then(function () { if (!fullRequest.isRangeSupported) { @@ -315,7 +303,7 @@ class WorkerMessageHandler { cancelXHRs = null; }); - cancelXHRs = function (reason) { + cancelXHRs = reason => { pdfStream.cancelAllRequests(reason); }; From a812f8bbd8782e01dc6367d55ec6486bea51f44c Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sun, 24 Nov 2024 23:37:16 +0100 Subject: [PATCH 078/338] Drop trailing whitespace from test/unit/api_spec.js test/unit/api_spec.js is the only JS file in the tree with trailing whitespace. Because `trim_trailing_whitespace = true` in .editorconfig, any editor supporting EditorConfig would trim whitespace when the file is changed, which results in test failures. This commit fixes the issue by trimming the trailing whitespace and adjusting the test expectations. --- test/unit/api_spec.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index d73d23225725f..9d8641f729333 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -2438,19 +2438,19 @@ describe("api", function () { const manifesto = ` The Mozilla Manifesto Addendum Pledge for a Healthy Internet - + The open, global internet is the most powerful communication and collaboration resource we have ever seen. It embodies some of our deepest hopes for human progress. It enables new opportunities for learning, building a sense of shared humanity, and solving the pressing problems facing people everywhere. - + Over the last decade we have seen this promise fulfilled in many ways. We have also seen the power of the internet used to magnify divisiveness, incite violence, promote hatred, and intentionally manipulate fact and reality. We have learned that we should more explicitly set out our aspirations for the human experience of the internet. We do so now. `.repeat(100); - expect(manifesto.length).toEqual(80500); + expect(manifesto.length).toEqual(79300); let loadingTask = getDocument(buildGetDocumentParams("empty.pdf")); let pdfDoc = await loadingTask.promise; From 51e15b2f5cd6c7edc277a935b9f4efd9d37e0ee1 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 26 Nov 2024 19:41:55 +0100 Subject: [PATCH 079/338] Fix the highlight integration test when highlighting with the keyboard These tests were failing with Puppeteer 23.9.0. --- test/integration/highlight_editor_spec.mjs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 13d30c31aae71..d99bbf8a5a160 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -697,7 +697,12 @@ describe("Highlight Editor", () => { await page.keyboard.press("ArrowRight"); } await page.keyboard.press("ArrowDown"); - await page.keyboard.press("ArrowDown"); + // Here and elsewhere, we add a small delay between press and release + // to make sure that a keyup event for Shift is triggered after + // selectionchange (it's why adding the delay on the last before + // releasing shift is enough). + // It works with a value of 10ms, but we use 100ms to be sure. + await page.keyboard.press("ArrowDown", { delay: 100 }); await page.keyboard.up("Shift"); await page.waitForSelector(sel); @@ -1066,7 +1071,7 @@ describe("Highlight Editor", () => { 15 ); await page.keyboard.down("Shift"); - await page.keyboard.press("ArrowDown"); + await page.keyboard.press("ArrowDown", { delay: 100 }); await page.keyboard.up("Shift"); await page.waitForSelector(getEditorSelector(0)); @@ -1715,7 +1720,7 @@ describe("Highlight Editor", () => { ); await page.keyboard.down("Shift"); for (let i = 0; i < 3; i++) { - await page.keyboard.press("ArrowDown"); + await page.keyboard.press("ArrowDown", { delay: 100 }); } await page.keyboard.up("Shift"); @@ -1730,7 +1735,7 @@ describe("Highlight Editor", () => { ); await page.keyboard.down("Shift"); for (let i = 0; i < 3; i++) { - await page.keyboard.press("ArrowDown"); + await page.keyboard.press("ArrowDown", { delay: 100 }); } await page.keyboard.up("Shift"); await page.waitForSelector(getEditorSelector(1)); From 53f4a763313ff81e65860329119a7e3c3b5a2b73 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 26 Nov 2024 15:59:10 +0100 Subject: [PATCH 080/338] [Editor] Disallow to have multiple pointers while dragging an editor It'll let the user dragging with two fingers. --- src/display/display_utils.js | 6 ++ src/display/editor/editor.js | 88 +++++++++++++++---------- test/integration/stamp_editor_spec.mjs | 38 +++++++++++ web/annotation_editor_layer_builder.css | 4 -- 4 files changed, 99 insertions(+), 37 deletions(-) diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 16fc7093e8238..3a0b653b7e793 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -411,6 +411,11 @@ function noContextMenu(e) { e.preventDefault(); } +function stopEvent(e) { + e.preventDefault(); + e.stopPropagation(); +} + // Deprecated API function -- display regardless of the `verbosity` setting. function deprecated(details) { // eslint-disable-next-line no-console @@ -657,5 +662,6 @@ export { RenderingCancelledException, setLayerDimensions, StatTimer, + stopEvent, SVG_NS, }; diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 2ace781179e4e..86dcdd78fdaf1 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -23,9 +23,9 @@ import { KeyboardManager, } from "./tools.js"; import { FeatureTest, shadow, unreachable } from "../../shared/util.js"; +import { noContextMenu, stopEvent } from "../display_utils.js"; import { AltText } from "./alt_text.js"; import { EditorToolbar } from "./toolbar.js"; -import { noContextMenu } from "../display_utils.js"; /** * @typedef {Object} AnnotationEditorParameters @@ -48,6 +48,10 @@ class AnnotationEditor { #disabled = false; + #dragPointerId = null; + + #dragPointerType = ""; + #keepAspectRatio = false; #resizersDiv = null; @@ -751,10 +755,7 @@ class AnnotationEditor { ); window.addEventListener( "touchmove", - e => { - // Prevent the page from scrolling. - e.preventDefault(); - }, + stopEvent /* Prevent the page from scrolling */, { passive: false, signal } ); window.addEventListener("contextmenu", noContextMenu, { signal }); @@ -1138,46 +1139,67 @@ class AnnotationEditor { const ac = new AbortController(); const signal = this._uiManager.combinedSignal(ac); + const opts = { capture: true, passive: false, signal }; + const cancelDrag = e => { + ac.abort(); + + this.#dragPointerId = null; + this.#hasBeenClicked = false; + if (!this._uiManager.endDragSession()) { + this.#selectOnPointerEvent(e); + } + }; if (isSelected) { - this.div.classList.add("moving"); this.#prevDragX = event.clientX; this.#prevDragY = event.clientY; - const pointerMoveCallback = e => { - const { clientX: x, clientY: y } = e; - const [tx, ty] = this.screenToPageTranslation( - x - this.#prevDragX, - y - this.#prevDragY - ); - this.#prevDragX = x; - this.#prevDragY = y; - this._uiManager.dragSelectedEditors(tx, ty); - }; - window.addEventListener("pointermove", pointerMoveCallback, { - passive: true, - capture: true, - signal, - }); + this.#dragPointerId = event.pointerId; + this.#dragPointerType = event.pointerType; + window.addEventListener( + "pointermove", + e => { + const { clientX: x, clientY: y, pointerId } = e; + if (pointerId !== this.#dragPointerId) { + stopEvent(e); + return; + } + const [tx, ty] = this.screenToPageTranslation( + x - this.#prevDragX, + y - this.#prevDragY + ); + this.#prevDragX = x; + this.#prevDragY = y; + this._uiManager.dragSelectedEditors(tx, ty); + }, + opts + ); window.addEventListener( "touchmove", + stopEvent /* Prevent the page from scrolling */, + opts + ); + window.addEventListener( + "pointerdown", + // If the user drags with one finger and then clicks with another. e => { - // Prevent the page from scrolling. - e.preventDefault(); + if (e.isPrimary && e.pointerType === this.#dragPointerType) { + // We cannot have two primaries at the same time. + // It's possible to be in this state with Firefox and Gnome when + // trying to drag with three fingers (see bug 1933716). + cancelDrag(e); + } + stopEvent(e); }, - { passive: false, signal } + opts ); } - const pointerUpCallback = () => { - ac.abort(); - if (isSelected) { - this.div.classList.remove("moving"); - } - - this.#hasBeenClicked = false; - if (!this._uiManager.endDragSession()) { - this.#selectOnPointerEvent(event); + const pointerUpCallback = e => { + if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) { + cancelDrag(e); + return; } + stopEvent(e); }; window.addEventListener("pointerup", pointerUpCallback, { signal }); // If the user is using alt+tab during the dragging session, the pointerup diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 224e6cf2ab5a5..d09d9c3c37a0a 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1492,4 +1492,42 @@ describe("Stamp Editor", () => { ); }); }); + + describe("Drag a stamp annotation and click on a touchscreen", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the annotation isn't unselected when an other finger taps on the screen", async () => { + // Run sequentially to avoid clipboard issues. + for (const [browserName, page] of pages) { + if (browserName === "chrome") { + // TODO: remove this check when puppeteer supports multiple touch + // events (it works in v23.9.1). + return; + } + await switchToStamp(page); + + await copyImage(page, "../images/firefox_logo.png", 0); + const editorSelector = getEditorSelector(0); + const stampRect = await getRect(page, editorSelector); + + await page.touchscreen.tap(stampRect.x + 10, stampRect.y + 10); + await waitForSelectedEditor(page, editorSelector); + + await page.touchscreen.touchStart(stampRect.x + 10, stampRect.y + 10); + await page.touchscreen.touchMove(stampRect.x + 20, stampRect.y + 20); + await page.touchscreen.tap(stampRect.x - 10, stampRect.y - 10); + await page.touchscreen.touchEnd(); + + await waitForSelectedEditor(page, editorSelector); + } + }); + }); }); diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index 9592b9a744f24..21671995bddae 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -170,10 +170,6 @@ cursor: move; } - &.moving { - touch-action: none; - } - &.selectedEditor { border: var(--focus-outline); outline: var(--focus-outline-around); From 04ea2cddd0677681c4382a3cfde75dd97081e6b3 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 20 Nov 2024 22:26:38 +0100 Subject: [PATCH 081/338] [Editor] Add a new base class to allow to add a drawing in the SVG layer. This patch makes a clear separation between the way to draw and the editing stuff. It adds a class DrawEditor which should be extended in order to create new drawing tools. As an example, the ink tool has been rewritten in order to use it. --- src/core/annotation.js | 52 +- src/display/draw_layer.js | 22 +- src/display/editor/annotation_editor_layer.js | 106 +- src/display/editor/draw.js | 852 +++++++++++ src/display/editor/drawers/inkdraw.js | 853 +++++++++++ src/display/editor/drawers/outline.js | 45 + src/display/editor/editor.js | 134 +- src/display/editor/ink.js | 1274 ++--------------- src/display/editor/tools.js | 29 + src/shared/util.js | 1 + test/driver.js | 32 +- test/integration/ink_editor_spec.mjs | 118 +- test/test_manifest.json | 212 ++- test/unit/annotation_spec.js | 135 +- web/annotation_editor_layer_builder.css | 25 +- web/draw_layer_builder.css | 21 + web/viewer.html | 2 +- 17 files changed, 2548 insertions(+), 1365 deletions(-) create mode 100644 src/display/editor/draw.js create mode 100644 src/display/editor/drawers/inkdraw.js diff --git a/src/core/annotation.js b/src/core/annotation.js index e970dc34cddd4..0e3d816877a52 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -4466,7 +4466,7 @@ class InkAnnotation extends MarkupAnnotation { ink.set("Subtype", Name.get("Ink")); ink.set("CreationDate", `D:${getModificationDate()}`); ink.set("Rect", rect); - ink.set("InkList", outlines?.points || paths.map(p => p.points)); + ink.set("InkList", outlines?.points || paths.points); ink.set("F", 4); ink.set("Rotate", rotation); @@ -4523,28 +4523,29 @@ class InkAnnotation extends MarkupAnnotation { appearanceBuffer.push("/R0 gs"); } - const buffer = []; - for (const { bezier } of paths) { - buffer.length = 0; - buffer.push( - `${numberToString(bezier[0])} ${numberToString(bezier[1])} m` - ); - if (bezier.length === 2) { - buffer.push( - `${numberToString(bezier[0])} ${numberToString(bezier[1])} l S` - ); - } else { - for (let i = 2, ii = bezier.length; i < ii; i += 6) { - const curve = bezier - .slice(i, i + 6) - .map(numberToString) - .join(" "); - buffer.push(`${curve} c`); + for (const outline of paths.lines) { + for (let i = 0, ii = outline.length; i < ii; i += 6) { + if (isNaN(outline[i])) { + appearanceBuffer.push( + `${numberToString(outline[i + 4])} ${numberToString( + outline[i + 5] + )} m` + ); + } else { + const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6); + appearanceBuffer.push( + [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c" + ); } - buffer.push("S"); } - appearanceBuffer.push(buffer.join("\n")); + if (outline.length === 6) { + appearanceBuffer.push( + `${numberToString(outline[4])} ${numberToString(outline[5])} l` + ); + } } + appearanceBuffer.push("S"); + const appearance = appearanceBuffer.join("\n"); const appearanceStreamDict = new Dict(xref); @@ -4587,18 +4588,17 @@ class InkAnnotation extends MarkupAnnotation { `${numberToString(outline[4])} ${numberToString(outline[5])} m` ); for (let i = 6, ii = outline.length; i < ii; i += 6) { - if (isNaN(outline[i]) || outline[i] === null) { + if (isNaN(outline[i])) { appearanceBuffer.push( `${numberToString(outline[i + 4])} ${numberToString( outline[i + 5] )} l` ); } else { - const curve = outline - .slice(i, i + 6) - .map(numberToString) - .join(" "); - appearanceBuffer.push(`${curve} c`); + const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6); + appearanceBuffer.push( + [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c" + ); } } appearanceBuffer.push("h f"); diff --git a/src/display/draw_layer.js b/src/display/draw_layer.js index d7592069814d8..23ba3e350b748 100644 --- a/src/display/draw_layer.js +++ b/src/display/draw_layer.js @@ -183,11 +183,18 @@ class DrawLayer { this.updateProperties(id, properties); } - updateProperties(elementOrId, { root, bbox, rootClass, path }) { + updateProperties(elementOrId, properties) { + if (!properties) { + return; + } + const { root, bbox, rootClass, path } = properties; const element = typeof elementOrId === "number" ? this.#mapping.get(elementOrId) : elementOrId; + if (!element) { + return; + } if (root) { this.#updateProperties(element, root); } @@ -207,6 +214,19 @@ class DrawLayer { } } + updateParent(id, layer) { + if (layer === this) { + return; + } + const root = this.#mapping.get(id); + if (!root) { + return; + } + layer.#parent.append(root); + this.#mapping.delete(id); + layer.#mapping.set(id, root); + } + remove(id) { this.#toUpdate.delete(id); if (this.#parent === null) { diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 1cce512288524..72ee6c57a5579 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -72,10 +72,10 @@ class AnnotationEditorLayer { #hadPointerDown = false; - #isCleaningUp = false; - #isDisabling = false; + #drawingAC = null; + #textLayer = null; #textSelectionAC = null; @@ -160,12 +160,9 @@ class AnnotationEditorLayer { this.disableClick(); return; case AnnotationEditorType.INK: - // We always want to have an ink editor ready to draw in. - this.addInkEditorIfNeeded(false); - this.disableTextSelection(); this.togglePointerEvents(true); - this.disableClick(); + this.enableClick(); break; case AnnotationEditorType.HIGHLIGHT: this.enableTextSelection(); @@ -193,30 +190,6 @@ class AnnotationEditorLayer { return textLayer === this.#textLayer?.div; } - addInkEditorIfNeeded(isCommitting) { - if (this.#uiManager.getMode() !== AnnotationEditorType.INK) { - // We don't want to add an ink editor if we're not in ink mode! - return; - } - - if (!isCommitting) { - // We're removing an editor but an empty one can already exist so in this - // case we don't need to create a new one. - for (const editor of this.#editors.values()) { - if (editor.isEmpty()) { - editor.setInBackground(); - return; - } - } - } - - const editor = this.createAndAddNewEditor( - { offsetX: 0, offsetY: 0 }, - /* isCentered = */ false - ); - editor.setInBackground(); - } - /** * Set the editing state. * @param {boolean} isEditing @@ -233,6 +206,10 @@ class AnnotationEditorLayer { this.#uiManager.addCommands(params); } + cleanUndoStack(type) { + this.#uiManager.cleanUndoStack(type); + } + toggleDrawing(enabled = false) { this.div.classList.toggle("drawing", !enabled); } @@ -482,10 +459,6 @@ class AnnotationEditorLayer { this.#uiManager.removeEditor(editor); editor.div.remove(); editor.isAttachedToDOM = false; - - if (!this.#isCleaningUp) { - this.addInkEditorIfNeeded(/* isCommitting = */ false); - } } /** @@ -766,6 +739,13 @@ class AnnotationEditorLayer { } this.#hadPointerDown = false; + if ( + this.#currentEditorType?.isDrawer && + this.#currentEditorType.supportMultipleDrawings + ) { + return; + } + if (!this.#allowClick) { this.#allowClick = true; return; @@ -808,10 +788,48 @@ class AnnotationEditorLayer { this.#hadPointerDown = true; + if (this.#currentEditorType?.isDrawer) { + this.startDrawingSession(event); + return; + } + const editor = this.#uiManager.getActive(); this.#allowClick = !editor || editor.isEmpty(); } + startDrawingSession(event) { + this.div.focus(); + if (this.#drawingAC) { + this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); + return; + } + + this.#uiManager.unselectAll(); + this.#drawingAC = new AbortController(); + const signal = this.#uiManager.combinedSignal(this.#drawingAC); + this.div.addEventListener( + "blur", + ({ relatedTarget }) => { + if (relatedTarget && !this.div.contains(relatedTarget)) { + this.commitOrRemove(); + } + }, + { signal } + ); + this.#uiManager.disableUserSelect(true); + this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); + } + + endDrawingSession() { + if (!this.#drawingAC) { + return; + } + this.#drawingAC.abort(); + this.#drawingAC = null; + this.#uiManager.disableUserSelect(false); + this.#currentEditorType.endDrawing(); + } + /** * * @param {AnnotationEditor} editor @@ -828,10 +846,26 @@ class AnnotationEditorLayer { return true; } + commitOrRemove() { + if (this.#drawingAC) { + this.endDrawingSession(); + return true; + } + return false; + } + + onScaleChanging() { + if (!this.#drawingAC) { + return; + } + this.#currentEditorType.onScaleChangingWhenDrawing(this); + } + /** * Destroy the main editor. */ destroy() { + this.commitOrRemove(); if (this.#uiManager.getActive()?.parent === this) { // We need to commit the current editor before destroying the layer. this.#uiManager.commitOrRemove(); @@ -858,13 +892,11 @@ class AnnotationEditorLayer { // When we're cleaning up, some editors are removed but we don't want // to add a new one which will induce an addition in this.#editors, hence // an infinite loop. - this.#isCleaningUp = true; for (const editor of this.#editors.values()) { if (editor.isEmpty()) { editor.remove(); } } - this.#isCleaningUp = false; } /** @@ -896,6 +928,7 @@ class AnnotationEditorLayer { const oldRotation = this.viewport.rotation; const rotation = viewport.rotation; + this.viewport = viewport; setLayerDimensions(this.div, { rotation }); if (oldRotation !== rotation) { @@ -903,7 +936,6 @@ class AnnotationEditorLayer { editor.rotate(rotation); } } - this.addInkEditorIfNeeded(/* isCommitting = */ false); } /** diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js new file mode 100644 index 0000000000000..f9cf60fa95005 --- /dev/null +++ b/src/display/editor/draw.js @@ -0,0 +1,852 @@ +/* Copyright 2022 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. + */ + +import { AnnotationEditorParamsType, unreachable } from "../../shared/util.js"; +import { noContextMenu, stopEvent } from "../display_utils.js"; +import { AnnotationEditor } from "./editor.js"; + +class DrawingOptions { + #svgProperties = Object.create(null); + + updateProperty(name, value) { + this[name] = value; + this.updateSVGProperty(name, value); + } + + updateProperties(properties) { + if (!properties) { + return; + } + for (const [name, value] of Object.entries(properties)) { + this.updateProperty(name, value); + } + } + + updateSVGProperty(name, value) { + this.#svgProperties[name] = value; + } + + toSVGProperties() { + const root = this.#svgProperties; + this.#svgProperties = Object.create(null); + return { root }; + } + + reset() { + this.#svgProperties = Object.create(null); + } + + updateAll(options = this) { + this.updateProperties(options); + } + + clone() { + unreachable("Not implemented"); + } +} + +/** + * Basic draw editor. + */ +class DrawingEditor extends AnnotationEditor { + #drawOutlines = null; + + #mustBeCommitted; + + _drawId = null; + + static _currentDrawId = -1; + + static _currentDraw = null; + + static _currentDrawingOptions = null; + + static _currentParent = null; + + static _INNER_MARGIN = 3; + + constructor(params) { + super(params); + this.#mustBeCommitted = params.mustBeCommitted || false; + + if (params.drawOutlines) { + this.#createDrawOutlines(params); + this.#addToDrawLayer(); + } + } + + #createDrawOutlines({ drawOutlines, drawId, drawingOptions }) { + this.#drawOutlines = drawOutlines; + this._drawingOptions ||= drawingOptions; + + if (drawId >= 0) { + this._drawId = drawId; + // We need to redraw the drawing because we changed the coordinates to be + // in the box coordinate system. + this.parent.drawLayer.finalizeDraw( + drawId, + drawOutlines.defaultProperties + ); + } else { + // We create a new drawing. + this._drawId = this.#createDrawing(drawOutlines, this.parent); + } + + this.#updateBbox(drawOutlines.box); + } + + #createDrawing(drawOutlines, parent) { + const { id } = parent.drawLayer.draw( + DrawingEditor._mergeSVGProperties( + this._drawingOptions.toSVGProperties(), + drawOutlines.defaultSVGProperties + ), + /* isPathUpdatable = */ false, + /* hasClip = */ false + ); + return id; + } + + static _mergeSVGProperties(p1, p2) { + const p1Keys = new Set(Object.keys(p1)); + + for (const [key, value] of Object.entries(p2)) { + if (p1Keys.has(key)) { + Object.assign(p1[key], value); + } else { + p1[key] = value; + } + } + return p1; + } + + /** + * @param {Object} options + * @return {DrawingOptions} the default options to use for a new editor. + */ + static getDefaultDrawingOptions(_options) { + unreachable("Not implemented"); + } + + /** + * @return {Map} a map between the + * parameter types and the name of the options. + */ + // eslint-disable-next-line getter-return + static get typesMap() { + unreachable("Not implemented"); + } + + static get isDrawer() { + return true; + } + + /** + * @returns {boolean} `true` if several drawings can be added to the + * annotation. + */ + static get supportMultipleDrawings() { + return false; + } + + /** @inheritdoc */ + static updateDefaultParams(type, value) { + const propertyName = this.typesMap.get(type); + if (propertyName) { + this._defaultDrawingOptions.updateProperty(propertyName, value); + } + if (this._currentParent) { + this._currentDraw.updateProperty(propertyName, value); + this._currentParent.drawLayer.updateProperties( + this._currentDrawId, + this._defaultDrawingOptions.toSVGProperties() + ); + } + } + + /** @inheritdoc */ + updateParams(type, value) { + const propertyName = this.constructor.typesMap.get(type); + if (propertyName) { + this._updateProperty(type, propertyName, value); + } + } + + /** @inheritdoc */ + static get defaultPropertiesToUpdate() { + const properties = []; + const options = this._defaultDrawingOptions; + for (const [type, name] of this.typesMap) { + properties.push([type, options[name]]); + } + return properties; + } + + /** @inheritdoc */ + get propertiesToUpdate() { + const properties = []; + const { _drawingOptions } = this; + for (const [type, name] of this.constructor.typesMap) { + properties.push([type, _drawingOptions[name]]); + } + return properties; + } + + /** + * Update a property and make this action undoable. + * @param {string} color + */ + _updateProperty(type, name, value) { + const options = this._drawingOptions; + const savedValue = options[name]; + const setter = val => { + options.updateProperty(name, val); + const bbox = this.#drawOutlines.updateProperty(name, val); + if (bbox) { + this.#updateBbox(bbox); + } + this.parent?.drawLayer.updateProperties( + this._drawId, + options.toSVGProperties() + ); + }; + this.addCommands({ + cmd: setter.bind(this, value), + undo: setter.bind(this, savedValue), + post: this._uiManager.updateUI.bind(this._uiManager, this), + mustExec: true, + type, + overwriteIfSameType: true, + keepUndo: true, + }); + } + + /** @inheritdoc */ + _onResizing() { + this.parent?.drawLayer.updateProperties( + this._drawId, + DrawingEditor._mergeSVGProperties( + this.#drawOutlines.getPathResizingSVGProperties( + this.#convertToDrawSpace() + ), + { + bbox: this.#rotateBox(), + } + ) + ); + } + + /** @inheritdoc */ + _onResized() { + this.parent?.drawLayer.updateProperties( + this._drawId, + DrawingEditor._mergeSVGProperties( + this.#drawOutlines.getPathResizedSVGProperties( + this.#convertToDrawSpace() + ), + { + bbox: this.#rotateBox(), + } + ) + ); + } + + /** @inheritdoc */ + _onTranslating(x, y) { + this.parent?.drawLayer.updateProperties(this._drawId, { + bbox: this.#rotateBox(x, y), + }); + } + + /** @inheritdoc */ + _onTranslated() { + this.parent?.drawLayer.updateProperties( + this._drawId, + DrawingEditor._mergeSVGProperties( + this.#drawOutlines.getPathTranslatedSVGProperties( + this.#convertToDrawSpace(), + this.parentDimensions + ), + { + bbox: this.#rotateBox(), + } + ) + ); + } + + _onStartDragging() { + this.parent?.drawLayer.updateProperties(this._drawId, { + rootClass: { + moving: true, + }, + }); + } + + _onStopDragging() { + this.parent?.drawLayer.updateProperties(this._drawId, { + rootClass: { + moving: false, + }, + }); + } + + /** @inheritdoc */ + commit() { + super.commit(); + + this.disableEditMode(); + this.disableEditing(); + } + + /** @inheritdoc */ + disableEditing() { + super.disableEditing(); + this.div.classList.toggle("disabled", true); + } + + /** @inheritdoc */ + enableEditing() { + super.enableEditing(); + this.div.classList.toggle("disabled", false); + } + + /** @inheritdoc */ + getBaseTranslation() { + // The editor itself doesn't have any CSS border (we're drawing one + // ourselves in using SVG). + return [0, 0]; + } + + /** @inheritdoc */ + get isResizable() { + return true; + } + + /** @inheritdoc */ + onceAdded() { + if (!this.annotationElementId) { + this.parent.addUndoableEditor(this); + } + this._isDraggable = true; + if (this.#mustBeCommitted) { + this.#mustBeCommitted = false; + this.commit(); + this.parent.setSelected(this); + this.div.focus(); + } + } + + /** @inheritdoc */ + remove() { + this.#cleanDrawLayer(); + super.remove(); + } + + /** @inheritdoc */ + rebuild() { + if (!this.parent) { + return; + } + super.rebuild(); + if (this.div === null) { + return; + } + + this.#addToDrawLayer(); + this.#updateBbox(this.#drawOutlines.box); + + if (!this.isAttachedToDOM) { + // At some point this editor was removed and we're rebuilding it, + // hence we must add it to its parent. + this.parent.add(this); + } + } + + setParent(parent) { + let mustBeSelected = false; + if (this.parent && !parent) { + this._uiManager.removeShouldRescale(this); + this.#cleanDrawLayer(); + } else if (parent) { + this._uiManager.addShouldRescale(this); + this.#addToDrawLayer(parent); + // If mustBeSelected is true it means that this editor was selected + // when its parent has been destroyed, hence we must select it again. + mustBeSelected = + !this.parent && this.div?.classList.contains("selectedEditor"); + } + super.setParent(parent); + if (mustBeSelected) { + // We select it after the parent has been set. + this.select(); + } + } + + #cleanDrawLayer() { + if (this._drawId === null || !this.parent) { + return; + } + this.parent.drawLayer.remove(this._drawId); + this._drawId = null; + + // All the SVG properties must be reset in order to make it possible to + // undo. + this._drawingOptions.reset(); + } + + #addToDrawLayer(parent = this.parent) { + if (this._drawId !== null && this.parent === parent) { + return; + } + if (this._drawId !== null) { + // The parent has changed, we need to move the drawing to the new parent. + this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer); + return; + } + this._drawingOptions.updateAll(); + this._drawId = this.#createDrawing(this.#drawOutlines, parent); + } + + #convertToParentSpace([x, y, width, height]) { + const { + parentDimensions: [pW, pH], + rotation, + } = this; + switch (rotation) { + case 90: + return [y, 1 - x, width * (pH / pW), height * (pW / pH)]; + case 180: + return [1 - x, 1 - y, width, height]; + case 270: + return [1 - y, x, width * (pH / pW), height * (pW / pH)]; + default: + return [x, y, width, height]; + } + } + + #convertToDrawSpace() { + const { + x, + y, + width, + height, + parentDimensions: [pW, pH], + rotation, + } = this; + switch (rotation) { + case 90: + return [1 - y, x, width * (pW / pH), height * (pH / pW)]; + case 180: + return [1 - x, 1 - y, width, height]; + case 270: + return [y, 1 - x, width * (pW / pH), height * (pH / pW)]; + default: + return [x, y, width, height]; + } + } + + #updateBbox(bbox) { + [this.x, this.y, this.width, this.height] = + this.#convertToParentSpace(bbox); + if (this.div) { + this.fixAndSetPosition(); + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(this.width * parentWidth, this.height * parentHeight); + } + this._onResized(); + } + + #rotateBox() { + // We've to deal with two rotations: the rotation of the annotation and the + // rotation of the parent page. + // When the page is rotated, all the layers are just rotated thanks to CSS + // but there is a notable exception: the canvas wrapper. + // The canvas wrapper is not rotated but the dimensions are (or not) swapped + // and the page is redrawn with the rotation applied to the canvas. + // The drawn layer is under the canvas wrapper and is not rotated so we have + // to "manually" rotate the coordinates. + // + // The coordinates (this.x, this.y) correspond to the top-left corner of + // the editor after it has been rotated in the page coordinate system. + + const { + x, + y, + width, + height, + rotation, + parentRotation, + parentDimensions: [pW, pH], + } = this; + switch ((rotation * 4 + parentRotation) / 90) { + case 1: + // 0 -> 90 + return [1 - y - height, x, height, width]; + case 2: + // 0 -> 180 + return [1 - x - width, 1 - y - height, width, height]; + case 3: + // 0 -> 270 + return [y, 1 - x - width, height, width]; + case 4: + // 90 -> 0 + return [ + x, + y - width * (pW / pH), + height * (pH / pW), + width * (pW / pH), + ]; + case 5: + // 90 -> 90 + return [1 - y, x, width * (pW / pH), height * (pH / pW)]; + case 6: + // 90 -> 180 + return [ + 1 - x - height * (pH / pW), + 1 - y, + height * (pH / pW), + width * (pW / pH), + ]; + case 7: + // 90 -> 270 + return [ + y - width * (pW / pH), + 1 - x - height * (pH / pW), + width * (pW / pH), + height * (pH / pW), + ]; + case 8: + // 180 -> 0 + return [x - width, y - height, width, height]; + case 9: + // 180 -> 90 + return [1 - y, x - width, height, width]; + case 10: + // 180 -> 180 + return [1 - x, 1 - y, width, height]; + case 11: + // 180 -> 270 + return [y - height, 1 - x, height, width]; + case 12: + // 270 -> 0 + return [ + x - height * (pH / pW), + y, + height * (pH / pW), + width * (pW / pH), + ]; + case 13: + // 270 -> 90 + return [ + 1 - y - width * (pW / pH), + x - height * (pH / pW), + width * (pW / pH), + height * (pH / pW), + ]; + case 14: + // 270 -> 180 + return [ + 1 - x, + 1 - y - width * (pW / pH), + height * (pH / pW), + width * (pW / pH), + ]; + case 15: + // 270 -> 270 + return [y, 1 - x, width * (pW / pH), height * (pH / pW)]; + default: + // 0 -> 0 + return [x, y, width, height]; + } + } + + /** @inheritdoc */ + rotate() { + if (!this.parent) { + return; + } + this.parent.drawLayer.updateProperties( + this._drawId, + DrawingEditor._mergeSVGProperties( + { + bbox: this.#rotateBox(), + }, + this.#drawOutlines.updateRotation( + (this.parentRotation - this.rotation + 360) % 360 + ) + ) + ); + } + + onScaleChanging() { + if (!this.parent) { + return; + } + this.#updateBbox( + this.#drawOutlines.updateParentDimensions( + this.parentDimensions, + this.parent.scale + ) + ); + } + + static onScaleChangingWhenDrawing() {} + + /** @inheritdoc */ + render() { + if (this.div) { + return this.div; + } + + const div = super.render(); + div.classList.add("draw"); + + const drawDiv = document.createElement("div"); + div.append(drawDiv); + drawDiv.setAttribute("aria-hidden", "true"); + drawDiv.className = "internal"; + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(this.width * parentWidth, this.height * parentHeight); + this._uiManager.addShouldRescale(this); + this.disableEditing(); + + return div; + } + + /** + * Create a new drawer instance. + * @param {number} x - The x coordinate of the event. + * @param {number} y - The y coordinate of the event. + * @param {number} parentWidth - The parent width. + * @param {number} parentHeight - The parent height. + * @param {number} rotation - The parent rotation. + */ + static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) { + unreachable("Not implemented"); + } + + static startDrawing( + parent, + uiManager, + _isLTR, + { target, offsetX: x, offsetY: y } + ) { + const { + viewport: { rotation }, + } = parent; + const { width: parentWidth, height: parentHeight } = + target.getBoundingClientRect(); + const ac = new AbortController(); + const signal = parent.combinedSignal(ac); + + window.addEventListener( + "pointerup", + e => { + ac.abort(); + parent.toggleDrawing(true); + this._endDraw(e); + }, + { signal } + ); + window.addEventListener( + "pointerdown", + stopEvent /* Avoid to have undesired clicks during drawing. */, + { + capture: true, + passive: false, + signal, + } + ); + window.addEventListener("contextmenu", noContextMenu, { signal }); + target.addEventListener("pointermove", this._drawMove.bind(this), { + signal, + }); + parent.toggleDrawing(); + + if (this._currentDraw) { + parent.drawLayer.updateProperties( + this._currentDrawId, + this._currentDraw.startNew(x, y, parentWidth, parentHeight, rotation) + ); + return; + } + + uiManager.updateUIForDefaultProperties(this); + + this._currentDraw = this.createDrawerInstance( + x, + y, + parentWidth, + parentHeight, + rotation + ); + this._currentDrawingOptions = this.getDefaultDrawingOptions(); + this._currentParent = parent; + + ({ id: this._currentDrawId } = parent.drawLayer.draw( + this._mergeSVGProperties( + this._currentDrawingOptions.toSVGProperties(), + this._currentDraw.defaultSVGProperties + ), + /* isPathUpdatable = */ true, + /* hasClip = */ false + )); + } + + static _drawMove({ offsetX, offsetY }) { + this._currentParent.drawLayer.updateProperties( + this._currentDrawId, + this._currentDraw.add(offsetX, offsetY) + ); + } + + static _endDraw({ offsetX, offsetY }) { + const parent = this._currentParent; + parent.drawLayer.updateProperties( + this._currentDrawId, + this._currentDraw.end(offsetX, offsetY) + ); + if (this.supportMultipleDrawings) { + const draw = this._currentDraw; + const drawId = this._currentDrawId; + const lastElement = draw.getLastElement(); + parent.addCommands({ + cmd: () => { + parent.drawLayer.updateProperties( + drawId, + draw.setLastElement(lastElement) + ); + }, + undo: () => { + parent.drawLayer.updateProperties(drawId, draw.removeLastElement()); + }, + mustExec: false, + type: AnnotationEditorParamsType.DRAW_STEP, + }); + + return; + } + + this.endDrawing(); + } + + static endDrawing() { + const parent = this._currentParent; + if (!parent) { + return; + } + parent.toggleDrawing(true); + parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP); + + if (!this._currentDraw.isEmpty()) { + const { + pageDimensions: [pageWidth, pageHeight], + scale, + } = parent; + + parent.createAndAddNewEditor({ offsetX: 0, offsetY: 0 }, false, { + drawId: this._currentDrawId, + drawOutlines: this._currentDraw.getOutlines( + pageWidth * scale, + pageHeight * scale, + scale, + this._INNER_MARGIN + ), + drawingOptions: this._currentDrawingOptions, + mustBeCommitted: true, + }); + } else { + parent.drawLayer.remove(this._currentDrawId); + } + this._currentDrawId = -1; + this._currentDraw = null; + this._currentDrawingOptions = null; + this._currentParent = null; + } + + /** + * Create the drawing options. + * @param {Object} _data + */ + createDrawingOptions(_data) {} + + /** + * Deserialize the drawing outlines. + * @param {number} pageX - The x coordinate of the page. + * @param {number} pageY - The y coordinate of the page. + * @param {number} pageWidth - The width of the page. + * @param {number} pageHeight - The height of the page. + * @param {number} innerWidth - The inner width. + * @param {Object} data - The data to deserialize. + * @returns {Object} The deserialized outlines. + */ + static deserializeDraw( + _pageX, + _pageY, + _pageWidth, + _pageHeight, + _innerWidth, + _data + ) { + unreachable("Not implemented"); + } + + /** @inheritdoc */ + static async deserialize(data, parent, uiManager) { + const { + rawDims: { pageWidth, pageHeight, pageX, pageY }, + } = parent.viewport; + const drawOutlines = this.deserializeDraw( + pageX, + pageY, + pageWidth, + pageHeight, + this._INNER_MARGIN, + data + ); + const editor = await super.deserialize(data, parent, uiManager); + editor.createDrawingOptions(data); + editor.#createDrawOutlines({ drawOutlines }); + editor.#addToDrawLayer(); + editor.onScaleChanging(); + editor.rotate(); + + return editor; + } + + serializeDraw(isForCopying) { + const [pageX, pageY] = this.pageTranslation; + const [pageWidth, pageHeight] = this.pageDimensions; + return this.#drawOutlines.serialize( + [pageX, pageY, pageWidth, pageHeight], + isForCopying + ); + } + + /** @inheritdoc */ + renderAnnotationElement(annotation) { + annotation.updateEdited({ + rect: this.getRect(0, 0), + }); + + return null; + } + + static canCreateNewEmptyEditor() { + return false; + } +} + +export { DrawingEditor, DrawingOptions }; diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js new file mode 100644 index 0000000000000..bcc7f2b574595 --- /dev/null +++ b/src/display/editor/drawers/inkdraw.js @@ -0,0 +1,853 @@ +/* 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. + */ + +import { Outline } from "./outline.js"; +import { Util } from "../../../shared/util.js"; + +class InkDrawOutliner { + // The last 3 points of the line. + #last = new Float64Array(6); + + #line; + + #lines; + + #rotation; + + #thickness; + + #points; + + #lastSVGPath = ""; + + #lastIndex = 0; + + #outlines = new InkDrawOutline(); + + #parentWidth; + + #parentHeight; + + constructor(x, y, parentWidth, parentHeight, rotation, thickness) { + this.#parentWidth = parentWidth; + this.#parentHeight = parentHeight; + this.#rotation = rotation; + this.#thickness = thickness; + + [x, y] = this.#normalizePoint(x, y); + + const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]); + this.#points = [x, y]; + this.#lines = [{ line, points: this.#points }]; + this.#last.set(line, 0); + } + + updateProperty(name, value) { + if (name === "stroke-width") { + this.#thickness = value; + } + } + + #normalizePoint(x, y) { + return Outline._normalizePoint( + x, + y, + this.#parentWidth, + this.#parentHeight, + this.#rotation + ); + } + + isEmpty() { + return !this.#lines || this.#lines.length === 0; + } + + add(x, y) { + // The point is in canvas coordinates which means that there is no rotation. + // It's the same as parent coordinates. + [x, y] = this.#normalizePoint(x, y); + const [x1, y1, x2, y2] = this.#last.subarray(2, 6); + const diffX = x - x2; + const diffY = y - y2; + const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY); + if (d <= 2) { + // The idea is to avoid garbage points around the last point. + // When the points are too close, it just leads to bad normal vectors and + // control points. + return null; + } + + this.#points.push(x, y); + + if (isNaN(x1)) { + // We've only one point. + this.#last.set([x2, y2, x, y], 2); + this.#line.push(NaN, NaN, NaN, NaN, x, y); + return { + path: { + d: this.toSVGPath(), + }, + }; + } + + if (isNaN(this.#last[0])) { + // We've only two points. + this.#line.splice(6, 6); + } + + this.#last.set([x1, y1, x2, y2, x, y], 0); + this.#line.push( + (x1 + 5 * x2) / 6, + (y1 + 5 * y2) / 6, + (5 * x2 + x) / 6, + (5 * y2 + y) / 6, + (x2 + x) / 2, + (y2 + y) / 2 + ); + + return { + path: { + d: this.toSVGPath(), + }, + }; + } + + end(x, y) { + const change = this.add(x, y); + if (change) { + return change; + } + if (this.#points.length === 2) { + // We've only one point. + return { + path: { + d: this.toSVGPath(), + }, + }; + } + return null; + } + + startNew(x, y, parentWidth, parentHeight, rotation) { + this.#parentWidth = parentWidth; + this.#parentHeight = parentHeight; + this.#rotation = rotation; + + [x, y] = this.#normalizePoint(x, y); + + const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]); + this.#points = [x, y]; + const last = this.#lines.at(-1); + if (last) { + last.line = new Float32Array(last.line); + last.points = new Float32Array(last.points); + } + this.#lines.push({ line, points: this.#points }); + this.#last.set(line, 0); + this.#lastIndex = 0; + this.toSVGPath(); + + return null; + } + + getLastElement() { + return this.#lines.at(-1); + } + + setLastElement(element) { + if (!this.#lines) { + return this.#outlines.setLastElement(element); + } + this.#lines.push(element); + this.#line = element.line; + this.#points = element.points; + this.#lastIndex = 0; + return { + path: { + d: this.toSVGPath(), + }, + }; + } + + removeLastElement() { + if (!this.#lines) { + return this.#outlines.removeLastElement(); + } + this.#lines.pop(); + this.#lastSVGPath = ""; + for (let i = 0, ii = this.#lines.length; i < ii; i++) { + const { line, points } = this.#lines[i]; + this.#line = line; + this.#points = points; + this.#lastIndex = 0; + this.toSVGPath(); + } + + return { + path: { + d: this.#lastSVGPath, + }, + }; + } + + toSVGPath() { + const firstX = Outline.svgRound(this.#line[4]); + const firstY = Outline.svgRound(this.#line[5]); + if (this.#points.length === 2) { + this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`; + return this.#lastSVGPath; + } + + if (this.#points.length <= 6) { + // We've 2 or 3 points. + const i = this.#lastSVGPath.lastIndexOf("M"); + this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`; + this.#lastIndex = 6; + } + + if (this.#points.length === 4) { + const secondX = Outline.svgRound(this.#line[10]); + const secondY = Outline.svgRound(this.#line[11]); + this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`; + this.#lastIndex = 12; + return this.#lastSVGPath; + } + + const buffer = []; + if (this.#lastIndex === 0) { + buffer.push(`M ${firstX} ${firstY}`); + this.#lastIndex = 6; + } + + for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) { + const [c1x, c1y, c2x, c2y, x, y] = this.#line + .slice(i, i + 6) + .map(Outline.svgRound); + buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`); + } + this.#lastSVGPath += buffer.join(" "); + this.#lastIndex = this.#line.length; + + return this.#lastSVGPath; + } + + getOutlines(parentWidth, parentHeight, scale, innerMargin) { + const last = this.#lines.at(-1); + last.line = new Float32Array(last.line); + last.points = new Float32Array(last.points); + + this.#outlines.build( + this.#lines, + parentWidth, + parentHeight, + scale, + this.#rotation, + this.#thickness, + innerMargin + ); + + // We reset everything: the drawing is done. + this.#last = null; + this.#line = null; + this.#lines = null; + this.#lastSVGPath = null; + + return this.#outlines; + } + + get defaultSVGProperties() { + return { + root: { + viewBox: "0 0 10000 10000", + }, + rootClass: { + draw: true, + }, + bbox: [0, 0, 1, 1], + }; + } +} + +class InkDrawOutline extends Outline { + #bbox; + + #currentRotation = 0; + + #innerMargin; + + #lines; + + #parentWidth; + + #parentHeight; + + #parentScale; + + #rotation; + + #thickness; + + build( + lines, + parentWidth, + parentHeight, + parentScale, + rotation, + thickness, + innerMargin + ) { + this.#parentWidth = parentWidth; + this.#parentHeight = parentHeight; + this.#parentScale = parentScale; + this.#rotation = rotation; + this.#thickness = thickness; + this.#innerMargin = innerMargin ?? 0; + this.#lines = lines; + + this.#computeBbox(); + } + + setLastElement(element) { + this.#lines.push(element); + return { + path: { + d: this.toSVGPath(), + }, + }; + } + + removeLastElement() { + this.#lines.pop(); + return { + path: { + d: this.toSVGPath(), + }, + }; + } + + toSVGPath() { + const buffer = []; + for (const { line } of this.#lines) { + buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`); + if (line.length === 6) { + buffer.push("Z"); + continue; + } + if (line.length === 12) { + buffer.push( + `L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}` + ); + continue; + } + for (let i = 6, ii = line.length; i < ii; i += 6) { + const [c1x, c1y, c2x, c2y, x, y] = line + .subarray(i, i + 6) + .map(Outline.svgRound); + buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`); + } + } + return buffer.join(""); + } + + serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) { + const serializedLines = []; + const serializedPoints = []; + const [x, y, width, height] = this.#getBBoxWithNoMargin(); + let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn; + + switch (this.#rotation) { + case 0: + rescaleFn = Outline._rescale; + tx = pageX; + ty = pageY + pageHeight; + sx = pageWidth; + sy = -pageHeight; + x1 = pageX + x * pageWidth; + y1 = pageY + (1 - y - height) * pageHeight; + x2 = pageX + (x + width) * pageWidth; + y2 = pageY + (1 - y) * pageHeight; + break; + case 90: + rescaleFn = Outline._rescaleAndSwap; + tx = pageX; + ty = pageY; + sx = pageWidth; + sy = pageHeight; + x1 = pageX + y * pageWidth; + y1 = pageY + x * pageHeight; + x2 = pageX + (y + height) * pageWidth; + y2 = pageY + (x + width) * pageHeight; + break; + case 180: + rescaleFn = Outline._rescale; + tx = pageX + pageWidth; + ty = pageY; + sx = -pageWidth; + sy = pageHeight; + x1 = pageX + (1 - x - width) * pageWidth; + y1 = pageY + y * pageHeight; + x2 = pageX + (1 - x) * pageWidth; + y2 = pageY + (y + height) * pageHeight; + break; + case 270: + rescaleFn = Outline._rescaleAndSwap; + tx = pageX + pageWidth; + ty = pageY + pageHeight; + sx = -pageWidth; + sy = -pageHeight; + x1 = pageX + (1 - y - height) * pageWidth; + y1 = pageY + (1 - x - width) * pageHeight; + x2 = pageX + (1 - y) * pageWidth; + y2 = pageY + (1 - x) * pageHeight; + break; + } + + for (const { line, points } of this.#lines) { + serializedLines.push( + rescaleFn( + line, + tx, + ty, + sx, + sy, + isForCopying ? new Array(line.length) : null + ) + ); + serializedPoints.push( + rescaleFn( + points, + tx, + ty, + sx, + sy, + isForCopying ? new Array(points.length) : null + ) + ); + } + + return { + lines: serializedLines, + points: serializedPoints, + rect: [x1, y1, x2, y2], + }; + } + + static deserialize( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + { paths: { lines, points }, rotation, thickness } + ) { + const newLines = []; + let tx, ty, sx, sy, rescaleFn; + switch (rotation) { + case 0: + rescaleFn = Outline._rescale; + tx = -pageX / pageWidth; + ty = pageY / pageHeight + 1; + sx = 1 / pageWidth; + sy = -1 / pageHeight; + break; + case 90: + rescaleFn = Outline._rescaleAndSwap; + tx = -pageY / pageHeight; + ty = -pageX / pageWidth; + sx = 1 / pageHeight; + sy = 1 / pageWidth; + break; + case 180: + rescaleFn = Outline._rescale; + tx = pageX / pageWidth + 1; + ty = -pageY / pageHeight; + sx = -1 / pageWidth; + sy = 1 / pageHeight; + break; + case 270: + rescaleFn = Outline._rescaleAndSwap; + tx = pageY / pageHeight + 1; + ty = pageX / pageWidth + 1; + sx = -1 / pageHeight; + sy = -1 / pageWidth; + break; + } + + for (let i = 0, ii = lines.length; i < ii; i++) { + newLines.push({ + line: rescaleFn( + lines[i].map(x => x ?? NaN), + tx, + ty, + sx, + sy + ), + points: rescaleFn( + points[i].map(x => x ?? NaN), + tx, + ty, + sx, + sy + ), + }); + } + + const outlines = new InkDrawOutline(); + outlines.build( + newLines, + pageWidth, + pageHeight, + 1, + rotation, + thickness, + innerMargin + ); + + return outlines; + } + + #getMarginComponents(thickness = this.#thickness) { + const margin = this.#innerMargin + (thickness / 2) * this.#parentScale; + return this.#rotation % 180 === 0 + ? [margin / this.#parentWidth, margin / this.#parentHeight] + : [margin / this.#parentHeight, margin / this.#parentWidth]; + } + + #getBBoxWithNoMargin() { + const [x, y, width, height] = this.#bbox; + const [marginX, marginY] = this.#getMarginComponents(0); + + return [ + x + marginX, + y + marginY, + width - 2 * marginX, + height - 2 * marginY, + ]; + } + + #computeBbox() { + const bbox = (this.#bbox = new Float32Array([ + Infinity, + Infinity, + -Infinity, + -Infinity, + ])); + + for (const { line } of this.#lines) { + if (line.length <= 12) { + // We've only one or two points => no bezier curve. + for (let i = 4, ii = line.length; i < ii; i += 6) { + const [x, y] = line.subarray(i, i + 2); + bbox[0] = Math.min(bbox[0], x); + bbox[1] = Math.min(bbox[1], y); + bbox[2] = Math.max(bbox[2], x); + bbox[3] = Math.max(bbox[3], y); + } + continue; + } + let lastX = line[4], + lastY = line[5]; + for (let i = 6, ii = line.length; i < ii; i += 6) { + const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6); + Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox); + lastX = x; + lastY = y; + } + } + + const [marginX, marginY] = this.#getMarginComponents(); + bbox[0] = Math.min(1, Math.max(0, bbox[0] - marginX)); + bbox[1] = Math.min(1, Math.max(0, bbox[1] - marginY)); + bbox[2] = Math.min(1, Math.max(0, bbox[2] + marginX)); + bbox[3] = Math.min(1, Math.max(0, bbox[3] + marginY)); + + bbox[2] -= bbox[0]; + bbox[3] -= bbox[1]; + } + + get box() { + return this.#bbox; + } + + updateProperty(name, value) { + if (name === "stroke-width") { + return this.#updateThickness(value); + } + return null; + } + + #updateThickness(thickness) { + const [oldMarginX, oldMarginY] = this.#getMarginComponents(); + this.#thickness = thickness; + const [newMarginX, newMarginY] = this.#getMarginComponents(); + const [diffMarginX, diffMarginY] = [ + newMarginX - oldMarginX, + newMarginY - oldMarginY, + ]; + const bbox = this.#bbox; + bbox[0] -= diffMarginX; + bbox[1] -= diffMarginY; + bbox[2] += 2 * diffMarginX; + bbox[3] += 2 * diffMarginY; + + return bbox; + } + + updateParentDimensions([width, height], scale) { + const [oldMarginX, oldMarginY] = this.#getMarginComponents(); + this.#parentWidth = width; + this.#parentHeight = height; + this.#parentScale = scale; + const [newMarginX, newMarginY] = this.#getMarginComponents(); + const diffMarginX = newMarginX - oldMarginX; + const diffMarginY = newMarginY - oldMarginY; + + const bbox = this.#bbox; + bbox[0] -= diffMarginX; + bbox[1] -= diffMarginY; + bbox[2] += 2 * diffMarginX; + bbox[3] += 2 * diffMarginY; + + return bbox; + } + + updateRotation(rotation) { + this.#currentRotation = rotation; + return { + path: { + transform: this.rotationTransform, + }, + }; + } + + get viewBox() { + return this.#bbox.map(Outline.svgRound).join(" "); + } + + get defaultProperties() { + const [x, y] = this.#bbox; + return { + root: { + viewBox: this.viewBox, + }, + path: { + "transform-origin": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`, + }, + }; + } + + get rotationTransform() { + const [, , width, height] = this.#bbox; + let a = 0, + b = 0, + c = 0, + d = 0, + e = 0, + f = 0; + switch (this.#currentRotation) { + case 90: + b = height / width; + c = -width / height; + e = width; + break; + case 180: + a = -1; + d = -1; + e = width; + f = height; + break; + case 270: + b = -height / width; + c = width / height; + f = height; + break; + default: + return ""; + } + return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`; + } + + getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) { + const [marginX, marginY] = this.#getMarginComponents(); + const [x, y, width, height] = this.#bbox; + + if ( + Math.abs(width - marginX) <= Outline.PRECISION || + Math.abs(height - marginY) <= Outline.PRECISION + ) { + // Center the path in the new bounding box. + const tx = newX + newWidth / 2 - (x + width / 2); + const ty = newY + newHeight / 2 - (y + height / 2); + return { + path: { + "transform-origin": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`, + transform: `${this.rotationTransform} translate(${tx} ${ty})`, + }, + }; + } + + // We compute the following transform: + // 1. Translate the path to the origin (-marginX, -marginY). + // 2. Scale the path to the new size: + // ((newWidth - 2*marginX) / (bbox.width - 2*marginX), + // (newHeight - 2*marginY) / (bbox.height - 2*marginY)). + // 3. Translate the path back to its original position + // (marginX, marginY). + // 4. Scale the inverse of bbox scaling: + // (bbox.width / newWidth, bbox.height / newHeight). + + const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX); + const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY); + const s2x = width / newWidth; + const s2y = height / newHeight; + + return { + path: { + "transform-origin": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`, + transform: + `${this.rotationTransform} scale(${s2x} ${s2y}) ` + + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`, + }, + }; + } + + getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) { + const [marginX, marginY] = this.#getMarginComponents(); + const bbox = this.#bbox; + const [x, y, width, height] = bbox; + + bbox[0] = newX; + bbox[1] = newY; + bbox[2] = newWidth; + bbox[3] = newHeight; + + if ( + Math.abs(width - marginX) <= Outline.PRECISION || + Math.abs(height - marginY) <= Outline.PRECISION + ) { + // Center the path in the new bounding box. + const tx = newX + newWidth / 2 - (x + width / 2); + const ty = newY + newHeight / 2 - (y + height / 2); + for (const { line, points } of this.#lines) { + Outline._translate(line, tx, ty, line); + Outline._translate(points, tx, ty, points); + } + return { + root: { + viewBox: this.viewBox, + }, + path: { + "transform-origin": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`, + transform: this.rotationTransform || null, + d: this.toSVGPath(), + }, + }; + } + + // We compute the following transform: + // 1. Translate the path to the origin (-(x + marginX), -(y + marginY)). + // 2. Scale the path to the new size: + // ((newWidth - 2*marginX) / (bbox.width - 2*marginX), + // (newHeight - 2*marginY) / (bbox.height - 2*marginY)). + // 3. Translate the path back to its new position + // (newX + marginX,y newY + marginY). + + const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX); + const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY); + const tx = -s1x * (x + marginX) + newX + marginX; + const ty = -s1y * (y + marginY) + newY + marginY; + + if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) { + for (const { line, points } of this.#lines) { + Outline._rescale(line, tx, ty, s1x, s1y, line); + Outline._rescale(points, tx, ty, s1x, s1y, points); + } + } + + return { + root: { + viewBox: this.viewBox, + }, + path: { + "transform-origin": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`, + transform: this.rotationTransform || null, + d: this.toSVGPath(), + }, + }; + } + + getPathTranslatedSVGProperties([newX, newY], parentDimensions) { + const [newParentWidth, newParentHeight] = parentDimensions; + const bbox = this.#bbox; + const tx = newX - bbox[0]; + const ty = newY - bbox[1]; + + if ( + this.#parentWidth === newParentWidth && + this.#parentHeight === newParentHeight + ) { + // We don't change the parent dimensions so it's a simple translation. + for (const { line, points } of this.#lines) { + Outline._translate(line, tx, ty, line); + Outline._translate(points, tx, ty, points); + } + } else { + const sx = this.#parentWidth / newParentWidth; + const sy = this.#parentHeight / newParentHeight; + this.#parentWidth = newParentWidth; + this.#parentHeight = newParentHeight; + + for (const { line, points } of this.#lines) { + Outline._rescale(line, tx, ty, sx, sy, line); + Outline._rescale(points, tx, ty, sx, sy, points); + } + bbox[2] *= sx; + bbox[3] *= sy; + } + bbox[0] = newX; + bbox[1] = newY; + + return { + root: { + viewBox: this.viewBox, + }, + path: { + d: this.toSVGPath(), + "transform-origin": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`, + }, + }; + } + + get defaultSVGProperties() { + const bbox = this.#bbox; + return { + root: { + viewBox: this.viewBox, + }, + rootClass: { + draw: true, + }, + path: { + d: this.toSVGPath(), + "transform-origin": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`, + transform: this.rotationTransform || null, + }, + bbox, + }; + } +} + +export { InkDrawOutline, InkDrawOutliner }; diff --git a/src/display/editor/drawers/outline.js b/src/display/editor/drawers/outline.js index 2e05e61f7efd0..27fceed76d567 100644 --- a/src/display/editor/drawers/outline.js +++ b/src/display/editor/drawers/outline.js @@ -16,6 +16,8 @@ import { unreachable } from "../../../shared/util.js"; class Outline { + static PRECISION = 1e-4; + /** * @returns {string} The SVG path of the outline. */ @@ -52,6 +54,49 @@ class Outline { } return dest; } + + static _translate(src, tx, ty, dest) { + dest ||= new Float32Array(src.length); + for (let i = 0, ii = src.length; i < ii; i += 2) { + dest[i] = tx + src[i]; + dest[i + 1] = ty + src[i + 1]; + } + return dest; + } + + static svgRound(x) { + // 0.1234 will be 1234 and this way we economize 2 bytes per number. + // Of course, it makes sense only when the viewBox is [0 0 10000 10000]. + // And it helps to avoid bugs like: + // https://bugzilla.mozilla.org/show_bug.cgi?id=1929340 + return Math.round(x * 10000); + } + + static _normalizePoint(x, y, parentWidth, parentHeight, rotation) { + switch (rotation) { + case 90: + return [1 - y / parentWidth, x / parentHeight]; + case 180: + return [1 - x / parentWidth, 1 - y / parentHeight]; + case 270: + return [y / parentWidth, 1 - x / parentHeight]; + default: + return [x / parentWidth, y / parentHeight]; + } + } + + static _normalizePagePoint(x, y, rotation) { + switch (rotation) { + case 90: + return [1 - y, x]; + case 180: + return [1 - x, 1 - y]; + case 270: + return [y, 1 - x]; + default: + return [x, y]; + } + } } export { Outline }; diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 86dcdd78fdaf1..095afec3f9f6c 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -192,6 +192,10 @@ class AnnotationEditor { return Object.getPrototypeOf(this).constructor._type; } + static get isDrawer() { + return false; + } + static get _defaultLineColor() { return shadow( this, @@ -441,6 +445,8 @@ class AnnotationEditor { this.x += x / width; this.y += y / height; + this._onTranslating(this.x, this.y); + this.fixAndSetPosition(); } @@ -469,7 +475,10 @@ class AnnotationEditor { drag(tx, ty) { this.#initialPosition ||= [this.x, this.y]; - const [parentWidth, parentHeight] = this.parentDimensions; + const { + div, + parentDimensions: [parentWidth, parentHeight], + } = this; this.x += tx / parentWidth; this.y += ty / parentHeight; if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) { @@ -496,11 +505,29 @@ class AnnotationEditor { x += bx; y += by; - this.div.style.left = `${(100 * x).toFixed(2)}%`; - this.div.style.top = `${(100 * y).toFixed(2)}%`; - this.div.scrollIntoView({ block: "nearest" }); + const { style } = div; + style.left = `${(100 * x).toFixed(2)}%`; + style.top = `${(100 * y).toFixed(2)}%`; + + this._onTranslating(x, y); + + div.scrollIntoView({ block: "nearest" }); } + /** + * Called when the editor is being translated. + * @param {number} x - in page coordinates. + * @param {number} y - in page coordinates. + */ + _onTranslating(x, y) {} + + /** + * Called when the editor has been translated. + * @param {number} x - in page coordinates. + * @param {number} y - in page coordinates. + */ + _onTranslated(x, y) {} + get _hasBeenMoved() { return ( !!this.#initialPosition && @@ -546,7 +573,10 @@ class AnnotationEditor { * @param {number} [rotation] - the rotation of the page. */ fixAndSetPosition(rotation = this.rotation) { - const [pageWidth, pageHeight] = this.pageDimensions; + const { + div: { style }, + pageDimensions: [pageWidth, pageHeight], + } = this; let { x, y, width, height } = this; width *= pageWidth; height *= pageHeight; @@ -581,7 +611,6 @@ class AnnotationEditor { x += bx; y += by; - const { style } = this.div; style.left = `${(100 * x).toFixed(2)}%`; style.top = `${(100 * y).toFixed(2)}%`; @@ -659,9 +688,10 @@ class AnnotationEditor { */ setDims(width, height) { const [parentWidth, parentHeight] = this.parentDimensions; - this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`; + const { style } = this.div; + style.width = `${((100 * width) / parentWidth).toFixed(2)}%`; if (!this.#keepAspectRatio) { - this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`; + style.height = `${((100 * height) / parentHeight).toFixed(2)}%`; } } @@ -679,9 +709,7 @@ class AnnotationEditor { style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`; } if (!this.#keepAspectRatio && !heightPercent) { - style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed( - 2 - )}%`; + style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(2)}%`; } } @@ -759,10 +787,12 @@ class AnnotationEditor { { passive: false, signal } ); window.addEventListener("contextmenu", noContextMenu, { signal }); - const savedX = this.x; - const savedY = this.y; - const savedWidth = this.width; - const savedHeight = this.height; + this.#savedDimensions = { + savedX: this.x, + savedY: this.y, + savedWidth: this.width, + savedHeight: this.height, + }; const savedParentCursor = this.parent.div.style.cursor; const savedCursor = this.div.style.cursor; this.div.style.cursor = this.parent.div.style.cursor = @@ -776,7 +806,7 @@ class AnnotationEditor { this.parent.div.style.cursor = savedParentCursor; this.div.style.cursor = savedCursor; - this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight); + this.#addResizeToUndoStack(); }; window.addEventListener("pointerup", pointerUpCallback, { signal }); // If the user switches to another window (with alt+tab), then we end the @@ -784,7 +814,29 @@ class AnnotationEditor { window.addEventListener("blur", pointerUpCallback, { signal }); } - #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) { + #resize(x, y, width, height) { + this.width = width; + this.height = height; + this.x = x; + this.y = y; + const [parentWidth, parentHeight] = this.parentDimensions; + this.setDims(parentWidth * width, parentHeight * height); + this.fixAndSetPosition(); + this._onResized(); + } + + /** + * Called when the editor has been resized. + */ + _onResized() {} + + #addResizeToUndoStack() { + if (!this.#savedDimensions) { + return; + } + const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions; + this.#savedDimensions = null; + const newX = this.x; const newY = this.y; const newWidth = this.width; @@ -799,24 +851,8 @@ class AnnotationEditor { } this.addCommands({ - cmd: () => { - this.width = newWidth; - this.height = newHeight; - this.x = newX; - this.y = newY; - const [parentWidth, parentHeight] = this.parentDimensions; - this.setDims(parentWidth * newWidth, parentHeight * newHeight); - this.fixAndSetPosition(); - }, - undo: () => { - this.width = savedWidth; - this.height = savedHeight; - this.x = savedX; - this.y = savedY; - const [parentWidth, parentHeight] = this.parentDimensions; - this.setDims(parentWidth * savedWidth, parentHeight * savedHeight); - this.fixAndSetPosition(); - }, + cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight), + undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight), mustExec: true, }); } @@ -960,8 +996,15 @@ class AnnotationEditor { this.setDims(parentWidth * newWidth, parentHeight * newHeight); this.fixAndSetPosition(); + + this._onResizing(); } + /** + * Called when the editor is being resized. + */ + _onResizing() {} + /** * Called when the alt text dialog is closed. */ @@ -1194,9 +1237,12 @@ class AnnotationEditor { ); } + this._onStartDragging(); + const pointerUpCallback = e => { if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) { cancelDrag(e); + this._onStopDragging(); return; } stopEvent(e); @@ -1208,6 +1254,10 @@ class AnnotationEditor { window.addEventListener("blur", pointerUpCallback, { signal }); } + _onStartDragging() {} + + _onStopDragging() {} + moveInDOM() { // Moving the editor in the DOM can be expensive, so we wait a bit before. // It's important to not block the UI (for example when changing the font @@ -1226,6 +1276,7 @@ class AnnotationEditor { this.x = x; this.y = y; this.fixAndSetPosition(); + this._onTranslated(); } /** @@ -1372,11 +1423,16 @@ class AnnotationEditor { } /** - * Rotate the editor. + * Rotate the editor when the page is rotated. * @param {number} angle */ rotate(_angle) {} + /** + * Resize the editor when the page is resized. + */ + resize() {} + /** * Serialize the editor when it has been deleted. * @returns {Object} @@ -1622,11 +1678,7 @@ class AnnotationEditor { #stopResizing() { this.#isResizerEnabledForKeyboard = false; this.#setResizerTabIndex(-1); - if (this.#savedDimensions) { - const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions; - this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight); - this.#savedDimensions = null; - } + this.#addResizeToUndoStack(); } _stopResizingWithKeyboard() { diff --git a/src/display/editor/ink.js b/src/display/editor/ink.js index c5d0def6c51bb..e1a10f0c1739a 100644 --- a/src/display/editor/ink.js +++ b/src/display/editor/ink.js @@ -16,1220 +16,206 @@ import { AnnotationEditorParamsType, AnnotationEditorType, - assert, + shadow, Util, } from "../../shared/util.js"; +import { DrawingEditor, DrawingOptions } from "./draw.js"; +import { InkDrawOutline, InkDrawOutliner } from "./drawers/inkdraw.js"; import { AnnotationEditor } from "./editor.js"; import { InkAnnotationElement } from "../annotation_layer.js"; -import { noContextMenu } from "../display_utils.js"; -import { opacityToHex } from "./tools.js"; -/** - * Basic draw editor in order to generate an Ink annotation. - */ -class InkEditor extends AnnotationEditor { - #baseHeight = 0; - - #baseWidth = 0; - - #canvasContextMenuTimeoutId = null; - - #currentPath2D = new Path2D(); - - #disableEditing = false; - - #drawingAC = null; - - #hasSomethingToDraw = false; - - #isCanvasInitialized = false; - - #observer = null; - - #pointerdownAC = null; - - #realWidth = 0; - - #realHeight = 0; - - #requestFrameCallback = null; - - static _defaultColor = null; +class InkDrawingOptions extends DrawingOptions { + #viewParameters; + + constructor(viewerParameters) { + super(); + this.#viewParameters = viewerParameters; + + super.updateProperties({ + fill: "none", + stroke: AnnotationEditor._defaultLineColor, + "stroke-opacity": 1, + "stroke-width": 1, + "stroke-linecap": "round", + "stroke-linejoin": "round", + "stroke-miterlimit": 10, + }); + } - static _defaultOpacity = 1; + updateSVGProperty(name, value) { + if (name === "stroke-width") { + value ??= this["stroke-width"]; + value *= this.#viewParameters.realScale; + } + super.updateSVGProperty(name, value); + } - static _defaultThickness = 1; + clone() { + const clone = new InkDrawingOptions(this.#viewParameters); + clone.updateAll(this); + return clone; + } +} +/** + * Basic draw editor in order to generate an Ink annotation. + */ +class InkEditor extends DrawingEditor { static _type = "ink"; static _editorType = AnnotationEditorType.INK; + static _defaultDrawingOptions = null; + constructor(params) { super({ ...params, name: "inkEditor" }); - this.color = params.color || null; - this.thickness = params.thickness || null; - this.opacity = params.opacity || null; - this.paths = []; - this.bezierPath2D = []; - this.allRawPaths = []; - this.currentPath = []; - this.scaleFactor = 1; - this.translationX = this.translationY = 0; - this.x = 0; - this.y = 0; this._willKeepAspectRatio = true; } /** @inheritdoc */ static initialize(l10n, uiManager) { AnnotationEditor.initialize(l10n, uiManager); + this._defaultDrawingOptions = new InkDrawingOptions( + uiManager.viewParameters + ); } /** @inheritdoc */ - static updateDefaultParams(type, value) { - switch (type) { - case AnnotationEditorParamsType.INK_THICKNESS: - InkEditor._defaultThickness = value; - break; - case AnnotationEditorParamsType.INK_COLOR: - InkEditor._defaultColor = value; - break; - case AnnotationEditorParamsType.INK_OPACITY: - InkEditor._defaultOpacity = value / 100; - break; - } - } - - /** @inheritdoc */ - updateParams(type, value) { - switch (type) { - case AnnotationEditorParamsType.INK_THICKNESS: - this.#updateThickness(value); - break; - case AnnotationEditorParamsType.INK_COLOR: - this.#updateColor(value); - break; - case AnnotationEditorParamsType.INK_OPACITY: - this.#updateOpacity(value); - break; - } - } - - /** @inheritdoc */ - static get defaultPropertiesToUpdate() { - return [ - [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], - [ - AnnotationEditorParamsType.INK_COLOR, - InkEditor._defaultColor || AnnotationEditor._defaultLineColor, - ], - [ - AnnotationEditorParamsType.INK_OPACITY, - Math.round(InkEditor._defaultOpacity * 100), - ], - ]; - } - - /** @inheritdoc */ - get propertiesToUpdate() { - return [ - [ - AnnotationEditorParamsType.INK_THICKNESS, - this.thickness || InkEditor._defaultThickness, - ], - [ - AnnotationEditorParamsType.INK_COLOR, - this.color || - InkEditor._defaultColor || - AnnotationEditor._defaultLineColor, - ], - [ - AnnotationEditorParamsType.INK_OPACITY, - Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)), - ], - ]; - } - - /** - * Update the thickness and make this action undoable. - * @param {number} thickness - */ - #updateThickness(thickness) { - const setThickness = th => { - this.thickness = th; - this.#fitToContent(); - }; - const savedThickness = this.thickness; - this.addCommands({ - cmd: setThickness.bind(this, thickness), - undo: setThickness.bind(this, savedThickness), - post: this._uiManager.updateUI.bind(this._uiManager, this), - mustExec: true, - type: AnnotationEditorParamsType.INK_THICKNESS, - overwriteIfSameType: true, - keepUndo: true, - }); - } - - /** - * Update the color and make this action undoable. - * @param {string} color - */ - #updateColor(color) { - const setColor = col => { - this.color = col; - this.#redraw(); - }; - const savedColor = this.color; - this.addCommands({ - cmd: setColor.bind(this, color), - undo: setColor.bind(this, savedColor), - post: this._uiManager.updateUI.bind(this._uiManager, this), - mustExec: true, - type: AnnotationEditorParamsType.INK_COLOR, - overwriteIfSameType: true, - keepUndo: true, - }); - } - - /** - * Update the opacity and make this action undoable. - * @param {number} opacity - */ - #updateOpacity(opacity) { - const setOpacity = op => { - this.opacity = op; - this.#redraw(); - }; - opacity /= 100; - const savedOpacity = this.opacity; - this.addCommands({ - cmd: setOpacity.bind(this, opacity), - undo: setOpacity.bind(this, savedOpacity), - post: this._uiManager.updateUI.bind(this._uiManager, this), - mustExec: true, - type: AnnotationEditorParamsType.INK_OPACITY, - overwriteIfSameType: true, - keepUndo: true, - }); - } - - /** @inheritdoc */ - rebuild() { - if (!this.parent) { - return; - } - super.rebuild(); - if (this.div === null) { - return; - } - - if (!this.canvas) { - this.#createCanvas(); - this.#createObserver(); - } - - if (!this.isAttachedToDOM) { - // At some point this editor was removed and we're rebuilding it, - // hence we must add it to its parent. - this.parent.add(this); - this.#setCanvasDims(); - } - this.#fitToContent(); - } - - /** @inheritdoc */ - remove() { - if (this.canvas === null) { - return; - } - - if (!this.isEmpty()) { - this.commit(); - } - - // Destroy the canvas. - this.canvas.width = this.canvas.height = 0; - this.canvas.remove(); - this.canvas = null; - - if (this.#canvasContextMenuTimeoutId) { - clearTimeout(this.#canvasContextMenuTimeoutId); - this.#canvasContextMenuTimeoutId = null; - } - - this.#observer?.disconnect(); - this.#observer = null; - - super.remove(); - } - - setParent(parent) { - if (!this.parent && parent) { - // We've a parent hence the rescale will be handled thanks to the - // ResizeObserver. - this._uiManager.removeShouldRescale(this); - } else if (this.parent && parent === null) { - // The editor is removed from the DOM, hence we handle the rescale thanks - // to the onScaleChanging callback. - // This way, it'll be saved/printed correctly. - this._uiManager.addShouldRescale(this); - } - super.setParent(parent); - } - - onScaleChanging() { - const [parentWidth, parentHeight] = this.parentDimensions; - const width = this.width * parentWidth; - const height = this.height * parentHeight; - this.setDimensions(width, height); - } - - /** @inheritdoc */ - enableEditMode() { - if (this.#disableEditing || this.canvas === null) { - return; - } - - super.enableEditMode(); - this._isDraggable = false; - this.#addPointerdownListener(); - } - - /** @inheritdoc */ - disableEditMode() { - if (!this.isInEditMode() || this.canvas === null) { - return; - } - - super.disableEditMode(); - this._isDraggable = !this.isEmpty(); - this.div.classList.remove("editing"); - this.#removePointerdownListener(); + static getDefaultDrawingOptions(options) { + const clone = this._defaultDrawingOptions.clone(); + clone.updateProperties(options); + return clone; } /** @inheritdoc */ - onceAdded() { - this._isDraggable = !this.isEmpty(); + static get supportMultipleDrawings() { + return true; } /** @inheritdoc */ - isEmpty() { - return ( - this.paths.length === 0 || - (this.paths.length === 1 && this.paths[0].length === 0) + static get typesMap() { + return shadow( + this, + "typesMap", + new Map([ + [AnnotationEditorParamsType.INK_THICKNESS, "stroke-width"], + [AnnotationEditorParamsType.INK_COLOR, "stroke"], + [AnnotationEditorParamsType.INK_OPACITY, "stroke-opacity"], + ]) ); } - #getInitialBBox() { - const { - parentRotation, - parentDimensions: [width, height], - } = this; - switch (parentRotation) { - case 90: - return [0, height, height, width]; - case 180: - return [width, height, width, height]; - case 270: - return [width, 0, height, width]; - default: - return [0, 0, width, height]; - } - } - - /** - * Set line styles. - */ - #setStroke() { - const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this; - ctx.lineWidth = (thickness * parentScale) / scaleFactor; - ctx.lineCap = "round"; - ctx.lineJoin = "round"; - ctx.miterLimit = 10; - ctx.strokeStyle = `${color}${opacityToHex(opacity)}`; - } - - /** - * Start to draw on the canvas. - * @param {number} x - * @param {number} y - */ - #startDrawing(x, y) { - this.canvas.addEventListener("contextmenu", noContextMenu, { - signal: this._uiManager._signal, - }); - this.#removePointerdownListener(); - - if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { - assert( - !this.#drawingAC, - "No `this.#drawingAC` AbortController should exist." - ); - } - this.#drawingAC = new AbortController(); - const signal = this._uiManager.combinedSignal(this.#drawingAC); - - this.canvas.addEventListener( - "pointerleave", - this.canvasPointerleave.bind(this), - { signal } - ); - this.canvas.addEventListener( - "pointermove", - this.canvasPointermove.bind(this), - { signal } - ); - this.canvas.addEventListener("pointerup", this.canvasPointerup.bind(this), { - signal, - }); - - this.isEditing = true; - if (!this.#isCanvasInitialized) { - this.#isCanvasInitialized = true; - this.#setCanvasDims(); - this.thickness ||= InkEditor._defaultThickness; - this.color ||= - InkEditor._defaultColor || AnnotationEditor._defaultLineColor; - this.opacity ??= InkEditor._defaultOpacity; - } - this.currentPath.push([x, y]); - this.#hasSomethingToDraw = false; - this.#setStroke(); - - this.#requestFrameCallback = () => { - this.#drawPoints(); - if (this.#requestFrameCallback) { - window.requestAnimationFrame(this.#requestFrameCallback); - } - }; - window.requestAnimationFrame(this.#requestFrameCallback); - } - - /** - * Draw on the canvas. - * @param {number} x - * @param {number} y - */ - #draw(x, y) { - const [lastX, lastY] = this.currentPath.at(-1); - if (this.currentPath.length > 1 && x === lastX && y === lastY) { - return; - } - const currentPath = this.currentPath; - let path2D = this.#currentPath2D; - currentPath.push([x, y]); - this.#hasSomethingToDraw = true; - - if (currentPath.length <= 2) { - path2D.moveTo(...currentPath[0]); - path2D.lineTo(x, y); - return; - } - - if (currentPath.length === 3) { - this.#currentPath2D = path2D = new Path2D(); - path2D.moveTo(...currentPath[0]); - } - - this.#makeBezierCurve( - path2D, - ...currentPath.at(-3), - ...currentPath.at(-2), + /** @inheritdoc */ + static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) { + return new InkDrawOutliner( x, - y - ); - } - - #endPath() { - if (this.currentPath.length === 0) { - return; - } - const lastPoint = this.currentPath.at(-1); - this.#currentPath2D.lineTo(...lastPoint); - } - - /** - * Stop to draw on the canvas. - * @param {number} x - * @param {number} y - */ - #stopDrawing(x, y) { - this.#requestFrameCallback = null; - - x = Math.min(Math.max(x, 0), this.canvas.width); - y = Math.min(Math.max(y, 0), this.canvas.height); - - this.#draw(x, y); - this.#endPath(); - - // Interpolate the path entered by the user with some - // Bezier's curves in order to have a smoother path and - // to reduce the data size used to draw it in the PDF. - let bezier; - if (this.currentPath.length !== 1) { - bezier = this.#generateBezierPoints(); - } else { - // We have only one point finally. - const xy = [x, y]; - bezier = [[xy, xy.slice(), xy.slice(), xy]]; - } - const path2D = this.#currentPath2D; - const currentPath = this.currentPath; - this.currentPath = []; - this.#currentPath2D = new Path2D(); - - const cmd = () => { - this.allRawPaths.push(currentPath); - this.paths.push(bezier); - this.bezierPath2D.push(path2D); - this._uiManager.rebuild(this); - }; - - const undo = () => { - this.allRawPaths.pop(); - this.paths.pop(); - this.bezierPath2D.pop(); - if (this.paths.length === 0) { - this.remove(); - } else { - if (!this.canvas) { - this.#createCanvas(); - this.#createObserver(); - } - this.#fitToContent(); - } - }; - - this.addCommands({ cmd, undo, mustExec: true }); - } - - #drawPoints() { - if (!this.#hasSomethingToDraw) { - return; - } - this.#hasSomethingToDraw = false; - - const thickness = Math.ceil(this.thickness * this.parentScale); - const lastPoints = this.currentPath.slice(-3); - const x = lastPoints.map(xy => xy[0]); - const y = lastPoints.map(xy => xy[1]); - const xMin = Math.min(...x) - thickness; - const xMax = Math.max(...x) + thickness; - const yMin = Math.min(...y) - thickness; - const yMax = Math.max(...y) + thickness; - - const { ctx } = this; - ctx.save(); - - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - // In Chrome, the clip() method doesn't work as expected. - ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin); - ctx.beginPath(); - ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin); - ctx.clip(); - } else { - ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - } - - for (const path of this.bezierPath2D) { - ctx.stroke(path); - } - ctx.stroke(this.#currentPath2D); - - ctx.restore(); - } - - #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) { - const prevX = (x0 + x1) / 2; - const prevY = (y0 + y1) / 2; - const x3 = (x1 + x2) / 2; - const y3 = (y1 + y2) / 2; - - path2D.bezierCurveTo( - prevX + (2 * (x1 - prevX)) / 3, - prevY + (2 * (y1 - prevY)) / 3, - x3 + (2 * (x1 - x3)) / 3, - y3 + (2 * (y1 - y3)) / 3, - x3, - y3 + y, + parentWidth, + parentHeight, + rotation, + this._defaultDrawingOptions["stroke-width"] ); } - #generateBezierPoints() { - const path = this.currentPath; - if (path.length <= 2) { - return [[path[0], path[0], path.at(-1), path.at(-1)]]; - } - - const bezierPoints = []; - let i; - let [x0, y0] = path[0]; - for (i = 1; i < path.length - 2; i++) { - const [x1, y1] = path[i]; - const [x2, y2] = path[i + 1]; - const x3 = (x1 + x2) / 2; - const y3 = (y1 + y2) / 2; - - // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]]. - // Convert the quadratic to a cubic - // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript) - const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3]; - const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3]; - - bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]); - - [x0, y0] = [x3, y3]; - } - - const [x1, y1] = path[i]; - const [x2, y2] = path[i + 1]; - - // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]]. - const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3]; - const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3]; - - bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]); - return bezierPoints; - } - - /** - * Redraw all the paths. - */ - #redraw() { - if (this.isEmpty()) { - this.#updateTransform(); - return; - } - this.#setStroke(); - - const { canvas, ctx } = this; - ctx.setTransform(1, 0, 0, 1, 0, 0); - ctx.clearRect(0, 0, canvas.width, canvas.height); - this.#updateTransform(); - - for (const path of this.bezierPath2D) { - ctx.stroke(path); - } - } - - /** - * Commit the curves we have in this editor. - */ - commit() { - if (this.#disableEditing) { - return; - } - - super.commit(); - - this.isEditing = false; - this.disableEditMode(); - - // This editor must be on top of the main ink editor. - this.setInForeground(); - - this.#disableEditing = true; - this.div.classList.add("disabled"); - - this.#fitToContent(/* firstTime = */ true); - this.select(); - - this.parent.addInkEditorIfNeeded(/* isCommitting = */ true); - - // When committing, the position of this editor is changed, hence we must - // move it to the right position in the DOM. - this.moveInDOM(); - this.div.focus({ - preventScroll: true /* See issue #15744 */, - }); - } - /** @inheritdoc */ - focusin(event) { - if (!this._focusEventsAllowed) { - return; - } - super.focusin(event); - this.enableEditMode(); - } - - #addPointerdownListener() { - if (this.#pointerdownAC) { - return; - } - this.#pointerdownAC = new AbortController(); - const signal = this._uiManager.combinedSignal(this.#pointerdownAC); - - this.canvas.addEventListener( - "pointerdown", - this.canvasPointerdown.bind(this), - { signal } - ); - } - - #removePointerdownListener() { - this.pointerdownAC?.abort(); - this.pointerdownAC = null; - } - - /** - * onpointerdown callback for the canvas we're drawing on. - * @param {PointerEvent} event - */ - canvasPointerdown(event) { - if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) { - return; - } - - // We want to draw on top of any other editors. - // Since it's the last child, there's no need to give it a higher z-index. - this.setInForeground(); - - event.preventDefault(); - - if (!this.div.contains(document.activeElement)) { - this.div.focus({ - preventScroll: true /* See issue #17327 */, - }); - } - - this.#startDrawing(event.offsetX, event.offsetY); - } - - /** - * onpointermove callback for the canvas we're drawing on. - * @param {PointerEvent} event - */ - canvasPointermove(event) { - event.preventDefault(); - this.#draw(event.offsetX, event.offsetY); - } - - /** - * onpointerup callback for the canvas we're drawing on. - * @param {PointerEvent} event - */ - canvasPointerup(event) { - event.preventDefault(); - this.#endDrawing(event); - } - - /** - * onpointerleave callback for the canvas we're drawing on. - * @param {PointerEvent} event - */ - canvasPointerleave(event) { - this.#endDrawing(event); - } - - /** - * End the drawing. - * @param {PointerEvent} event - */ - #endDrawing(event) { - this.#drawingAC?.abort(); - this.#drawingAC = null; - - this.#addPointerdownListener(); - // Slight delay to avoid the context menu to appear (it can happen on a long - // tap with a pen). - if (this.#canvasContextMenuTimeoutId) { - clearTimeout(this.#canvasContextMenuTimeoutId); - } - this.#canvasContextMenuTimeoutId = setTimeout(() => { - this.#canvasContextMenuTimeoutId = null; - this.canvas.removeEventListener("contextmenu", noContextMenu); - }, 10); - - this.#stopDrawing(event.offsetX, event.offsetY); - - this.addToAnnotationStorage(); - - // Since the ink editor covers all of the page and we want to be able - // to select another editor, we just put this one in the background. - this.setInBackground(); - } - - /** - * Create the canvas element. - */ - #createCanvas() { - this.canvas = document.createElement("canvas"); - this.canvas.width = this.canvas.height = 0; - this.canvas.className = "inkEditorCanvas"; - this.canvas.setAttribute("data-l10n-id", "pdfjs-ink-canvas"); - - this.div.append(this.canvas); - this.ctx = this.canvas.getContext("2d"); - } - - /** - * Create the resize observer. - */ - #createObserver() { - this.#observer = new ResizeObserver(entries => { - const rect = entries[0].contentRect; - if (rect.width && rect.height) { - this.setDimensions(rect.width, rect.height); - } - }); - this.#observer.observe(this.div); - this._uiManager._signal.addEventListener( - "abort", - () => { - this.#observer?.disconnect(); - this.#observer = null; - }, - { once: true } + static deserializeDraw( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + data + ) { + return InkDrawOutline.deserialize( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + data ); } /** @inheritdoc */ - get isResizable() { - return !this.isEmpty() && this.#disableEditing; - } - - /** @inheritdoc */ - render() { - if (this.div) { - return this.div; - } - - let baseX, baseY; - if (this.width) { - baseX = this.x; - baseY = this.y; - } - - super.render(); - - this.div.setAttribute("data-l10n-id", "pdfjs-ink"); - - const [x, y, w, h] = this.#getInitialBBox(); - this.setAt(x, y, 0, 0); - this.setDims(w, h); - - this.#createCanvas(); - - if (this.width) { - // This editor was created in using copy (ctrl+c). - const [parentWidth, parentHeight] = this.parentDimensions; - this.setAspectRatio(this.width * parentWidth, this.height * parentHeight); - this.setAt( - baseX * parentWidth, - baseY * parentHeight, - this.width * parentWidth, - this.height * parentHeight - ); - this.#isCanvasInitialized = true; - this.#setCanvasDims(); - this.setDims(this.width * parentWidth, this.height * parentHeight); - this.#redraw(); - this.div.classList.add("disabled"); - } else { - this.div.classList.add("editing"); - this.enableEditMode(); + static async deserialize(data, parent, uiManager) { + if (data instanceof InkAnnotationElement) { + return null; } - this.#createObserver(); - - return this.div; - } - - #setCanvasDims() { - if (!this.#isCanvasInitialized) { - return; - } - const [parentWidth, parentHeight] = this.parentDimensions; - this.canvas.width = Math.ceil(this.width * parentWidth); - this.canvas.height = Math.ceil(this.height * parentHeight); - this.#updateTransform(); + return super.deserialize(data, parent, uiManager); } - /** - * When the dimensions of the div change the inner canvas must - * renew its dimensions, hence it must redraw its own contents. - * @param {number} width - the new width of the div - * @param {number} height - the new height of the div - * @returns - */ - setDimensions(width, height) { - const roundedWidth = Math.round(width); - const roundedHeight = Math.round(height); - if ( - this.#realWidth === roundedWidth && - this.#realHeight === roundedHeight - ) { + /** @inheritdoc */ + onScaleChanging() { + if (!this.parent) { return; } - - this.#realWidth = roundedWidth; - this.#realHeight = roundedHeight; - - this.canvas.style.visibility = "hidden"; - - const [parentWidth, parentHeight] = this.parentDimensions; - this.width = width / parentWidth; - this.height = height / parentHeight; - this.fixAndSetPosition(); - - if (this.#disableEditing) { - this.#setScaleFactor(width, height); - } - - this.#setCanvasDims(); - this.#redraw(); - - this.canvas.style.visibility = "visible"; - - // For any reason the dimensions couldn't be in percent but in pixels, hence - // we must fix them. - this.fixDims(); - } - - #setScaleFactor(width, height) { - const padding = this.#getPadding(); - const scaleFactorW = (width - padding) / this.#baseWidth; - const scaleFactorH = (height - padding) / this.#baseHeight; - this.scaleFactor = Math.min(scaleFactorW, scaleFactorH); - } - - /** - * Update the canvas transform. - */ - #updateTransform() { - const padding = this.#getPadding() / 2; - this.ctx.setTransform( - this.scaleFactor, - 0, - 0, - this.scaleFactor, - this.translationX * this.scaleFactor + padding, - this.translationY * this.scaleFactor + padding + super.onScaleChanging(); + const { _drawId, _drawingOptions, parent } = this; + _drawingOptions.updateSVGProperty("stroke-width"); + parent.drawLayer.updateProperties( + _drawId, + _drawingOptions.toSVGProperties() ); } - /** - * Convert into a Path2D. - * @param {Array>} bezier - * @returns {Path2D} - */ - static #buildPath2D(bezier) { - const path2D = new Path2D(); - for (let i = 0, ii = bezier.length; i < ii; i++) { - const [first, control1, control2, second] = bezier[i]; - if (i === 0) { - path2D.moveTo(...first); - } - path2D.bezierCurveTo( - control1[0], - control1[1], - control2[0], - control2[1], - second[0], - second[1] - ); - } - return path2D; - } - - static #toPDFCoordinates(points, rect, rotation) { - const [blX, blY, trX, trY] = rect; - - switch (rotation) { - case 0: - for (let i = 0, ii = points.length; i < ii; i += 2) { - points[i] += blX; - points[i + 1] = trY - points[i + 1]; - } - break; - case 90: - for (let i = 0, ii = points.length; i < ii; i += 2) { - const x = points[i]; - points[i] = points[i + 1] + blX; - points[i + 1] = x + blY; - } - break; - case 180: - for (let i = 0, ii = points.length; i < ii; i += 2) { - points[i] = trX - points[i]; - points[i + 1] += blY; - } - break; - case 270: - for (let i = 0, ii = points.length; i < ii; i += 2) { - const x = points[i]; - points[i] = trX - points[i + 1]; - points[i + 1] = trY - x; - } - break; - default: - throw new Error("Invalid rotation"); - } - return points; - } - - static #fromPDFCoordinates(points, rect, rotation) { - const [blX, blY, trX, trY] = rect; - - switch (rotation) { - case 0: - for (let i = 0, ii = points.length; i < ii; i += 2) { - points[i] -= blX; - points[i + 1] = trY - points[i + 1]; - } - break; - case 90: - for (let i = 0, ii = points.length; i < ii; i += 2) { - const x = points[i]; - points[i] = points[i + 1] - blY; - points[i + 1] = x - blX; - } - break; - case 180: - for (let i = 0, ii = points.length; i < ii; i += 2) { - points[i] = trX - points[i]; - points[i + 1] -= blY; - } - break; - case 270: - for (let i = 0, ii = points.length; i < ii; i += 2) { - const x = points[i]; - points[i] = trY - points[i + 1]; - points[i + 1] = trX - x; - } - break; - default: - throw new Error("Invalid rotation"); - } - return points; - } - - /** - * Transform and serialize the paths. - * @param {number} s - scale factor - * @param {number} tx - abscissa of the translation - * @param {number} ty - ordinate of the translation - * @param {Array} rect - the bounding box of the annotation - */ - #serializePaths(s, tx, ty, rect) { - const paths = []; - const padding = this.thickness / 2; - const shiftX = s * tx + padding; - const shiftY = s * ty + padding; - for (const bezier of this.paths) { - const buffer = []; - const points = []; - for (let j = 0, jj = bezier.length; j < jj; j++) { - const [first, control1, control2, second] = bezier[j]; - if (first[0] === second[0] && first[1] === second[1] && jj === 1) { - // We have only one point. - const p0 = s * first[0] + shiftX; - const p1 = s * first[1] + shiftY; - buffer.push(p0, p1); - points.push(p0, p1); - break; - } - const p10 = s * first[0] + shiftX; - const p11 = s * first[1] + shiftY; - const p20 = s * control1[0] + shiftX; - const p21 = s * control1[1] + shiftY; - const p30 = s * control2[0] + shiftX; - const p31 = s * control2[1] + shiftY; - const p40 = s * second[0] + shiftX; - const p41 = s * second[1] + shiftY; - - if (j === 0) { - buffer.push(p10, p11); - points.push(p10, p11); - } - buffer.push(p20, p21, p30, p31, p40, p41); - points.push(p20, p21); - if (j === jj - 1) { - points.push(p40, p41); - } - } - paths.push({ - bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation), - points: InkEditor.#toPDFCoordinates(points, rect, this.rotation), - }); - } - - return paths; - } - - /** - * Get the bounding box containing all the paths. - * @returns {Array} - */ - #getBbox() { - let xMin = Infinity; - let xMax = -Infinity; - let yMin = Infinity; - let yMax = -Infinity; - - for (const path of this.paths) { - for (const [first, control1, control2, second] of path) { - const bbox = Util.bezierBoundingBox( - ...first, - ...control1, - ...control2, - ...second - ); - xMin = Math.min(xMin, bbox[0]); - yMin = Math.min(yMin, bbox[1]); - xMax = Math.max(xMax, bbox[2]); - yMax = Math.max(yMax, bbox[3]); - } - } - - return [xMin, yMin, xMax, yMax]; - } - - /** - * The bounding box is computed with null thickness, so we must take - * it into account for the display. - * It corresponds to the total padding, hence it should be divided by 2 - * in order to have left/right paddings. - * @returns {number} - */ - #getPadding() { - return this.#disableEditing - ? Math.ceil(this.thickness * this.parentScale) - : 0; - } - - /** - * Set the div position and dimensions in order to fit to - * the bounding box of the contents. - * @returns {undefined} - */ - #fitToContent(firstTime = false) { - if (this.isEmpty()) { + static onScaleChangingWhenDrawing() { + const parent = this._currentParent; + if (!parent) { return; } - - if (!this.#disableEditing) { - this.#redraw(); - return; - } - - const bbox = this.#getBbox(); - const padding = this.#getPadding(); - this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]); - this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]); - - const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor); - const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor); - - const [parentWidth, parentHeight] = this.parentDimensions; - this.width = width / parentWidth; - this.height = height / parentHeight; - - this.setAspectRatio(width, height); - - const prevTranslationX = this.translationX; - const prevTranslationY = this.translationY; - - this.translationX = -bbox[0]; - this.translationY = -bbox[1]; - this.#setCanvasDims(); - this.#redraw(); - - this.#realWidth = width; - this.#realHeight = height; - - this.setDims(width, height); - const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0; - this.translate( - prevTranslationX - this.translationX - unscaledPadding, - prevTranslationY - this.translationY - unscaledPadding + super.onScaleChangingWhenDrawing(); + this._defaultDrawingOptions.updateSVGProperty("stroke-width"); + parent.drawLayer.updateProperties( + this._currentDrawId, + this._defaultDrawingOptions.toSVGProperties() ); } /** @inheritdoc */ - static async deserialize(data, parent, uiManager) { - if (data instanceof InkAnnotationElement) { - return null; - } - const editor = await super.deserialize(data, parent, uiManager); - - editor.thickness = data.thickness; - editor.color = Util.makeHexColor(...data.color); - editor.opacity = data.opacity; - - const [pageWidth, pageHeight] = editor.pageDimensions; - const width = editor.width * pageWidth; - const height = editor.height * pageHeight; - const scaleFactor = editor.parentScale; - const padding = data.thickness / 2; - - editor.#disableEditing = true; - editor.#realWidth = Math.round(width); - editor.#realHeight = Math.round(height); - - const { paths, rect, rotation } = data; - - for (let { bezier } of paths) { - bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation); - const path = []; - editor.paths.push(path); - let p0 = scaleFactor * (bezier[0] - padding); - let p1 = scaleFactor * (bezier[1] - padding); - for (let i = 2, ii = bezier.length; i < ii; i += 6) { - const p10 = scaleFactor * (bezier[i] - padding); - const p11 = scaleFactor * (bezier[i + 1] - padding); - const p20 = scaleFactor * (bezier[i + 2] - padding); - const p21 = scaleFactor * (bezier[i + 3] - padding); - const p30 = scaleFactor * (bezier[i + 4] - padding); - const p31 = scaleFactor * (bezier[i + 5] - padding); - path.push([ - [p0, p1], - [p10, p11], - [p20, p21], - [p30, p31], - ]); - p0 = p30; - p1 = p31; - } - const path2D = this.#buildPath2D(path); - editor.bezierPath2D.push(path2D); - } - - const bbox = editor.#getBbox(); - editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]); - editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]); - editor.#setScaleFactor(width, height); - - return editor; + createDrawingOptions({ color, thickness, opacity }) { + this._drawingOptions = InkEditor.getDefaultDrawingOptions({ + stroke: Util.makeHexColor(...color), + "stroke-width": thickness, + "stroke-opacity": opacity, + }); } /** @inheritdoc */ - serialize() { + serialize(isForCopying = false) { if (this.isEmpty()) { return null; } - const rect = this.getRect(0, 0); - const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle); + if (this.deleted) { + return this.serializeDeleted(); + } - return { + const { lines, points, rect } = this.serializeDraw(isForCopying); + const { + _drawingOptions: { + stroke, + "stroke-opacity": opacity, + "stroke-width": thickness, + }, + } = this; + const serialized = { annotationType: AnnotationEditorType.INK, - color, - thickness: this.thickness, - opacity: this.opacity, - paths: this.#serializePaths( - this.scaleFactor / this.parentScale, - this.translationX, - this.translationY, - rect - ), + color: AnnotationEditor._colorManager.convert(stroke), + opacity, + thickness, + paths: { + lines, + points, + }, pageIndex: this.pageIndex, rect, rotation: this.rotation, structTreeParentId: this._structTreeParentId, }; + + serialized.id = this.annotationElementId; + return serialized; } } diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index 40b96897babba..0f65235b59722 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -411,6 +411,21 @@ class CommandManager { return this.#position < this.#commands.length - 1; } + cleanType(type) { + if (this.#position === -1) { + return; + } + for (let i = this.#position; i >= 0; i--) { + if (this.#commands[i].type !== type) { + this.#commands.splice(i + 1, this.#position - i); + this.#position = i; + return; + } + } + this.#commands.length = 0; + this.#position = -1; + } + destroy() { this.#commands = null; } @@ -1034,6 +1049,7 @@ class AnnotationEditorUIManager { for (const editor of this.#editorsToRescale) { editor.onScaleChanging(); } + this.currentLayer?.onScaleChanging(); } onRotationChanging({ pagesRotation }) { @@ -1931,6 +1947,10 @@ class AnnotationEditorUIManager { } } + updateUIForDefaultProperties(editorType) { + this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate); + } + /** * Add or remove an editor the current selection. * @param {AnnotationEditor} editor @@ -1957,6 +1977,7 @@ class AnnotationEditorUIManager { * @param {AnnotationEditor} editor */ setSelected(editor) { + this.currentLayer?.commitOrRemove(); for (const ed of this.#selectedEditors) { if (ed !== editor) { ed.unselect(); @@ -2044,6 +2065,10 @@ class AnnotationEditorUIManager { }); } + cleanUndoStack(type) { + this.#commandManager.cleanType(type); + } + #isEmpty() { if (this.#allEditors.size === 0) { return true; @@ -2134,6 +2159,10 @@ class AnnotationEditorUIManager { } } + if (this.currentLayer?.commitOrRemove()) { + return; + } + if (!this.hasSelection) { return; } diff --git a/src/shared/util.js b/src/shared/util.js index 006c416b0db49..b6dfb4002a304 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -94,6 +94,7 @@ const AnnotationEditorParamsType = { HIGHLIGHT_THICKNESS: 33, HIGHLIGHT_FREE: 34, HIGHLIGHT_SHOW_ALL: 35, + DRAW_STEP: 41, }; // Permission flags from Table 22, Section 7.6.3.2 of the PDF specification. diff --git a/test/driver.js b/test/driver.js index 8991e50ab6771..897504edde6eb 100644 --- a/test/driver.js +++ b/test/driver.js @@ -649,7 +649,7 @@ class Driver { if (task.annotationStorage) { for (const annotation of Object.values(task.annotationStorage)) { - const { bitmapName, quadPoints } = annotation; + const { bitmapName, quadPoints, paths, outlines } = annotation; if (bitmapName) { promise = promise.then(async doc => { const response = await fetch( @@ -687,6 +687,36 @@ class Driver { // like IRL (in order to avoid bugs like bug 1907958). annotation.quadPoints = new Float32Array(quadPoints); } + if (paths) { + for (let i = 0, ii = paths.lines.length; i < ii; i++) { + paths.lines[i] = Float32Array.from( + paths.lines[i], + x => x ?? NaN + ); + } + for (let i = 0, ii = paths.points.length; i < ii; i++) { + paths.points[i] = Float32Array.from( + paths.points[i], + x => x ?? NaN + ); + } + } + if (outlines) { + if (Array.isArray(outlines)) { + for (let i = 0, ii = outlines.length; i < ii; i++) { + outlines[i] = Float32Array.from(outlines[i], x => x ?? NaN); + } + } else { + outlines.outline = Float32Array.from( + outlines.outline, + x => x ?? NaN + ); + outlines.points = Float32Array.from( + outlines.points, + x => x ?? NaN + ); + } + } } } diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 8cf5059dfb2ae..67fe9fccfbdfc 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -117,7 +117,7 @@ describe("Ink Editor", () => { await commit(page); - const rectBefore = await getRect(page, ".inkEditor canvas"); + const rectBefore = await getRect(page, ".canvasWrapper .draw"); for (let i = 0; i < 30; i++) { await kbUndo(page); @@ -126,7 +126,7 @@ describe("Ink Editor", () => { await waitForStorageEntries(page, 1); } - const rectAfter = await getRect(page, ".inkEditor canvas"); + const rectAfter = await getRect(page, ".canvasWrapper .draw"); expect(Math.round(rectBefore.x)) .withContext(`In ${browserName}`) @@ -453,4 +453,118 @@ describe("Ink Editor", () => { ); }); }); + + describe("Drawing must unselect all", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that when we start to draw then the editors are unselected", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + const rect = await getRect(page, ".annotationEditorLayer"); + + let xStart = rect.x + 10; + const yStart = rect.y + 10; + for (let i = 0; i < 2; i++) { + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(xStart, yStart); + await page.mouse.down(); + if (i === 1) { + expect(await getSelectedEditors(page)) + .withContext(`In ${browserName}`) + .toEqual([]); + } + await page.mouse.move(xStart + 50, yStart + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + xStart += 70; + } + }) + ); + }); + }); + + describe("Selected editor must be updated even if the page has been destroyed", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the color has been changed", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + + const x = rect.x + 20; + const y = rect.y + 20; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x, y); + await page.mouse.down(); + await page.mouse.move(x + 50, y + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + + await commit(page); + + const drawSelector = `.page[data-page-number = "1"] .canvasWrapper .draw`; + await page.waitForSelector(drawSelector, { visible: true }); + let color = await page.evaluate(sel => { + const el = document.querySelector(sel); + return el.getAttribute("stroke"); + }, drawSelector); + expect(color).toEqual("#000000"); + + const oneToFourteen = Array.from(new Array(13).keys(), n => n + 2); + for (const pageNumber of oneToFourteen) { + await scrollIntoView( + page, + `.page[data-page-number = "${pageNumber}"]` + ); + } + + const red = "#ff0000"; + page.evaluate(value => { + window.PDFViewerApplication.eventBus.dispatch( + "switchannotationeditorparams", + { + source: null, + type: window.pdfjsLib.AnnotationEditorParamsType.INK_COLOR, + value, + } + ); + }, red); + + const fourteenToOne = Array.from(new Array(13).keys(), n => 13 - n); + for (const pageNumber of fourteenToOne) { + await scrollIntoView( + page, + `.page[data-page-number = "${pageNumber}"]` + ); + } + await page.waitForSelector(drawSelector, { visible: true }); + color = await page.evaluate(sel => { + const el = document.querySelector(sel); + return el.getAttribute("stroke"); + }, drawSelector); + expect(color).toEqual(red); + }) + ); + }); + }); }); diff --git a/test/test_manifest.json b/test/test_manifest.json index 0b6dcc6cdc004..c5d7f48b95883 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -8244,24 +8244,44 @@ "color": [255, 0, 0], "thickness": 3, "opacity": 1, - "paths": [ - { - "bezier": [ - 73, 560.2277710847244, 74.30408044851005, 561.5318515332344, - 76.89681158113368, 557.7555609512324, 77.5, 557.2277710847244, - 81.95407020558315, 553.3304596548392, 87.4811839685984, - 550.8645311043504, 92.5, 547.7277710847244, 97.38795894206055, - 544.6727967459365, 109.48854351637208, 540.2392275683522, 113.5, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 73, + 560.2277710847244, + 74.30408044851005, + 561.5318515332344, + 76.89681158113368, + 557.7555609512324, + 77.5, + 557.2277710847244, + 81.95407020558315, + 553.3304596548392, + 87.4811839685984, + 550.8645311043504, + 92.5, + 547.7277710847244, + 97.38795894206055, + 544.6727967459365, + 109.48854351637208, + 540.2392275683522, + 113.5, 536.2277710847244 - ], - "points": [ + ] + ], + "points": [ + [ 73, 560.2277710847244, 76.7257911988625, 558.1025687477292, 75.5128345111164, 559.4147224528562, 77.5, 557.2277710847244, 92.5, 547.7277710847244, 109.21378602219673, 539.2873735223628, 103.32868842191223, 542.3364518890394, 113.5, 536.2277710847244 ] - } - ], + ] + }, "pageIndex": 0, "rect": [71.5, 534.5, 115, 562], "rotation": 0 @@ -8330,22 +8350,37 @@ "color": [255, 0, 0], "thickness": 1, "opacity": 1, - "paths": [ - { - "bezier": [ - 417.61538461538464, 520.3461538461538, 419.15384615384613, - 520.3461538461538, 421.0769230769231, 520.3461538461538, - 423.38461538461536, 520.3461538461538, 425.6923076923077, - 520.3461538461538, 429.15384615384613, 519.9615384615385, - 433.7692307692308, 519.1923076923076 - ], - "points": [ + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 417.61538461538464, + 520.3461538461538, + 419.15384615384613, + 520.3461538461538, + 421.0769230769231, + 520.3461538461538, + 423.38461538461536, + 520.3461538461538, + 425.6923076923077, + 520.3461538461538, + 429.15384615384613, + 519.9615384615385, + 433.7692307692308, + 519.1923076923076 + ] + ], + "points": [ + [ 417.61538461538464, 520.3461538461538, 419.15384615384613, 520.3461538461538, 425.6923076923077, 520.3461538461538, 433.7692307692308, 519.1923076923076 ] - } - ], + ] + }, "pageIndex": 0, "rect": [ 417.11538461538464, 510.46153846153845, 434.42307692307696, @@ -8358,22 +8393,37 @@ "color": [0, 255, 0], "thickness": 1, "opacity": 1, - "paths": [ - { - "bezier": [ - 449.92307692307696, 526.6538461538462, 449.92307692307696, - 527.423076923077, 449.6346153846154, 528.8653846153846, - 449.0576923076924, 530.9807692307693, 448.4807692307693, - 533.0961538461539, 447.8076923076924, 536.6538461538462, - 447.0384615384616, 541.6538461538462 - ], - "points": [ + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 449.92307692307696, + 526.6538461538462, + 449.92307692307696, + 527.423076923077, + 449.6346153846154, + 528.8653846153846, + 449.0576923076924, + 530.9807692307693, + 448.4807692307693, + 533.0961538461539, + 447.8076923076924, + 536.6538461538462, + 447.0384615384616, + 541.6538461538462 + ] + ], + "points": [ + [ 449.92307692307696, 526.6538461538462, 449.92307692307696, 527.423076923077, 448.4807692307693, 533.0961538461539, 447.0384615384616, 541.6538461538462 ] - } - ], + ] + }, "pageIndex": 0, "rect": [ 446.5384615384616, 526.1538461538462, 456.92307692307696, @@ -8386,22 +8436,37 @@ "color": [0, 0, 255], "thickness": 1, "opacity": 1, - "paths": [ - { - "bezier": [ - 482.8461538461538, 511.6538461538462, 482.07692307692304, - 511.6538461538462, 480.53846153846155, 511.6538461538462, - 478.23076923076917, 511.6538461538462, 475.9230769230769, - 511.6538461538462, 472.46153846153845, 511.6538461538462, - 467.8461538461538, 511.6538461538462 - ], - "points": [ + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 482.8461538461538, + 511.6538461538462, + 482.07692307692304, + 511.6538461538462, + 480.53846153846155, + 511.6538461538462, + 478.23076923076917, + 511.6538461538462, + 475.9230769230769, + 511.6538461538462, + 472.46153846153845, + 511.6538461538462, + 467.8461538461538, + 511.6538461538462 + ] + ], + "points": [ + [ 482.8461538461538, 511.6538461538462, 482.07692307692304, 511.6538461538462, 475.9230769230769, 511.6538461538462, 467.8461538461538, 511.6538461538462 ] - } - ], + ] + }, "pageIndex": 0, "rect": [ 467.1923076923077, 511.1538461538462, 483.3461538461538, @@ -8414,22 +8479,37 @@ "color": [0, 255, 255], "thickness": 1, "opacity": 1, - "paths": [ - { - "bezier": [ - 445.9230769230769, 509.3846153846154, 445.5384615384615, - 509.3846153846154, 445.15384615384613, 508.1346153846154, - 444.7692307692307, 505.6346153846154, 444.38461538461536, - 503.1346153846154, 443.23076923076917, 499.00000000000006, - 441.30769230769226, 493.2307692307693 - ], - "points": [ + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 445.9230769230769, + 509.3846153846154, + 445.5384615384615, + 509.3846153846154, + 445.15384615384613, + 508.1346153846154, + 444.7692307692307, + 505.6346153846154, + 444.38461538461536, + 503.1346153846154, + 443.23076923076917, + 499.00000000000006, + 441.30769230769226, + 493.2307692307693 + ] + ], + "points": [ + [ 445.9230769230769, 509.3846153846154, 445.5384615384615, 509.3846153846154, 444.38461538461536, 503.1346153846154, 441.30769230769226, 493.2307692307693 ] - } - ], + ] + }, "pageIndex": 0, "rect": [ 436.03846153846155, 492.5769230769231, 446.4230769230769, @@ -9599,12 +9679,12 @@ "color": [53, 228, 47], "thickness": 20, "opacity": 1, - "paths": [ - { - "bezier": [279.9183673469388, 477.0105263157895], - "points": [279.9183673469388, 477.0105263157895] - } - ], + "paths": { + "lines": [ + [null, null, null, null, 279.9183673469388, 477.0105263157895] + ], + "points": [[279.9183673469388, 477.0105263157895]] + }, "pageIndex": 0, "rect": [ 269.9183673469388, 443.93684210526317, 312.9387755102041, diff --git a/test/unit/annotation_spec.js b/test/unit/annotation_spec.js index 7c840704d859d..bc50065c2df1c 100644 --- a/test/unit/annotation_spec.js +++ b/test/unit/annotation_spec.js @@ -4448,21 +4448,54 @@ describe("annotation", function () { thickness: 1, opacity: 1, color: [0, 0, 0], - paths: [ - { - bezier: [ - 10, 11, 12, 13, 14, 15, 16, 17, 22, 23, 24, 25, 26, 27, + paths: { + lines: [ + [ + NaN, + NaN, + NaN, + NaN, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 22, + 23, + 24, + 25, + 26, + 27, ], - points: [1, 2, 3, 4, 5, 6, 7, 8], - }, - { - bezier: [ - 910, 911, 912, 913, 914, 915, 916, 917, 922, 923, 924, 925, - 926, 927, + [ + NaN, + NaN, + NaN, + NaN, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 922, + 923, + 924, + 925, + 926, + 927, ], - points: [91, 92, 93, 94, 95, 96, 97, 98], - }, - ], + ], + points: [ + [1, 2, 3, 4, 5, 6, 7, 8], + [91, 92, 93, 94, 95, 96, 97, 98], + ], + }, }, ], null, @@ -4482,13 +4515,12 @@ describe("annotation", function () { const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + - "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 129>> stream\n" + + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 127>> stream\n" + "1 w 1 J 1 j\n" + "0 G\n" + "10 11 m\n" + "12 13 14 15 16 17 c\n" + "22 23 24 25 26 27 c\n" + - "S\n" + "910 911 m\n" + "912 913 914 915 916 917 c\n" + "922 923 924 925 926 927 c\n" + @@ -4513,21 +4545,54 @@ describe("annotation", function () { thickness: 1, opacity: 0.12, color: [0, 0, 0], - paths: [ - { - bezier: [ - 10, 11, 12, 13, 14, 15, 16, 17, 22, 23, 24, 25, 26, 27, + paths: { + lines: [ + [ + NaN, + NaN, + NaN, + NaN, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 22, + 23, + 24, + 25, + 26, + 27, ], - points: [1, 2, 3, 4, 5, 6, 7, 8], - }, - { - bezier: [ - 910, 911, 912, 913, 914, 915, 916, 917, 922, 923, 924, 925, - 926, 927, + [ + NaN, + NaN, + NaN, + NaN, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 922, + 923, + 924, + 925, + 926, + 927, ], - points: [91, 92, 93, 94, 95, 96, 97, 98], - }, - ], + ], + points: [ + [1, 2, 3, 4, 5, 6, 7, 8], + [91, 92, 93, 94, 95, 96, 97, 98], + ], + }, }, ], null, @@ -4547,7 +4612,7 @@ describe("annotation", function () { const appearance = data[1].data; expect(appearance).toEqual( "2 0 obj\n" + - "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 136 /Resources " + + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 134 /Resources " + "<< /ExtGState << /R0 << /CA 0.12 /Type /ExtGState>>>>>>>> stream\n" + "1 w 1 J 1 j\n" + "0 G\n" + @@ -4555,7 +4620,6 @@ describe("annotation", function () { "10 11 m\n" + "12 13 14 15 16 17 c\n" + "22 23 24 25 26 27 c\n" + - "S\n" + "910 911 m\n" + "912 913 914 915 916 917 c\n" + "922 923 924 925 926 927 c\n" + @@ -4581,13 +4645,10 @@ describe("annotation", function () { thickness: 3, opacity: 1, color: [0, 255, 0], - paths: [ - { - bezier: [1, 2, 3, 4, 5, 6, 7, 8], - // Useless in the printing case. - points: [1, 2, 3, 4, 5, 6, 7, 8], - }, - ], + paths: { + lines: [[NaN, NaN, NaN, NaN, 1, 2, 3, 4, 5, 6, 7, 8]], + points: [[1, 2, 3, 4, 5, 6, 7, 8]], + }, }, ] ) diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index 21671995bddae..5edf1639b43ad 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -66,19 +66,21 @@ font-size: 0; } -.textLayer.highlighting { - cursor: var(--editorFreeHighlight-editing-cursor); +.textLayer { + &.highlighting { + cursor: var(--editorFreeHighlight-editing-cursor); - &:not(.free) span { - cursor: var(--editorHighlight-editing-cursor); + &:not(.free) span { + cursor: var(--editorHighlight-editing-cursor); - &[role="img"] { - cursor: var(--editorFreeHighlight-editing-cursor); + &[role="img"] { + cursor: var(--editorFreeHighlight-editing-cursor); + } } - } - &.free span { - cursor: var(--editorFreeHighlight-editing-cursor); + &.free span { + cursor: var(--editorFreeHighlight-editing-cursor); + } } } @@ -154,6 +156,11 @@ .annotationEditorLayer.inkEditing { cursor: var(--editorInk-editing-cursor); + touch-action: none; +} + +.annotationEditorLayer .draw { + box-sizing: border-box; } .annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) { diff --git a/web/draw_layer_builder.css b/web/draw_layer_builder.css index e4b6ae385adfb..5ea206ced7657 100644 --- a/web/draw_layer_builder.css +++ b/web/draw_layer_builder.css @@ -17,6 +17,10 @@ svg { transform: none; + &.moving { + z-index: 100000; + } + &.highlight, &.highlightOutline { &[data-main-rotation="90"] { @@ -41,6 +45,23 @@ } } + &.draw { + position: absolute; + mix-blend-mode: normal; + + &[data-draw-rotation="90"] { + transform: rotate(90deg); + } + + &[data-draw-rotation="180"] { + transform: rotate(180deg); + } + + &[data-draw-rotation="270"] { + transform: rotate(270deg); + } + } + &.highlight { --blend-mode: multiply; diff --git a/web/viewer.html b/web/viewer.html index 6971ad1b14fb0..82445ced04d0c 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -300,7 +300,7 @@
- +
From e3599dca3797b8fd082b7c46950ec7c24e26bc27 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 28 Nov 2024 15:56:00 +0100 Subject: [PATCH 082/338] Correctly compute the mapping between text and normalized text when it contains a compound word on two lines It fixes #19120. The original text doesn't contain the cr so we must take that into account. --- test/pdfs/.gitignore | 1 + test/pdfs/issue19120.pdf | Bin 0 -> 26879 bytes test/unit/pdf_find_controller_spec.js | 28 +++++++++++++++++++++++--- web/pdf_find_controller.js | 3 +-- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100755 test/pdfs/issue19120.pdf diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 0d392f67c82dd..89657327d46e4 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -682,3 +682,4 @@ !bug1922766.pdf !issue18956.pdf !issue19083.pdf +!issue19120.pdf diff --git a/test/pdfs/issue19120.pdf b/test/pdfs/issue19120.pdf new file mode 100755 index 0000000000000000000000000000000000000000..a271b5eb699ebad307d01185ec4ebb0c4fae173e GIT binary patch literal 26879 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

i(J6Oc?e*^fRneWzR_emqds8t z#)Zj>`b4|jN~)>(mBsxfqjr@0cz+{pCGX@eVlWz?-*V-s{-$@s5?gyA&War$@ui)l z$4AQf4^1f}Q$wvx7L$_aHPO)`d9`327=Ss?C{?c)<@!{Dv?VL2IQs4%(TmC5==X zA+}6&l~lI3E2tjUE($CjeG>-_{1n;m)q*Q8YHY0+T8M=&3aAYVDnI8{l*l2YJgua*gh?I!Mglj6_vkMY;bG9Ux+|w$q*$pp}@v z6hSvON{dyNi=hfYPb&SjV8V>p;Y^E#ajp2L0iX)W1Dl~Fyp`c5T45|Cc+A{$izl`J z2?hR>P^r+WDhb+|>DaV~l%SoW1!(OIj0c7Rr_>;Ix`rs(TpCQ|XCvf{1*>Uo2wt5@CO24?stq%kf{=gj+X}5 zaUjALRhD@jLb{@wP#rQeGPX)BH%1GE77f)-j^dhyP1PlL?M21mr3((UGw3@(4QkbR z9!x>#R|)8eYV3*BI;7(pChG7?*kzUUG?^;l0^sKk^zk;ziZv$T2S9^tDebmgsZ3G< zbUlK#IVMf_Bt1hpL#oa<6DaFBnJQXb{nH@dBW5SX@AuG1LMKMFg;1qMGNoTJR2Xg~ zZeTyv@V#PH!d1T&=9+LNl5knj-W(|Z7`1vTg*zm5U=q<8&funI*wO!)GDU$Q#oc{b z$XzU)SPW5>|8b(+fbL9J`aZCw%pJ6)!k&~{5N_@Ew+YG-gR3;vorFtmL#Lo42X~JV z<`A{u(18!XFlg%o_n4WQPAGzX%{OSF^F)rlDSzdbw2QbnwIsPWON}<+X84+{&s$V9l}}HDGE79(NlqqpvdnB!7>$R-85x49cd#e_qqc|D?rpB&C*e^i|EN47% zz(kOD<+k#@EVW*lAG|QFImsZPzr#+f?!=SEdTrj=_Dj`VT0<<%F$YM@aCVGCaRo+j zPV3I5CMZy*Uf-JJk7Z37!{lbPYFQD~d`pa=)bIW2w+j}XWM{oAY}^?fO@roW(H%+WCwW?@Pyvfc4tZk``1aRq>3&E6{6!aUi=JeAYvU# zVNyHZ{Yu)I^1nMPP$BK#=@m0-EBs5NB*3$#>&_z^0z+Au;bbrIIY5ir8h@A10o|dE zGP=ucziMbt(CtIJ=bNPUJ_dgiJo>6ut6)7ZQ{4a{u7bo_RwKSWRaq@4r*EkB zVOq%efY?tYyuW!V+2ggAAV+otUjup?(u=EVeR0a!h~Mi@S&)3e;S}mLAAHSGN$$lf z)=;jElwr6@A{g2^|BYw}qxpw53HWQXaetXCd>Yx6bh}q>zMrkuztSdc$5CQx4urB_ zGE`g9)K+#(C~Dzd^&h-#FWRbfZC4*O-VndBPte%yOif0`({?iMX;wmNO`Uy=8q;wt zz|U}h#x!h>a{?zjMJ(+!D@OFzRR&A+wl1UUdfzhsZdz)#Er<948lxIGCn+nY_}R^` zkr-at+2Ek9$PYBETKGS;YSIqpDUzsk$H}Tpcm?qu+T|40`hg|&J6hJ?cB;*KX{`m= z7K44W%^@nib#e=u%vO~~bo3K!kc+0DUD;|+G~3)&^Ks5v5e-=_t;NsaH-B!l;+pY- zyl%wbXeA;S3nmX~rGU9hdC?bI2atKR%?ir554~*1?3dSn75F0j4EYXy#J86}DUFY@ zcRi&ECGx-a!AZOmxywo~EYB%yMVW+Uu4OS9#PCt}e*~^$6uZ zwd$HBO{=RD30Vufv~-tFp4`hc-yfxYTfxda66QtYUD?#nRU~QVhM97nK`JofH*+Er zaZ~OEQP{i-!kcpGJW$tnVYCzMr$^ZYHwcBlr6^sV%4d*Y9QLm8F%;CU`?u?U>hnF5 z_N!3oM{_u=@`ed-$8!?vvWt;+ zGRZntPUwU$C2K}K1&!09LZg`J4cwPFmiUH^i>F5X+>C2Mz2;AS{A=!YAYI^P`XHJS ze=N}+OJO(Fj<8KT4V}7Lt_8DbR5ViV=z!|{i0k2^IGz(Je99Va;+wr3zrpt7M<6XpK!;VsaQ&`Nu%g$Z#*zyiU7SJ~{!F-vffUYPHR`p^*=Dqu1g(?cF& zr`~~oe{$qmopeM@2M^{zHfDEa=fKmk3&fLqio~k8jRjn;EuFQ(s~*})TOUE_bypwl`QmWY+BiQ)I6HFePJFyZCHZyba5i{i6aB-~ zWVo{jK(Z%2Q;h8?{M^!;LYY?+B*aZ1iGp-@!b@RSBq7j%Cjo0yfFLWPE)EqgVQB}C$iJDudilgx#KQ3mq{o#hd08Sq{sRVtDQcWU`3oF2a`Q!~5OH(Q5jraO)= zjp2LE6AUgMo{g;}v42y3)km`iCPu+qJ@{G!v1yDG)6O;nR=one*nBa*kGE)0D8ObT+1_UtKs)OS86 zk=66UrLgk;S$wQm#*if<$G|6O#o|@ltAQ|IF%a1>vsAQaoHwu(zV>bF_%b^)lE*mt zI?E4}*(>0QKg-9hq*)w~57R*Ny}=UCY$&r?d0u&xgRof!gkzaiOfzyo|HkGh@>8ic5jLl9E1>P4Lh7 zl9s;nmmbOKe6BGS_PlFVI@{D?z8SNSoq(5FGdal21LApA$+f_$CfE8BaYM(TLq7Ri zIYUDL)MsgcQZ=W>Vh@WAM`bfH0>^(v|F3hlmb+%5ouW&AG@BWod#z1=)N|56jmg$y z;<{~M1AVU=v&C2X;;=Kr^idIxzDmv}o?4#@t=&PPRj)sE#)#iMwHxIYz+8U5F^T7v zkbeeY8Cz*@51z%$>(gAD6}L^fT0dIdCFfoiq~3iFl?V;>s~2USC9g_c*KG*k6kPJe z^&e9NdZhl1KX%Wx#I6*-7_T4=)-H2xHvf~L_A~vWH26nWA0!E z%r}R|Zpwc43pN8MOf!`r4xR1)Bc6zL1ZWa9Hh>L zdZxKumTu%|ew)QcV+#sw{-U3;d7y>={!iAxok7tnNzE){zfZdoEXg*rO@ljrn3JfY zT}GWxNMW9ynEsfniOhGtVZc{|r6+tsGsO5%Z>H&@$kZxSI#Uf~SLn~31eke4MoG%1 zIP8`OTSM(gowcVmrE|&(<12;d^EM!$M%x#vmq1&8FmF3gb^GL`nNAdM^ZjA5t@uyM z)9OmaDPuPyPy{QcgI=oEZoHqVAN^L3opI)wFp}4AP64y$4z{v8DQm9ZdOOV%1g2hH&YPDN!K3oe7hMgUR63dl8Dm7|Quiw@H>y2ANX{NtUX4COwvPsd^>MZUb`AKgj057m zi|;_1QueHCUUJ)UKzB?m3qOv6e#Q9pZZP-$arjQtcA+Ex{{FSgtsByGt;sLCVrew; z$rm=qaPW^3a}g51z&p|LWhxjCuc93T#c+}*ed-?n(7bBtV+xs2ny!wJd;$}JCi^y3 z?biIwr7@MadA(?8i?SU&3G7-KL3hqN#&CzZ41E`%bI`TPT;R=hooF!DQi*6B_bi*J z`D|avHdU#v4F31FNB6hCd*fOPZIYkC6t{U-%K7-|Fu(wmv|o|TzRmmKe985={TK`& zf)*gL0N8hOEUhesH1b&*pGRFQZ1Yj6=OaGOb-i2cA}ufb+;w?v&fgpfJDnLcykaNw z84BtO9X=yW)?y*!n=cQAXy8v!5LK%hs(40*DQ{# zGG$;=s;IG+Am~FIL*p^bw=|S-o9x?AvM6?d_KAJaBO4)j8acq4bn|FQ z(YLD&aaQ@8?H>!^YA0V_8@qXlWTUg6 zywE*12(EA;+*{f;hkVP${A-Tn!^Y=qzHqpr@lC^nydN9F5?;)LYzzMetnq^rvN#Ss z9~NH?<1PJp1@mqVF_IfR%uQrQE(`OI=|gJ1e!O$+O3MolJ)9o6Qxx3fxGwaLF+3QA zyuBUT^|X>TM_=T)=+vDyqHt26&dhUY|GxJjwa~MzzTv>rHw0O?<_Tb~(G72f+T%bH7!ulCm}Vy`^c;FjLq19 zxti4ooz+?Lq|K`P(;v%@RbrQg-b9mwGjpjl0>^`MbdOh8`Sg#76?;BA5LM1*l|ghiZ3bH$+NkovE!X@uY;&+C^A<7q<8_ncyBV6^So>VTB8kN5 z)Q4%e*E7Gw^sCu}xUU$;WU*Jta@t|WW#RnXV&$8+D=!45D!!%d?iJEANV^*=p%)IF z9QWT;`l@~VCb1T4RL(XjhD@j2=qB}95M;*=8_enZt*4Oawmre(UMH9Q z*NXDZJBNjd-~NA+Nrnydbn9+Wi}T3YpAbeQ?06v9F-B`Vq5a^r_q2_yR9ypyZN)rq zK~Qh`n-=m@deLb^(W~ZGQ%xa9S0S{M`>cWhZZ>aOqyH!W-ey;{^(~>Pw6^vLO3q{k z!|&wGAGG`iG7%_2tzGG^niLGv|Ey-BU(+Gue&Pr3W+O15N)6@Ja?O; z9fE<%cM}M2On5zCChrq3k#!@_vW?47Ip3#DizDEEY9z|~9n#5mWSjVuo#{(>W~%M^ zeK8mlZ&7IwLC(s8$IrXhi3@aWqV;(t`d&meN*nEH>kMa7J&P}A{p?3_(b8dx^u-|Is1Dqb=g(_ z-rx$RcRn<@?(dm97cDvVigxNK6676pGtkT~JQi$RtEd}KJ3Kdhb#G91f@9|d<~2)b z@7q@q{;LFPYuVBso51_hL0;+g9KTiTj@x67Jh|@bT6mI_TnhYA$cJn*bT+ZrAs4J@ z;M^>ZrIUagWH6_X+%}$l4W648h1?A$W~LoteD-i8Qh>hKsMd5V&HRcgY!|N;FTH{D z@-=jjpRkcoCj=g|&qnbb89-#*i${XNe?rnIWyN9Sf3cnSoe|G5q2$~-z2^4oCZn(M zmfN`B;oTqyofZriD*;&s$p~!s-FE%9=ebR#RO`)$1O}ISzBdH`R+;J<;;(<)9QvAAoEiB>X8|e{*m*Xi&V}je8SyX^|maz%OlFa8siUU{lJ*l zE9>85efK{mc>|!{;S*cP{j_pyWys<}CBMr&aqnRfB+U&i_>g>8oAgV(8*gIW9DAd_ zWvwUakKdtLD>Uy+eyC1x!W}EotZv6Ti!SeVIne~Tf z|5BCj>7UI!!RS)GY4;d8KiSWel~^&&%m<{mLds1J$S8_%cCQS~^8V_L=yM4lakRyz zBDKt7u1n@yIAG*oj%ZF_0#jGf_h+Pi6_JCoRC_Z!gg|#zEK|mbwX_!05iFPt) zTSX7z+wE~Gmh4`BZD|Vx65(83=x7jjzS=PXK9OiUrq}OW1|@w1%dse*Vg7)5pmBcV zSGXkVE>UgRXDh9S>y+SUHEk;$xmJz=YKR$jdV^JMZVyGf!QV@?!FW*q+-rJMcu1H^Sn#heOs2B6Hd5A~ zSHeJ_$nPdrDNJl#b~a8>QNm+hp3bv`ZQ0lB^dk+^xG72XwK^)Iq{6Hx=p9Kz!btt$rGjO?^|L5`7sjf$I3Zr z#R*CAnSg1TtsP*XSZfGJ%s&w69r*GH8|f!a9uX3{rV$GgT5_l*n;LppA)D?QW?P94 zKGsl)2v1=It*QQUa_K(B4Qgp@#J*8!qWVagMXnALQIYtK=Q9*T>?hf0NYbdn9##Dx z!r&-|2jasDifizAw(TtL|s=Rgs9k2Varbi1SfpVfmpmg<=g@@3>x5T_<^HpP^oc zKK6fxJ`NCG*E~f$sp9|C533qbx~_N%;UYn#DP**rW$ZKc!lB|FnPgGoDUhTb%c@O2 zV|X2AOC@<7+jfe?r(=r48lx*vpN#!hD+UGwEp8t&Bb0gLbN0 zqt#DXt?#>fL@g8Q@mkVj!##OwKpN6Gm&}$7Lddj3 zB_WN3gv=| zuY2#LTAHaAOxZCCp`cNS7}ayDx2TJnpSre7^5v+zIEu#RE2)xZwu8~ds|@*w=uNf5 zSl4J*xQS_49=KL)MiybFSIpitnpAB$|EP>!soPZqjL@*Ca@@y2_~&+QYryNiFR z%v|V*+o^<3oh`kZ`iXnSMq$MjSj!`SzS~A|ky83NV5b;v$0pKWc8Q<}M10nbJNJ3WPSp{JmoQurFrxJM~hc+JZiXKlJFiR0>|m@ zQ`AoqO@24c8{3tHz@AF*J1CSpomH~t-euDmp z+Wa$Gy|{H#_v_MH_2qEWW%;99k7j@6Uw?XbcB^wFHCMAhpTv2!M%C#lI8 z)&VLOg@dpTo005M5pD%<$}!WHCmFy9tz%5Z%g=TQyrYI5Qx%q9d{b{@bZ_G&)@GkG zKe2poBWEa4f~{Nm2hvTE=Z)&IxiwA; zT;oI&^kX!&;*!WidU@|+`|3Nj^gaEPDv*+~tjHQ-otl09ef{xsqal)Gu~v-9`3bPG z`H8Tx#-C)xwVK5|J;g8nO0MBb3m~P1FeUZ`CHDVpvXWX~achK;w4IOm2#**B2=7i?ir$p8BelYA3) zSn=pNZpK*=IsP!B3rZAA^c0?x3Wrnhx1Ib~&boe_!KhpZ=yhmL7O`!KU?@)6>A{7R zLsAU8>A{MWbDl4pD8r05BnAUL8q$X41p zv)WZEer5|FumaoDw4KMewG=AA^wY}q=$gg%b1x&L63WbEC4sT3qf%)@QfXE8knC8~ z7yY}gVHpXvMBjO{_yr@ODtAAC$CvFs=itPg4%^^&L9(^b>aN9#9A00UBe{woJ%#u3 z>U*j{TR4CqIN^)Ju|ObO{-<7fRBxm5SFCi2e3*^Q8|BNs@+gZMKu zdR0!BYSCFjOV%SIQS)bqWq?fk?+rEC)_%$NwndNmlYPXlL)UtOc}NGrpW%lXif~nb zVE{tuS5Lxn({eL+$m*TawN9f;i4(?wZgH>^`dF;9n!LCxMm;qTH)Nqe$h1f-ssq6yJn16@;O+v0qBqYKKuN` z72gf)hzC9|JsV?f^}p!y{n-qU|60LrNO}e4eLK7LDaR$Ct`{P+oYC zxQ@t=V5g&VR0j3o|_L=dO);5IMSR3OgrZs3j4uyd;$KdN8$w~3o-rEV{VK%jg0nh(d*VT zFBflB;+w>p4(gU=oETi#heIBfbeMHjm6UdYUN9!A3%(fCjh;iB$Fhz+PmpgrvS)+0 zj=d}nT_hc7$815hj%9RdI0{~Pl*@w!EOAC;ktW*xvLubN!#WK6sFyGaXLi8?w0^sz z22c&$#Zmvdt;wgyYMQlPQreIXsixGF-3)a#;(tg)iHLIf^L|M663g(4uKj>>W{0Bk z?*R#N5nO92{NHDdc3m}%HKrj@zoRNN22J-ey{Ba}8(tpv&}mp`X$M)o$1`O&|6}W= zfSD`0Daq|4^eObT04EOa8VetpBbeN4IuXUtOSxbyS47zhqs{dZ8zZhY#oW)fxN2xw zS=if79lCdp*m1`f5GOiH9MDcs0L3mLKLSb zpiLWk=~{OQD6?;qD2cfvJjySaibE#%>Dz8AK&$k6BRO^%OAu^E(`ka~y{{}QCx$Lj zWNki7?ZH^!TS)249o5}$<)?1HTrt|7?Y}ixbX#<5LVn9~VQ=p9PhS^`3tP1tRw%s7X7neKRxo!|qDvqBB{-MWZm|Bo#tVf016y8~=%zbWxJi-K{ai1~Bcj{HmB-h|hezND;sUjC zH##pJFJ0i6Yc?4@&y3j#@ zIhuqOLMi*Jx%*?%Z?t7$Vas#1W#YN?c44n9!=7i;)i<g1w8!29CRbISS4hZnI0wnZTP z1(?e|BYXn=4JbcLKJ~RTAbLpSXWZ!0P;yIMT%rF^?iY*iNM; zRR#!mt$VRM>I@WcCc1x>e>5ci6b*D=z#+VwC^(GQlLr!P+bUpru&3U|k_P_Qll)_D zn$@Id%|jE_-zMj%jsw96&GK}<>c!^7)q=ek`#3!sm*2Zoc1l8`rQHgFH@Y}kVE@CA zzZFqgMo*~-d<)gDN4y%B7a=?Dl) zS9(W5iqer@l-_$6@IL|Xy}s}Ft@Zt9WuG&%&oeW7X7-+aR+6(v!aVGwpjflpe&8xa zPnyjvy&N5{xA8%3m$9@b-W<8VF?{kraiqs%Bn^+EMP z4LPg33xn$V{L-|<`dP1RW4E`|U*781)yWmBp68^ot8@!>--#dLQk+2{JEKxx$d@fB zhtG?si=!QO#^?iW}*W!~sclyC8S3SQW zvs0sI|76}yMYJB*kgaTp7ILUsX5VFOI;3br|A%+Ejt^4f%Zc&}cU>2b$^!Y!Klx)eR{IAw!k0WP$#orKdW~!>8VqklyW^z ziyt{cJtUIk{;<>k{+h3v<-&pm<4N+@uI_f3^j@X>UZ+8G)MIZHG6m3mk7O5z>{I%1>n`kgud*zL5rqCiUjuA+BlxxuGj!Sh*dU}~&;drcebMl^ZP-M#V`sR@2j>V2H(m`91m zaR#%XQTB?Cg59Ub#DSBsMQyr^_Eoa=N;P^N48^er#a2Iqx#xLTNA}-ajS+el%sX;0 zHGeSYln-5K4jWLjqZ-SN@ldLjb2}Sk(qFwM+V*CWAkZpjIOIeSY(n=%SE_zPCejb& z_cVWsYC|*p7!>renQ$5xo$KBbzq`ieBdQ`v-S_MAmPE;O$`;=eh6CR#K17Q%VBr=< zXCfb=s}n?v^K@CiIL<UEm2YZ4aUB4Ql3ZInfzfihFBJWQXdiHUqaK@7;T=I%?L*2z?^b zrUCv`IB6LuNqKm!@gDz(MR<6|otq^2!#6qIOz|b|`5HkfL(N>}gBG^K&58mH(L zL-AgWw{2ZgH(Op4Jn;6D?{5-@doky~rpq^{LZ`k^4{-S~9uA7Lw=Ryj zPT?3BgfSzDE{>uPHc2RoF*sAIH>-0DMcRfSC8@uB_)Bc;FR^au)@sD`FrBM~BX#R! zF0*&0(7pow2wh8w;A4|FKS!!R4##^H)5yQ4aiww$sqjZ3C20*JKgT1izLelURLdV` z-oFI6hi;AIs>56ENA~k7uZ?}ZW1 zIqVe#2kkk1u8y7YM>DdvD;3wZqlve4P1@3kr?@O4ze?+mNQEPDtDx6~J19ju9-=|{ zTUxKk)rxi>TSX=ZdJ&tF%YZs$wu^toqYINslH=Mam$_At?AK8GUmhL0GJdhR$s$;i z%<(Yj1RsrKllSzLXjq-}*pP&i5*=+QCw}x(?Mj&bW#7HH9E%!a-Kog{EBsXs0ykIs zKG$upFY)G&?cOrmEm_WvGx-H+z66!geo(GGDLW}c8vQ^=7zWbDM#z5=HABcuasyAb z@A+|5ev-~UN~>kqNXazCJ?z+jyq<5Ys{Xo z++eS~l=TX&jGQd$2JkJyjjYeTcC;;yh1+atq1K?zY7z(Z^Cvy|K! z(3Nv*Gb2I|G#C`ia(s#^nq17*5QuoAr)Yh3@Y{^F*z^^m+lh+((W%m~=&qpB7fV`- z#iA<3q76S+)QsC8Pkwo75XJS$3{(XdzS%F0eZW*l+@vY(k@=l_gyZrnhwXsDS<*cO8w@5+I&e0a|Bjn#VLG}kq)oJ(Fl z#YDDApZ2$0&2nkU*30MuxfH)+zlOi;*BWMy4y!WfA*Et@O}%7O^0IpK7mOSq{eZDv z&G6nrn8@mpY>SPv=c~)NNZ&Uf=EHAAW$7F}D2!x^b>L<#4SBN{`n{DOjW zRav3HqE?wUtmjqlt2VvWt0x6A^)fH<%6;w4IO7|1%3-Nu(jM<&siUye7lE4tL0i;K z9-)^~_oXZt7>5@T>B?3*BmVCgdN;JQd>f|uH}5<#GEGJ5Tv51xEAyRbCdXZ(`w*%7 ztWIvA6iAMH!1I!(=a}rsP5z0f$m?5*tikJwc?Z+<@~;);M%j}USwrq*8GQ^YHK>f< zCn7I?$>qg3VX&)^;^VJNx0(3VN2^*fXYzI0;ys@mMP}hceBbwEc3}niCX_GJsm#cz;idn6FtgHqE>LCWv*mp7J5N(>upMJmuahwHG%w!%=KWnk*r<6 zeX#8AwPxZb`WsE+H=1}9oX8c5!zjiBDaPX{#v^{8lbeawJBZdl|30hr^zUKP4H<<3 z8rYPPw^%o?%P+m0^X>k1%Bj<87xF@<`R$Jy3Rag@4d+8pq|Yr!DXwr9TJu*Zx(r{2 ze6xb%)8eNw963KkB6YX@h?sXIkMnN9%IjL3L9Ncggd=BJefv{RC*W35p)jxeCV>z|F3FW&7#Zr4c0-7ye_h`aoBGa_tiwSJE$6$uQFTSXx zdOYE77d5hlM`Q+6RG z&Plw>XY?`me9?mj6szQX`CX_L+s>n$?Xn0%ktCLrr!NW~h0F;*cljvnqoZW}#HFhs zKgck0YW^^{V~E$HYbpt{@O*Ccvp#AwSXU?VkaIz-2+a>g)US9(dczh}#~(1Yrc|Yx z^Qg}CAxJBvy;`eES%(Jug(6OVjCcR|>M7YOTZy?;ffhx~3++7Wa3$uUF;r)`&rvw% zL4B~J&qLplod!>q?s6-HB>|EqItRykkx4 zwYPaSLtZ&B;Cfw~{)^3*Cjp{XGd@LKiAOjHJO#7=3USYCD~2 zUCt!4jjmuGe50s$Svd3i$YgqzTAcsv@*7GB-qo-G1ha$n$d$+Du~AX@GL$=nM3n(8 z_;^nXe&l(H@BLI@_ribeyc)S%W3ll}XeH=5ZGCg2=kweeK4TGgg!!eszy=hpp?jypnGo zVjOtOpXivQP55$`mtNLhTMdqtpnn77$t5R=uH#san;_Z62Hb@_g|~Rps{MBx+Z)Bw zm4gW-Z|^1E@+Dnd(haDRQXL`NU+devkuCm_pgfSqo-l8iY;f=6=9E;<+s{m@GX6HK zy!V7%%;=~XVORPn#hFx@Ebhu!GTFJ}s;ak&+we5mm8oUCNjD4lJdwy-_5>-rF)vG4s2F}h7cO$%44l;FS)l`n(uV7{*tG+daXkfWr%Z} zCX|GCOsu%RxThmJa&?cQ7@HYueG!EL%@_v$xXUJbmsrFGn!s^3JKf^M*fs$Z@NoDxqjdvd_!_+rRK z(e_z+^%V1R>J4jJ>(WgR;A;x`vih=UUrBv-{H27SzIYQlnqus8j|jS0)73B8HVI#T zM0yCBz4P>`DfObeKi8%~K!5C%hL3`hgk~01x_1VHcYqqcn@pivdJ@yzZB^z)RDnEk z7Z0HotdC*)n4p%aM`Tg#7>OrF?ALr@`3j(eA(w)eFjT~Nq}GWwt6|qb8SD$ z@@$Gx7wD=}=(fG1smN#7d*9Y#LTrwf1anp1Oil<<9puxTb3 zIJB9qR_(=`Z8kAk|AsqGqbfy}Y7ysMx@YNZjY-_egI*FHRRfgZTF&#?gIDlfd>{LW z6jQ_+^;ok&1%-FCYKf6uHSmAG(I&Ut&I*?Dal@#%`+AlQZC#;c72@wd+>0y5`Mf|4 znjM)GmT$?lQ*b~%5E#0y5MTGU*m{>uw6s{Lrf2>#NkDcZ`nyr1QX_jKu_=oah11($ z_Okme9QH_Olv?y@wcJu!@8j2oH4?O{D91c}(P8e#38N{G-@2(|c8hZ-80d{C%LqI8 zPjhCTC4k00Ek7K&+5jp}$+E>6bFBsypZ?X5x-{CrV>EQ;nq9qLWbnrJmq`98UFf$m zKUq}uzGJS&&>1PWf}_UQpT2QFUQ(P5KltKOv~MINWW12ZBLorh?br|&R~#BIddXEk z^0rRWWNJe;@A0FVKp)Ry2CCIBk9|9?#h5qjwoWhODgSC_grL@TLupOD!8n^_*5&C7?$upS1M8tf#Md=Nhum&Y zelhq?7;mOUL5K(ODETKH?Mlezij#7+4Vfj z*q-w6_L;c)wD*xjeHz2}_URAeZ9bK}2Qz14{xA>lRAZpW=BuoZMHNUvmtHkYiRg8M z&5M z5bFw}uK@h)dJIa9?&O$#}!qdj>2I#_4DwhGHsTy?9i zPPShePmB=?5_J|_2mV4-5xaf&c1M*VTNzsdDDlpkMpImEZ~~g9Xtu02H7}d@L^XU@ z;SC2kn@3Pn|0m*UxL>{=MhK4(vY+O+Gp;ZDg+L4(!1Q#fU>&?^jnjq$X{EDuW!Ncds!LJWc<`YBG&ztnVAGXcN#Wf22-Q z7#+{MpcAILh1s}S1PD<@FP=g&D=R=>?MU}xZeb@@ZsBk>1dhF3v5uOzknK^`ru-zCY{JFcn7tao^BEU^W1bF=brakaqNTgm zgsw_z-3+UJ#Xuv@0}6wyMw(1>Lq!&p9^O?#nI9qxf3(WAI#Sv0N8S1rQn3x~J=7|( zr$N^SRBX+>{-s%hfz4JXR_stgX*-(NJ7Z^bJqRV)5r|T~ribWSO)mMk@K}gBiRG8A zyxOpYFO@erLFmX3ny_Le{u1Eb_v8B~q`hHA^Xb<9z9^CFQ!l$d8HVjZsK89@AB|h< zZh!xxEatb;{K+-KC|SwL*5Xd-)jMmHN`y2n~T$!o&jWFtEEnMIhZxvL$FVMR$3 z^Q0eIYf<}&KJ(l=jy4`iwnKNm@Z>lc+6S9RLJDqHEQ$9CADmeN$dS?dL(Iq!gCye5_VVhhEi#F05 zIaFM6O>}nZN6fgwlVmshX9pnpLC@(I8&+>*Zp3)%Nt>xjEzDAb=GuKz?dUU82N!GU zUBbdTprK(TnW*T2*?})Fw5t^q7C`Q8+$v#)iQ~rPJH)MVv-i9~S5?9=%JC*cZMnJg z96D;s+sJmKY6WHGuzOd#dBSFCV&#>eJ!cOFQD4uN7qPUeP;Xyc#I^ohxS=|9!jXH=hmDe+G^B{Ut{qw?^000u z#tGmwL~mT;jBjc?ZC<2$s$jCUbC;-B7x=VgCDHXJd6D;4az6R<^N@i05&2*x=N+#} z1@F{jqJ3tcpU~uW>e{3?L~1R%eOBq(A`9XC>!IJj?7laJhxlbU>xOp?##+%t)V!W@ zTf~)4QCFaKm!D$lclM#Xw_Tfwy&oJ-k#DuvX~;aLmlnEKgx_7E^w{41eflf?^vLmwx3EJ)M_VA#C;v&lbe@b`W4{cX-%=r!gziYw* zp?~iRfW;H@>Vk#OE0K@@8xix$I{=#sU`OhoUUMsA$LDu7*z!Q*I*#`pP}toEz!1Lw zmH^xC-}4FuZeq7K_&@h9fWiJ_bAmFB8ntG=YpVyGC%BNGp&#PaIB}||F|1XxI*J-b zO{abV^wN)hgyuQHGe@@8uYN`~A755z7Qf*D*A9I}asSiLoAuuZO9Q^JiqSM`@N5=q zfFr07?_`cH5f9n2SwxKT5z2(=qWe_FxW^4#|#DtdNHV}AA1E~3B&q&vnIF`sWV z;k{)YVQHaRfYDSR%jcR6Pbn9_f!eDN+P>U+Imb_l3sm)EOVIgsIV}s~MWWJe;Ps5x z#Z;~xG1}@S-Esnji~~BW>TkT)H1zB8|9Vg-*Iwk6IzQ1`CR*J;ait!oAjezff3XDE zpCbm$&$*5%K)~lFqJ9^bl(p5bUUHVJA}-?dXJ6Gy^an4=_&v!G+;G zFeo1%1T4f4;SmN>{8*qW(gJ1n|Ao{rLu1wbya}uwxj4F_5l9y>1S<^IvK%qM))ZI; zz0gSwGb`jDBA=_v-x~4P#l{tI82pdP$LhS20}3#I4YVUd8;Jp1q8u#HzZ(LZ1D5N6 z?V<$=f%%;~=OOH|rV14P57P(#YwBzl+iHM$|5*&!?#pVk1Dj*~Vf3C`Zi%oq0~QoMJ^=^-2c|{t{2~lHzrgv=FR~ZR-w=7BbEd!rMBxG=0LL;R5P^$( z!sj`t;6+a6JO_hbqE5kc2;`zNKEd;12 znB4h=4~p$8A57t*4^W^0(BLU?>)c zB^W@$03INIAptOq?}FfP2p9(8Kd19FP!@(I7(j5r3xdMHFd+a35I-CWT!qgGn-&&= zpA(c12CS5P!WSnPKObOpK+mw^W1YZ7H@LAq!1{{wt^f|@Ul4Yg$ASRF-{t;XT4fzw z0h Date: Thu, 28 Nov 2024 13:25:56 +0100 Subject: [PATCH 083/338] Use the `stopEvent` helper function everywhere possible --- src/display/editor/highlight.js | 21 ++++++++++----------- src/display/editor/toolbar.js | 8 +++----- src/display/editor/tools.js | 4 ++-- src/pdf.js | 2 ++ test/unit/pdf_spec.js | 2 ++ web/app.js | 7 +++---- web/grab_to_pan.js | 5 +++-- web/pdf_viewer.js | 7 +++---- web/pdfjs.js | 2 ++ web/text_layer_builder.js | 5 ++--- 10 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index d7df763af48af..f709285ef93b5 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -28,9 +28,9 @@ import { HighlightAnnotationElement, InkAnnotationElement, } from "../annotation_layer.js"; +import { noContextMenu, stopEvent } from "../display_utils.js"; import { AnnotationEditor } from "./editor.js"; import { ColorPicker } from "./color_picker.js"; -import { noContextMenu } from "../display_utils.js"; /** * Basic draw editor in order to generate an Highlight annotation. @@ -778,22 +778,21 @@ class HighlightEditor extends AnnotationEditor { const ac = new AbortController(); const signal = parent.combinedSignal(ac); - const pointerDown = e => { - // Avoid to have undesired clicks during the drawing. - e.preventDefault(); - e.stopPropagation(); - }; const pointerUpCallback = e => { ac.abort(); this.#endHighlight(parent, e); }; window.addEventListener("blur", pointerUpCallback, { signal }); window.addEventListener("pointerup", pointerUpCallback, { signal }); - window.addEventListener("pointerdown", pointerDown, { - capture: true, - passive: false, - signal, - }); + window.addEventListener( + "pointerdown", + stopEvent /* Avoid to have undesired clicks during the drawing. */, + { + capture: true, + passive: false, + signal, + } + ); window.addEventListener("contextmenu", noContextMenu, { signal }); textLayer.addEventListener( diff --git a/src/display/editor/toolbar.js b/src/display/editor/toolbar.js index 1d67778197096..b6a71f51a0b2c 100644 --- a/src/display/editor/toolbar.js +++ b/src/display/editor/toolbar.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { noContextMenu } from "../display_utils.js"; +import { noContextMenu, stopEvent } from "../display_utils.js"; class EditorToolbar { #toolbar = null; @@ -81,14 +81,12 @@ class EditorToolbar { #focusIn(e) { this.#editor._focusEventsAllowed = false; - e.preventDefault(); - e.stopPropagation(); + stopEvent(e); } #focusOut(e) { this.#editor._focusEventsAllowed = true; - e.preventDefault(); - e.stopPropagation(); + stopEvent(e); } #addListenersToElement(element) { diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index 0f65235b59722..b8ce3bec393b5 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -32,6 +32,7 @@ import { getColorValues, getRGB, PixelsPerInch, + stopEvent, } from "../display_utils.js"; import { HighlightToolbar } from "./toolbar.js"; @@ -516,8 +517,7 @@ class KeyboardManager { // For example, ctrl+s in a FreeText must be handled by the viewer, hence // the event must bubble. if (!bubbles) { - event.stopPropagation(); - event.preventDefault(); + stopEvent(event); } } } diff --git a/src/pdf.js b/src/pdf.js index ecb6606dd9b14..b94e30193af62 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -61,6 +61,7 @@ import { PixelsPerInch, RenderingCancelledException, setLayerDimensions, + stopEvent, } from "./display/display_utils.js"; import { AnnotationEditorLayer } from "./display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "./display/editor/tools.js"; @@ -124,6 +125,7 @@ export { RenderingCancelledException, setLayerDimensions, shadow, + stopEvent, TextLayer, UnexpectedResponseException, Util, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index f64b97a36bead..35681a52bdcca 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -53,6 +53,7 @@ import { PixelsPerInch, RenderingCancelledException, setLayerDimensions, + stopEvent, } from "../../src/display/display_utils.js"; import { AnnotationEditorLayer } from "../../src/display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js"; @@ -102,6 +103,7 @@ const expectedAPI = Object.freeze({ RenderingCancelledException, setLayerDimensions, shadow, + stopEvent, TextLayer, UnexpectedResponseException, Util, diff --git a/web/app.js b/web/app.js index ba06bb5e968c4..68d9e00b84130 100644 --- a/web/app.js +++ b/web/app.js @@ -53,6 +53,7 @@ import { MissingPDFException, PDFWorker, shadow, + stopEvent, UnexpectedResponseException, version, } from "pdfjs-lib"; @@ -716,8 +717,7 @@ const PDFViewerApplication = { if (item.type === "application/pdf") { evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === "copy" ? "copy" : "move"; - evt.preventDefault(); - evt.stopPropagation(); + stopEvent(evt); return; } } @@ -726,8 +726,7 @@ const PDFViewerApplication = { if (evt.dataTransfer.files?.[0].type !== "application/pdf") { return; } - evt.preventDefault(); - evt.stopPropagation(); + stopEvent(evt); eventBus.dispatch("fileinputchange", { source: this, fileInput: evt.dataTransfer, diff --git a/web/grab_to_pan.js b/web/grab_to_pan.js index b59e064182b81..05316a024975c 100644 --- a/web/grab_to_pan.js +++ b/web/grab_to_pan.js @@ -14,6 +14,8 @@ * limitations under the License. */ +import { stopEvent } from "pdfjs-lib"; + // Class name of element which can be grabbed. const CSS_CLASS_GRAB = "grab-to-pan-grab"; @@ -131,8 +133,7 @@ class GrabToPan { capture: true, signal: this.#scrollAC.signal, }); - event.preventDefault(); - event.stopPropagation(); + stopEvent(event); const focusedElement = document.activeElement; if (focusedElement && !focusedElement.contains(event.target)) { diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 9db9c6adcfdc6..6f05d56fe7c09 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -35,6 +35,7 @@ import { PermissionFlag, PixelsPerInch, shadow, + stopEvent, version, } from "pdfjs-lib"; import { @@ -748,8 +749,7 @@ class PDFViewer { this.#getAllTextInProgress || textLayerMode === TextLayerMode.ENABLE_PERMISSIONS ) { - event.preventDefault(); - event.stopPropagation(); + stopEvent(event); return; } this.#getAllTextInProgress = true; @@ -786,8 +786,7 @@ class PDFViewer { classList.remove("copyAll"); }); - event.preventDefault(); - event.stopPropagation(); + stopEvent(event); } } diff --git a/web/pdfjs.js b/web/pdfjs.js index e9b956dbdf401..2203abc42498c 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -51,6 +51,7 @@ const { RenderingCancelledException, setLayerDimensions, shadow, + stopEvent, TextLayer, UnexpectedResponseException, Util, @@ -97,6 +98,7 @@ export { RenderingCancelledException, setLayerDimensions, shadow, + stopEvent, TextLayer, UnexpectedResponseException, Util, diff --git a/web/text_layer_builder.js b/web/text_layer_builder.js index 1d8e2440a507b..f642382b60643 100644 --- a/web/text_layer_builder.js +++ b/web/text_layer_builder.js @@ -20,7 +20,7 @@ // eslint-disable-next-line max-len /** @typedef {import("./text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */ -import { normalizeUnicode, TextLayer } from "pdfjs-lib"; +import { normalizeUnicode, stopEvent, TextLayer } from "pdfjs-lib"; import { removeNullCharacters } from "./ui_utils.js"; /** @@ -162,8 +162,7 @@ class TextLayerBuilder { removeNullCharacters(normalizeUnicode(selection.toString())) ); } - event.preventDefault(); - event.stopPropagation(); + stopEvent(event); }); TextLayerBuilder.#textLayers.set(div, end); From 2e4c2670ab73868fcedf330977861a0cad36cfc7 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 28 Nov 2024 16:43:48 +0100 Subject: [PATCH 084/338] Very slightly improve the performance when searching in a pdf It helps to slightly decrease memory use in reducing the number of created arrays. In searching for "a" in pdf.pdf, the time spent in getOriginalIndex is decreased by around 30%. --- web/pdf_find_controller.js | 45 ++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js index 11e6b73947b39..fc6250c65c854 100644 --- a/web/pdf_find_controller.js +++ b/web/pdf_find_controller.js @@ -184,7 +184,7 @@ function normalize(text) { } let normalized = text.normalize("NFD"); - const positions = [[0, 0]]; + const positions = [0, 0]; let rawDiacriticsIndex = 0; let syllableIndex = 0; let shift = 0; @@ -201,7 +201,7 @@ function normalize(text) { const replacement = CHARACTERS_TO_NORMALIZE[p1]; const jj = replacement.length; for (let j = 1; j < jj; j++) { - positions.push([i - shift + j, shift - j]); + positions.push(i - shift + j, shift - j); } shift -= jj - 1; return replacement; @@ -216,7 +216,7 @@ function normalize(text) { } const jj = replacement.length; for (let j = 1; j < jj; j++) { - positions.push([i - shift + j, shift - j]); + positions.push(i - shift + j, shift - j); } shift -= jj - 1; return replacement; @@ -233,13 +233,13 @@ function normalize(text) { } else { // i is the position of the first diacritic // so (i - 1) is the position for the letter before. - positions.push([i - 1 - shift + 1, shift - 1]); + positions.push(i - 1 - shift + 1, shift - 1); shift -= 1; shiftOrigin += 1; } // End-of-line. - positions.push([i - shift + 1, shift]); + positions.push(i - shift + 1, shift); shiftOrigin += 1; eol += 1; @@ -261,7 +261,7 @@ function normalize(text) { for (let j = 1; j <= jj; j++) { // i is the position of the first diacritic // so (i - 1) is the position for the letter before. - positions.push([i - 1 - shift + j, shift - j]); + positions.push(i - 1 - shift + j, shift - j); } shift -= jj; shiftOrigin += jj; @@ -270,7 +270,7 @@ function normalize(text) { // Diacritics are followed by a -\n. // See comments in `if (p6)` block. i += len - 1; - positions.push([i - shift + 1, 1 + shift]); + positions.push(i - shift + 1, 1 + shift); shift += 1; shiftOrigin += 1; eol += 1; @@ -296,7 +296,7 @@ function normalize(text) { // The \n isn't in the original text so here y = i, n = X.len - 2 and // o = X.len - 1. const len = p6.length - 2; - positions.push([i - shift + len, 1 + shift]); + positions.push(i - shift + len, 1 + shift); shift += 1; shiftOrigin += 1; eol += 1; @@ -308,7 +308,7 @@ function normalize(text) { // white space. // A CJK can be encoded in UTF-32, hence their length isn't always 1. const len = p7.length - 1; - positions.push([i - shift + len, shift]); + positions.push(i - shift + len, shift); shiftOrigin += 1; eol += 1; return p7.slice(0, -1); @@ -317,7 +317,7 @@ function normalize(text) { if (p8) { // eol is replaced by space: "foo\nbar" is likely equivalent to // "foo bar". - positions.push([i - shift + 1, shift - 1]); + positions.push(i - shift + 1, shift - 1); shift -= 1; shiftOrigin += 1; eol += 1; @@ -331,7 +331,7 @@ function normalize(text) { const newCharLen = syllablePositions[syllableIndex][0] - 1; ++syllableIndex; for (let j = 1; j <= newCharLen; j++) { - positions.push([i - (shift - j), shift - j]); + positions.push(i - (shift - j), shift - j); } shift -= newCharLen; shiftOrigin += newCharLen; @@ -340,9 +340,15 @@ function normalize(text) { } ); - positions.push([normalized.length, shift]); + positions.push(normalized.length, shift); + const starts = new Uint32Array(positions.length >> 1); + const shifts = new Int32Array(positions.length >> 1); + for (let i = 0, ii = positions.length; i < ii; i += 2) { + starts[i >> 1] = positions[i]; + shifts[i >> 1] = positions[i + 1]; + } - return [normalized, positions, hasDiacritics]; + return [normalized, [starts, shifts], hasDiacritics]; } // Determine the original, non-normalized, match index such that highlighting of @@ -353,25 +359,26 @@ function getOriginalIndex(diffs, pos, len) { return [pos, len]; } + const [starts, shifts] = diffs; // First char in the new string. const start = pos; // Last char in the new string. const end = pos + len - 1; - let i = binarySearchFirstItem(diffs, x => x[0] >= start); - if (diffs[i][0] > start) { + let i = binarySearchFirstItem(starts, x => x >= start); + if (starts[i] > start) { --i; } - let j = binarySearchFirstItem(diffs, x => x[0] >= end, i); - if (diffs[j][0] > end) { + let j = binarySearchFirstItem(starts, x => x >= end, i); + if (starts[j] > end) { --j; } // First char in the old string. - const oldStart = start + diffs[i][1]; + const oldStart = start + shifts[i]; // Last char in the old string. - const oldEnd = end + diffs[j][1]; + const oldEnd = end + shifts[j]; const oldLen = oldEnd + 1 - oldStart; return [oldStart, oldLen]; From 2c2f1fe87f8c21d1a7b4d450f4801aa74c78414a Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 29 Nov 2024 16:22:44 +0100 Subject: [PATCH 085/338] [Editor] Allow to abort the current drawing It fixes #19126. --- src/display/editor/annotation_editor_layer.js | 6 +-- src/display/editor/draw.js | 43 +++++++++++------- src/display/editor/tools.js | 9 +++- test/integration/ink_editor_spec.mjs | 45 +++++++++++++++++++ test/integration/test_utils.mjs | 9 ++++ 5 files changed, 91 insertions(+), 21 deletions(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 72ee6c57a5579..fbc5bc52869eb 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -820,14 +820,14 @@ class AnnotationEditorLayer { this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); } - endDrawingSession() { + endDrawingSession(isAborted = false) { if (!this.#drawingAC) { - return; + return null; } this.#drawingAC.abort(); this.#drawingAC = null; this.#uiManager.disableUserSelect(false); - this.#currentEditorType.endDrawing(); + return this.#currentEditorType.endDrawing(isAborted); } /** diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index f9cf60fa95005..553c5708fd343 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -739,13 +739,13 @@ class DrawingEditor extends AnnotationEditor { return; } - this.endDrawing(); + this.endDrawing(/* isAborted = */ false); } - static endDrawing() { + static endDrawing(isAborted) { const parent = this._currentParent; if (!parent) { - return; + return null; } parent.toggleDrawing(true); parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP); @@ -756,20 +756,31 @@ class DrawingEditor extends AnnotationEditor { scale, } = parent; - parent.createAndAddNewEditor({ offsetX: 0, offsetY: 0 }, false, { - drawId: this._currentDrawId, - drawOutlines: this._currentDraw.getOutlines( - pageWidth * scale, - pageHeight * scale, - scale, - this._INNER_MARGIN - ), - drawingOptions: this._currentDrawingOptions, - mustBeCommitted: true, - }); - } else { - parent.drawLayer.remove(this._currentDrawId); + const editor = parent.createAndAddNewEditor( + { offsetX: 0, offsetY: 0 }, + false, + { + drawId: this._currentDrawId, + drawOutlines: this._currentDraw.getOutlines( + pageWidth * scale, + pageHeight * scale, + scale, + this._INNER_MARGIN + ), + drawingOptions: this._currentDrawingOptions, + mustBeCommitted: !isAborted, + } + ); + this._cleanup(); + return editor; } + + parent.drawLayer.remove(this._currentDrawId); + this._cleanup(); + return null; + } + + static _cleanup() { this._currentDrawId = -1; this._currentDraw = null; this._currentDrawingOptions = null; diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index b8ce3bec393b5..d608324885a28 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -2088,11 +2088,16 @@ class AnnotationEditorUIManager { */ delete() { this.commitOrRemove(); - if (!this.hasSelection) { + const drawingEditor = this.currentLayer?.endDrawingSession( + /* isAborted = */ true + ); + if (!this.hasSelection && !drawingEditor) { return; } - const editors = [...this.#selectedEditors]; + const editors = drawingEditor + ? [drawingEditor] + : [...this.#selectedEditors]; const cmd = () => { for (const editor of editors) { editor.remove(); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 67fe9fccfbdfc..3375b58463502 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -26,6 +26,7 @@ import { loadAndWait, scrollIntoView, switchToEditor, + waitForNoElement, waitForSerialized, waitForStorageEntries, } from "./test_utils.mjs"; @@ -567,4 +568,48 @@ describe("Ink Editor", () => { ); }); }); + + describe("Can delete the drawing in progress and undo the deletion", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the color has been changed", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + + const x = rect.x + 20; + const y = rect.y + 20; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x, y); + await page.mouse.down(); + await page.mouse.move(x + 50, y + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + + const drawSelector = `.canvasWrapper svg.draw path[d]:not([d=""])`; + await page.waitForSelector(drawSelector); + + await page.keyboard.press("Backspace"); + + const editorSelector = getEditorSelector(0); + await waitForNoElement(page, drawSelector); + await waitForNoElement(page, editorSelector); + + await kbUndo(page); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector(drawSelector); + }) + ); + }); + }); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 4cdc400bffe34..65213567aa6c9 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -773,6 +773,14 @@ async function switchToEditor(name, page, disable = false) { await awaitPromise(modeChangedHandle); } +function waitForNoElement(page, selector) { + return page.waitForFunction( + sel => !document.querySelector(sel), + {}, + selector + ); +} + export { applyFunctionToEditor, awaitPromise, @@ -826,6 +834,7 @@ export { waitForAnnotationModeChanged, waitForEntryInStorage, waitForEvent, + waitForNoElement, waitForPageRendered, waitForSandboxTrip, waitForSelectedEditor, From 41bfcd6d7d53de10e81b3590eca44b3a65b61af9 Mon Sep 17 00:00:00 2001 From: Jarklee Date: Sun, 17 Nov 2024 18:29:01 +0700 Subject: [PATCH 086/338] Fix #serializeBoxes bug inconsistent with deserialize function for highlight editor. Add test for quadPoints order while serializing. --- src/display/editor/highlight.js | 11 +++++------ test/integration/highlight_editor_spec.mjs | 6 ++++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index f709285ef93b5..52b139d2a2fd9 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -749,15 +749,14 @@ class HighlightEditor extends AnnotationEditor { let i = 0; for (const { x, y, width, height } of boxes) { const sx = x * pageWidth + pageX; - const sy = (1 - y - height) * pageHeight + pageY; - // The specifications say that the rectangle should start from the bottom - // left corner and go counter-clockwise. - // But when opening the file in Adobe Acrobat it appears that this isn't - // correct hence the 4th and 6th numbers are just swapped. + const sy = (1 - y) * pageHeight + pageY; + // Serializes the rectangle in the Adobe Acrobat format. + // The rectangle's coordinates (b = bottom, t = top, L = left, R = right) + // are ordered as follows: tL, tR, bL, bR (bL origin). quadPoints[i] = quadPoints[i + 4] = sx; quadPoints[i + 1] = quadPoints[i + 3] = sy; quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth; - quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight; + quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight; i += 8; } return quadPoints; diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index d99bbf8a5a160..c6cbd1f8a30c3 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -1277,7 +1277,8 @@ describe("Highlight Editor", () => { await page.waitForSelector(getEditorSelector(0)); await waitForSerialized(page, 1); const quadPoints = await getFirstSerialized(page, e => e.quadPoints); - const expected = [263, 674, 346, 674, 263, 696, 346, 696]; + // Expected quadPoints tL, tR, bL, bR with bL coordinate. + const expected = [263, 696, 346, 696, 263, 674, 346, 674]; expect(quadPoints.every((x, i) => Math.abs(x - expected[i]) <= 5)) .withContext(`In ${browserName}`) .toBeTrue(); @@ -1312,7 +1313,8 @@ describe("Highlight Editor", () => { await page.waitForSelector(getEditorSelector(0)); await waitForSerialized(page, 1); const quadPoints = await getFirstSerialized(page, e => e.quadPoints); - const expected = [148, 624, 176, 624, 148, 637, 176, 637]; + // Expected quadPoints tL, tR, bL, bR with bL coordinate. + const expected = [148, 637, 176, 637, 148, 624, 176, 624]; expect(quadPoints.every((x, i) => Math.abs(x - expected[i]) <= 5)) .withContext(`In ${browserName} (got ${quadPoints})`) .toBeTrue(); From 136c1157c5698562e439f3d01e64348ac08186d2 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 28 Nov 2024 18:18:10 +0100 Subject: [PATCH 087/338] Simplify the code to zoom in using a pinch gesture --- web/app.js | 90 +++++++++++++++++++++++------------------------------- 1 file changed, 38 insertions(+), 52 deletions(-) diff --git a/web/app.js b/web/app.js index 68d9e00b84130..ea9ea83bea515 100644 --- a/web/app.js +++ b/web/app.js @@ -93,6 +93,14 @@ import { ViewHistory } from "./view_history.js"; const FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms +// The 35 is coming from: +// https://searchfox.org/mozilla-central/source/gfx/layers/apz/src/GestureEventListener.cpp#36 +// +// The properties TouchEvent::screenX/Y are in screen CSS pixels: +// https://developer.mozilla.org/en-US/docs/Web/API/Touch/screenX#examples +// MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels. +const MIN_TOUCH_DISTANCE_TO_PINCH = 35 / (window.devicePixelRatio || 1); + const ViewOnLoad = { UNKNOWN: -1, PREVIOUS: 0, // Default value. @@ -180,6 +188,7 @@ const PDFViewerApplication = { _title: document.title, _printAnnotationStoragePromise: null, _touchInfo: null, + _isPinching: false, _isCtrlKeyDown: false, _caretBrowsing: null, _isScrolling: false, @@ -2653,10 +2662,10 @@ function onTouchStart(evt) { [touch0, touch1] = [touch1, touch0]; } this._touchInfo = { - touch0X: touch0.pageX, - touch0Y: touch0.pageY, - touch1X: touch1.pageX, - touch1Y: touch1.pageY, + touch0X: touch0.screenX, + touch0Y: touch0.screenY, + touch1X: touch1.screenX, + touch1Y: touch1.screenY, }; } @@ -2670,8 +2679,8 @@ function onTouchMove(evt) { if (touch0.identifier > touch1.identifier) { [touch0, touch1] = [touch1, touch0]; } - const { pageX: page0X, pageY: page0Y } = touch0; - const { pageX: page1X, pageY: page1Y } = touch1; + const { screenX: screen0X, screenY: screen0Y } = touch0; + const { screenX: screen1X, screenY: screen1Y } = touch1; const { touch0X: pTouch0X, touch0Y: pTouch0Y, @@ -2679,60 +2688,36 @@ function onTouchMove(evt) { touch1Y: pTouch1Y, } = _touchInfo; + const prevGapX = pTouch1X - pTouch0X; + const prevGapY = pTouch1Y - pTouch0Y; + const currGapX = screen1X - screen0X; + const currGapY = screen1Y - screen0Y; + + const distance = Math.hypot(currGapX, currGapY) || 1; + const pDistance = Math.hypot(prevGapX, prevGapY) || 1; if ( - Math.abs(pTouch0X - page0X) <= 1 && - Math.abs(pTouch0Y - page0Y) <= 1 && - Math.abs(pTouch1X - page1X) <= 1 && - Math.abs(pTouch1Y - page1Y) <= 1 + !this._isPinching && + Math.abs(pDistance - distance) <= MIN_TOUCH_DISTANCE_TO_PINCH ) { - // Touches are really too close and it's hard do some basic - // geometry in order to guess something. return; } - _touchInfo.touch0X = page0X; - _touchInfo.touch0Y = page0Y; - _touchInfo.touch1X = page1X; - _touchInfo.touch1Y = page1Y; - - if (pTouch0X === page0X && pTouch0Y === page0Y) { - // First touch is fixed, if the vectors are collinear then we've a pinch. - const v1X = pTouch1X - page0X; - const v1Y = pTouch1Y - page0Y; - const v2X = page1X - page0X; - const v2Y = page1Y - page0Y; - const det = v1X * v2Y - v1Y * v2X; - // 0.02 is approximatively sin(0.15deg). - if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { - return; - } - } else if (pTouch1X === page1X && pTouch1Y === page1Y) { - // Second touch is fixed, if the vectors are collinear then we've a pinch. - const v1X = pTouch0X - page1X; - const v1Y = pTouch0Y - page1Y; - const v2X = page0X - page1X; - const v2Y = page0Y - page1Y; - const det = v1X * v2Y - v1Y * v2X; - if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) { - return; - } - } else { - const diff0X = page0X - pTouch0X; - const diff1X = page1X - pTouch1X; - const diff0Y = page0Y - pTouch0Y; - const diff1Y = page1Y - pTouch1Y; - const dotProduct = diff0X * diff1X + diff0Y * diff1Y; - if (dotProduct >= 0) { - // The two touches go in almost the same direction. - return; - } - } + _touchInfo.touch0X = screen0X; + _touchInfo.touch0Y = screen0Y; + _touchInfo.touch1X = screen1X; + _touchInfo.touch1Y = screen1Y; evt.preventDefault(); - const origin = [(page0X + page1X) / 2, (page0Y + page1Y) / 2]; - const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1; - const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1; + if (!this._isPinching) { + // Start pinching. + this._isPinching = true; + + // We return here else the first pinch is a bit too much + return; + } + + const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2]; if (supportsPinchToZoom) { const newScaleFactor = this._accumulateFactor( pdfViewer.currentScale, @@ -2759,6 +2744,7 @@ function onTouchEnd(evt) { this._touchInfo = null; this._touchUnusedTicks = 0; this._touchUnusedFactor = 1; + this._isPinching = false; } function onClick(evt) { From 6dfc61a9c5015c0976e589c202df11d219a3d1a9 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 29 Nov 2024 17:28:21 +0100 Subject: [PATCH 088/338] Build date consistently (in term of tz) when executing some embedded JS (bug 1934157) The date was create in UTC+0 and then amended in using set-Month/Date which take into account the user timezone. With this patch we build all the date in the user timezone. --- src/scripting_api/util.js | 50 ++++++++++++++++++---------- test/integration/scripting_spec.mjs | 38 +++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/bug1934157.pdf | Bin 0 -> 7065 bytes test/unit/scripting_spec.js | 9 ++--- 5 files changed, 76 insertions(+), 22 deletions(-) create mode 100755 test/pdfs/bug1934157.pdf diff --git a/src/scripting_api/util.js b/src/scripting_api/util.js index cd2f2a6b4502b..66f014c50fd9e 100644 --- a/src/scripting_api/util.js +++ b/src/scripting_api/util.js @@ -349,53 +349,53 @@ class Util extends PDFObject { this.#dateActionsCache.set(cFormat, actions); cFormat.replaceAll( /(d+)|(m+)|(y+)|(H+)|(M+)|(s+)/g, - function (match, d, m, y, H, M, s) { + function (_match, d, m, y, H, M, s) { if (d) { - actions.push((n, date) => { + actions.push((n, data) => { if (n >= 1 && n <= 31) { - date.setDate(n); + data.day = n; return true; } return false; }); } else if (m) { - actions.push((n, date) => { + actions.push((n, data) => { if (n >= 1 && n <= 12) { - date.setMonth(n - 1); + data.month = n - 1; return true; } return false; }); } else if (y) { - actions.push((n, date) => { + actions.push((n, data) => { if (n < 50) { n += 2000; } else if (n < 100) { n += 1900; } - date.setYear(n); + data.year = n; return true; }); } else if (H) { - actions.push((n, date) => { + actions.push((n, data) => { if (n >= 0 && n <= 23) { - date.setHours(n); + data.hours = n; return true; } return false; }); } else if (M) { - actions.push((n, date) => { + actions.push((n, data) => { if (n >= 0 && n <= 59) { - date.setMinutes(n); + data.minutes = n; return true; } return false; }); } else if (s) { - actions.push((n, date) => { + actions.push((n, data) => { if (n >= 0 && n <= 59) { - date.setSeconds(n); + data.seconds = n; return true; } return false; @@ -409,10 +409,17 @@ class Util extends PDFObject { const number = /\d+/g; let i = 0; let array; - const date = new Date(0); + const data = { + year: new Date().getFullYear(), + month: 0, + day: 1, + hours: 12, + minutes: 0, + seconds: 0, + }; while ((array = number.exec(cDate)) !== null) { if (i < actions.length) { - if (!actions[i++](parseInt(array[0]), date)) { + if (!actions[i++](parseInt(array[0]), data)) { return null; } } else { @@ -424,7 +431,14 @@ class Util extends PDFObject { return null; } - return date; + return new Date( + data.year, + data.month, + data.day, + data.hours, + data.minutes, + data.seconds + ); } scand(cFormat, cDate) { @@ -605,10 +619,10 @@ class Util extends PDFObject { } const data = { - year: 2000, + year: new Date().getFullYear(), month: 0, day: 1, - hours: 0, + hours: 12, minutes: 0, seconds: 0, am: null, diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 1228e4ff13edf..0a157479b0904 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -2522,4 +2522,42 @@ describe("Interaction", () => { ); }); }); + + describe("Date creation must be timezone consistent", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("bug1934157.pdf", "[data-annotation-id='24R']"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that date entered by the user is consistent", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + if (browserName === "firefox") { + // Skip the test for Firefox as it doesn't support the timezone + // feature yet with BiDi. + // See https://github.com/puppeteer/puppeteer/issues/13344. + // TODO: Remove this check once the issue is fixed. + return; + } + + await waitForScripting(page); + + await page.emulateTimezone("Pacific/Honolulu"); + + const expectedDate = "02/01/2000"; + await page.type(getSelector("24R"), expectedDate); + await page.click(getSelector("25R")); + await waitForSandboxTrip(page); + + const date = await page.$eval(getSelector("24R"), el => el.value); + expect(date).withContext(`In ${browserName}`).toEqual(expectedDate); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 89657327d46e4..9419dafdc5390 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -683,3 +683,4 @@ !issue18956.pdf !issue19083.pdf !issue19120.pdf +!bug1934157.pdf diff --git a/test/pdfs/bug1934157.pdf b/test/pdfs/bug1934157.pdf new file mode 100755 index 0000000000000000000000000000000000000000..f0feacbccbff2a943b1b79d62557af94c4b9d510 GIT binary patch literal 7065 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 LgQEQQlb!zn^mEa6 literal 0 HcmV?d00001 diff --git a/test/unit/scripting_spec.js b/test/unit/scripting_spec.js index 94ed4aa7f8118..9ce2699d48106 100644 --- a/test/unit/scripting_spec.js +++ b/test/unit/scripting_spec.js @@ -245,10 +245,10 @@ describe("Scripting", function () { expect(new Date(value)).toEqual(date); value = await myeval(`util.scand("mmddyyyy", "07/15/2007").toString()`); - expect(new Date(value)).toEqual(new Date("07/15/2007")); + expect(new Date(value)).toEqual(new Date("07/15/2007 12:00:00")); value = await myeval(`util.scand("mmddyyyy", "07a15b2007").toString()`); - expect(new Date(value)).toEqual(new Date("07/15/2007")); + expect(new Date(value)).toEqual(new Date("07/15/2007 12:00:00")); }); }); @@ -630,8 +630,9 @@ describe("Scripting", function () { ); }; - await check("05", "dd", "2000/01/05"); - await check("12", "mm", "2000/12/01"); + const year = new Date().getFullYear(); + await check("05", "dd", `${year}/01/05`); + await check("12", "mm", `${year}/12/01`); await check("2022", "yyyy", "2022/01/01"); await check("a1$9bbbb21", "dd/mm/yyyy", "2021/09/01"); await check("1/2/2024", "dd/mm/yyyy", "2024/02/01"); From d508f2ef5325b6af840817d07234f4b16ca14472 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 30 Nov 2024 12:01:35 +0100 Subject: [PATCH 089/338] Use even more optional chaining in the `src/display/api.js` file This slightly shortens the code, in various `destroy`-methods, which cannot hurt. Also, use pre-processor checks to simplify `PDFDocumentLoadingTask.destroy` in the Firefox PDF Viewer since the `PDFWorker.fromPort`-method isn't used there. --- src/display/api.js | 53 +++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 012e45a6373b4..c8da40b15bdd1 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -655,23 +655,26 @@ class PDFDocumentLoadingTask { */ async destroy() { this.destroyed = true; - try { - if (this._worker?.port) { - this._worker._pendingDestroy = true; - } + + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { await this._transport?.destroy(); - } catch (ex) { - if (this._worker?.port) { - delete this._worker._pendingDestroy; + } else { + try { + if (this._worker?.port) { + this._worker._pendingDestroy = true; + } + await this._transport?.destroy(); + } catch (ex) { + if (this._worker?.port) { + delete this._worker._pendingDestroy; + } + throw ex; } - throw ex; } - this._transport = null; - if (this._worker) { - this._worker.destroy(); - this._worker = null; - } + + this._worker?.destroy(); + this._worker = null; } } @@ -2336,17 +2339,16 @@ class PDFWorker { */ destroy() { this.destroyed = true; - if (this._webWorker) { - // We need to terminate only web worker created resource. - this._webWorker.terminate(); - this._webWorker = null; - } + + // We need to terminate only web worker created resource. + this._webWorker?.terminate(); + this._webWorker = null; + PDFWorker.#workerPorts?.delete(this._port); this._port = null; - if (this._messageHandler) { - this._messageHandler.destroy(); - this._messageHandler = null; - } + + this._messageHandler?.destroy(); + this._messageHandler = null; } /** @@ -2600,10 +2602,9 @@ class WorkerTransport { new AbortException("Worker was terminated.") ); - if (this.messageHandler) { - this.messageHandler.destroy(); - this.messageHandler = null; - } + this.messageHandler?.destroy(); + this.messageHandler = null; + this.destroyCapability.resolve(); }, this.destroyCapability.reject); return this.destroyCapability.promise; From 3790854a45783116d246027d75b60ab0f2bbed77 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 30 Nov 2024 12:50:53 +0100 Subject: [PATCH 090/338] Shorten the `WorkerMessageHandler` class a little bit - Use `this` in all scopes where that's possible, to avoid having to spell out `WorkerMessageHandler` everywhere. - Inline the `isMessagePort` helper function, since there's only a single call-site. - Use a static initialization block to move more code into the `WorkerMessageHandler` class itself. --- src/core/worker.js | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/core/worker.js b/src/core/worker.js index 533d8d01286ae..ecd0c52c0e7a5 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -70,9 +70,23 @@ class WorkerTask { } class WorkerMessageHandler { + static { + // Worker thread (and not Node.js)? + if ( + typeof window === "undefined" && + !isNodeJS && + typeof self !== "undefined" && + /* isMessagePort = */ + typeof self.postMessage === "function" && + "onmessage" in self + ) { + this.initializeFromPort(self); + } + } + static setup(handler, port) { let testMessageProcessed = false; - handler.on("test", function (data) { + handler.on("test", data => { if (testMessageProcessed) { return; // we already processed 'test' message once } @@ -82,13 +96,11 @@ class WorkerMessageHandler { handler.send("test", data instanceof Uint8Array); }); - handler.on("configure", function (data) { + handler.on("configure", data => { setVerbosityLevel(data.verbosity); }); - handler.on("GetDocRequest", function (data) { - return WorkerMessageHandler.createDocumentHandler(data, port); - }); + handler.on("GetDocRequest", data => this.createDocumentHandler(data, port)); } static createDocumentHandler(docParams, port) { @@ -879,25 +891,9 @@ class WorkerMessageHandler { static initializeFromPort(port) { const handler = new MessageHandler("worker", "main", port); - WorkerMessageHandler.setup(handler, port); + this.setup(handler, port); handler.send("ready", null); } } -function isMessagePort(maybePort) { - return ( - typeof maybePort.postMessage === "function" && "onmessage" in maybePort - ); -} - -// Worker thread (and not Node.js)? -if ( - typeof window === "undefined" && - !isNodeJS && - typeof self !== "undefined" && - isMessagePort(self) -) { - WorkerMessageHandler.initializeFromPort(self); -} - export { WorkerMessageHandler, WorkerTask }; From b5950e8b2ffb8ea3eb0e2e4ace8bf3563fe6caf3 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 1 Dec 2024 12:25:16 +0100 Subject: [PATCH 091/338] Move the `getPage` call in `PDFDocumentProperties` class This allows us to remove an ESLint disable-statement for `arrow-body-style`, without affecting readability of the code, and fetching the metadata and the page in parallel should be a *tiny* bit more efficient as well. --- web/pdf_document_properties.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/web/pdf_document_properties.js b/web/pdf_document_properties.js index 3448f439b88cd..58cdee4da706d 100644 --- a/web/pdf_document_properties.js +++ b/web/pdf_document_properties.js @@ -112,12 +112,13 @@ class PDFDocumentProperties { } // Get the document properties. - const { - info, - /* metadata, */ - /* contentDispositionFilename, */ - contentLength, - } = await this.pdfDocument.getMetadata(); + const [ + { info, /* metadata, contentDispositionFilename, */ contentLength }, + pdfPage, + ] = await Promise.all([ + this.pdfDocument.getMetadata(), + this.pdfDocument.getPage(currentPageNumber), + ]); const [ fileName, @@ -131,10 +132,7 @@ class PDFDocumentProperties { this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), - // eslint-disable-next-line arrow-body-style - this.pdfDocument.getPage(currentPageNumber).then(pdfPage => { - return this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation); - }), + this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation), this.#parseLinearization(info.IsLinearized), ]); From bd5ed4bc06e1633410d237d6afb4182618f74550 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 24 Nov 2024 21:22:56 +0100 Subject: [PATCH 092/338] Fix the type definition of the `fingerprints` getter in `src/display/api.js` The `Array` type takes one parameter that describes the possible types of the inner elements. This parameter may exist of pipes to indicate multiple possible types. However, the current type definition provides multiple parameters; this is incorrect syntax, and TypeScript 5.7+ now fails on this due to stricter syntax validation. This commit fixes the issue by changing the type definition to the proper syntax, which together with the accompanying comment about the contents of the fingerprints array should document it sufficiently. --- src/display/api.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index c8da40b15bdd1..91cf928d1586a 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -851,8 +851,8 @@ class PDFDocumentProxy { } /** - * @type {Array} A (not guaranteed to be) unique ID to - * identify the PDF document. + * @type {Array} A (not guaranteed to be) unique ID to identify + * the PDF document. * NOTE: The first element will always be defined for all PDF documents, * whereas the second element is only defined for *modified* PDF documents. */ From 77aea79d9f5f72c4e8a06bd21a5e84c381c3de4b Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 24 Nov 2024 20:36:12 +0100 Subject: [PATCH 093/338] Update dependencies to the most recent versions --- gulpfile.mjs | 2 +- package-lock.json | 130 ++++++++++++++++++++++++++-------------------- package.json | 10 ++-- 3 files changed, 80 insertions(+), 62 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index 403d606fee8d8..f1307c10aefc3 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2250,7 +2250,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - "@napi-rs/canvas": "^0.1.62", + "@napi-rs/canvas": "^0.1.64", }, browser: { canvas: false, diff --git a/package-lock.json b/package-lock.json index ad6e48ec01a28..1aad71a21b328 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,11 +15,11 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.62", - "@types/node": "^22.9.0", + "@napi-rs/canvas": "^0.1.64", + "@types/node": "^22.9.3", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001680", + "caniuse-lite": "^1.0.30001684", "core-js": "^3.39.0", "eslint": "^9.15.0", "eslint-plugin-import": "^2.31.0", @@ -28,7 +28,7 @@ "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-unicorn": "^56.0.0", + "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.12.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", @@ -57,7 +57,7 @@ "terser-webpack-plugin": "^5.3.10", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "vinyl": "^3.0.0", "webpack": "^5.96.1", "webpack-stream": "^7.0.0", @@ -2353,30 +2353,31 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.62.tgz", - "integrity": "sha512-+aqi0evK3ohAG3pFhMhM5C6y26foMUK0C1c3dfC1p/CRETwAuQlobuFGxadHkyIgc9mVyfGTpZUCnlrzt6xSwg==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.64.tgz", + "integrity": "sha512-GjvaYebjPsnvGxBsUJxW2Bh1Di9kVifWZ+LLeQEI7se4SD5Ts7GRpdLXhKM05wA4GB9reClFLRd4lUoFMcTMxw==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.62", - "@napi-rs/canvas-darwin-arm64": "0.1.62", - "@napi-rs/canvas-darwin-x64": "0.1.62", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.62", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.62", - "@napi-rs/canvas-linux-arm64-musl": "0.1.62", - "@napi-rs/canvas-linux-x64-gnu": "0.1.62", - "@napi-rs/canvas-linux-x64-musl": "0.1.62", - "@napi-rs/canvas-win32-x64-msvc": "0.1.62" + "@napi-rs/canvas-android-arm64": "0.1.64", + "@napi-rs/canvas-darwin-arm64": "0.1.64", + "@napi-rs/canvas-darwin-x64": "0.1.64", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.64", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.64", + "@napi-rs/canvas-linux-arm64-musl": "0.1.64", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.64", + "@napi-rs/canvas-linux-x64-gnu": "0.1.64", + "@napi-rs/canvas-linux-x64-musl": "0.1.64", + "@napi-rs/canvas-win32-x64-msvc": "0.1.64" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.62.tgz", - "integrity": "sha512-gilURMgNfCqXQmw211Jo6BiaQpPS7RD5baKWgnQ17XbgpJPi8+DFtbdIzQsCiFWl6p2TfXpg3cqWfN0fm+blRw==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.64.tgz", + "integrity": "sha512-kyS1b0lt3Nj6QDci8mHTjLA782OpUz5+yiDzsXeOOdqPgiKuDX6ff228gJcZ5/vEOf40rvxar9cYArsTeSuhqQ==", "cpu": [ "arm64" ], @@ -2391,9 +2392,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.62.tgz", - "integrity": "sha512-TodBo7kdMEeGsGa80/BTJwyG9od+AMGDFe6UW7jkU8uEJmzOROVp6Y2Ka6LfLixpEGwNUCEFEUabr/gETD7bhg==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.64.tgz", + "integrity": "sha512-FiXkDoQcTaKWU5ZavEpyYTB+gwLtML/KMnYBi/t5gQGbEC5sOM16S4UtQNAb5zraam0/75wqFyVbgIt3H5JbWg==", "cpu": [ "arm64" ], @@ -2408,9 +2409,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.62.tgz", - "integrity": "sha512-1SqtF7HbLh1XwxUhpkIZg2huG25UHkOvjMKh+GksARs4RiKFC7/jPnPyj3KtmkejyA6zsuqFd49qeJ3StJr4hQ==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.64.tgz", + "integrity": "sha512-TobMkHfS93VBdZclq7V82tnbYT7+swKe4rhuRtIAi+HolIPhKkoZP6mUthl841Sfsuo0f2o6ZJxn+Y6DWmZ3Tg==", "cpu": [ "x64" ], @@ -2425,9 +2426,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.62.tgz", - "integrity": "sha512-L5Gp6sKyXV0KXw9V/Cy4DlouL/Wz+D5P14XsRQLlSnTXKVHSBEufZBopsbdjBu0XZTp5rAGWsdnACDzwMSsi+A==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.64.tgz", + "integrity": "sha512-Zs4+wQpLMjsIvC1sC0+HeYsMGrNtqkhgEMdIHEA5yWLaGmLlsiiqJ+ZZKasynHLklWFfV6ywkfhPTLs2n80tlQ==", "cpu": [ "arm" ], @@ -2442,9 +2443,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.62.tgz", - "integrity": "sha512-uiyeg4TFSf+SVOlM5pIh8a4oNEUAgL+KoCm6Qvpm8XhBmIpVrCpPShp0eje/zuaMCJtzFkenkbwOapW/blCCVQ==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.64.tgz", + "integrity": "sha512-AaE2LU42iASw5PE8UdJ/GxAHfN2nKvnwgDL9rR+JzsN19fl4Av8R2VlnBBKVKGJekeqlAN+J+9oIFIGvKUpkpA==", "cpu": [ "arm64" ], @@ -2459,9 +2460,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.62.tgz", - "integrity": "sha512-diZxX37Fs/Tn2m4UDhzVxAxu0rHtis8EImamcrL+KNDSjCiEe/h0r+Gfh7wNxRv9REh10UP+zlD8PTrcSKjL3g==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.64.tgz", + "integrity": "sha512-EcScvyDfBaP44pfrRxDAmv/NKo7CAM34a5HVo6xSPAlLhLaOWTcMJrlZc14Sx105Q46u2myH1DcTtVsFO9XRfg==", "cpu": [ "arm64" ], @@ -2475,10 +2476,27 @@ "node": ">= 10" } }, + "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.64.tgz", + "integrity": "sha512-XlqIGfNxV3JF4+mzn+BVxCsKeYGHhYnHo5m8COn012iEri0UXU65VSgMVbAa+78neu9bXoBWT0fUI2TrnV+u1Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.62.tgz", - "integrity": "sha512-nv0is/DH05kfREHD+62ienlb45Fi3kcvHKwmsHzSrvqNu0l6CFj8h8CuRvhB3tl1KStHZFDxUAqu14MecuK6eA==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.64.tgz", + "integrity": "sha512-TuVeg6ISOV/NmAYE7Gg5/lyE/SW3a2Unrd+3kTVcI76LHfZwZcdPaNaU9GKJLLv1O5/zMcgK/lJmYOpI+JU4NQ==", "cpu": [ "x64" ], @@ -2493,9 +2511,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.62.tgz", - "integrity": "sha512-r8tT3k67xN5KhPTEn2KPYZ4iEGTcE6b3+ahPpYBGhKRZfZkMdvzHnmuzcSLkjh8bBlkoiObSBK/G8oY7Q335RA==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.64.tgz", + "integrity": "sha512-JwfHdmSIRPlP+u8xglfxcqYfpjg6k/HROBKjeA5eSNCHUiSdH/HStyieAkMInyNjbqVL0FwTgLLNWW16fqTq8w==", "cpu": [ "x64" ], @@ -2510,9 +2528,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.62.tgz", - "integrity": "sha512-uQdYrjHu6QfGFxD2K9qzomOzygC8Px5dy4v/PgwBSPCd0ShIjGrIGAY5YobjH2xwEtYEPL9KgJkGe3ts+k5Auw==", + "version": "0.1.64", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.64.tgz", + "integrity": "sha512-iVrrc+Ob9yNJ6yPeMRympLOszg2JvV6DaSostBbAs714eaQ/+i5b6dTI0QRdb/JWpm95CQ7SM/kOPZJZv7Rfjw==", "cpu": [ "x64" ], @@ -2710,9 +2728,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz", + "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==", "dev": true, "license": "MIT", "dependencies": { @@ -3955,9 +3973,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", "dev": true, "funding": [ { @@ -5627,9 +5645,9 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "56.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz", - "integrity": "sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==", + "version": "56.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", + "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", "dev": true, "license": "MIT", "dependencies": { @@ -13526,9 +13544,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 1478dbc10ffc0..867e5dfe4986e 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,11 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.62", - "@types/node": "^22.9.0", + "@napi-rs/canvas": "^0.1.64", + "@types/node": "^22.9.3", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001680", + "caniuse-lite": "^1.0.30001684", "core-js": "^3.39.0", "eslint": "^9.15.0", "eslint-plugin-import": "^2.31.0", @@ -23,7 +23,7 @@ "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", - "eslint-plugin-unicorn": "^56.0.0", + "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.12.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", @@ -52,7 +52,7 @@ "terser-webpack-plugin": "^5.3.10", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", - "typescript": "^5.6.3", + "typescript": "^5.7.2", "vinyl": "^3.0.0", "webpack": "^5.96.1", "webpack-stream": "^7.0.0", From 6ad254708c6b02b965a5687c4e33ef728b249d9e Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 24 Nov 2024 20:40:30 +0100 Subject: [PATCH 094/338] Update translations to the most recent versions --- l10n/be/viewer.ftl | 16 +++++++++++++++- l10n/da/viewer.ftl | 12 ++++++++++++ l10n/el/viewer.ftl | 2 +- l10n/es-ES/viewer.ftl | 12 +++++++++++- l10n/fr/viewer.ftl | 12 +++++++++++- l10n/fy-NL/viewer.ftl | 2 +- l10n/ja/viewer.ftl | 11 +++++++++++ l10n/nb-NO/viewer.ftl | 12 +++++++++++- l10n/nn-NO/viewer.ftl | 8 ++------ l10n/pl/viewer.ftl | 16 +++++++++++++++- l10n/si/viewer.ftl | 2 +- l10n/sl/viewer.ftl | 12 +++++++++++- l10n/sq/viewer.ftl | 14 ++++++++++++-- l10n/sr/viewer.ftl | 6 +++--- l10n/th/viewer.ftl | 16 +++++++++++++++- l10n/uk/viewer.ftl | 12 +++++++++++- 16 files changed, 143 insertions(+), 22 deletions(-) diff --git a/l10n/be/viewer.ftl b/l10n/be/viewer.ftl index 2fcbace18c26c..8dfd471af53c1 100644 --- a/l10n/be/viewer.ftl +++ b/l10n/be/viewer.ftl @@ -345,6 +345,10 @@ pdfjs-editor-stamp-add-image-button-label = Дадаць выяву pdfjs-editor-free-highlight-thickness-input = Таўшчыня pdfjs-editor-free-highlight-thickness-title = .title = Змяняць таўшчыню пры вылучэнні іншых элементаў, акрамя тэксту +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Тэкставы рэдактар + .default-content = Пачніце ўводзіць… pdfjs-free-text = .aria-label = Тэкставы рэдактар pdfjs-free-text-default-content = Пачніце набор тэксту… @@ -355,8 +359,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Альтэрнатыўны тэкст +pdfjs-editor-alt-text-edit-button = + .aria-label = Змяніць альтэрнатыўны тэкст pdfjs-editor-alt-text-edit-button-label = Змяніць альтэрнатыўны тэкст pdfjs-editor-alt-text-dialog-label = Выберыце варыянт pdfjs-editor-alt-text-dialog-description = Альтэрнатыўны тэкст дапамагае, калі людзі не бачаць выяву або калі яна не загружаецца. @@ -370,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Пазначаны як дэкара # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Напрыклад, «Малады чалавек садзіцца за стол есці» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Альтэрнатыўны тэкст ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -451,10 +459,16 @@ pdfjs-editor-new-alt-text-error-close-button = Закрыць pdfjs-editor-new-alt-text-ai-model-downloading-progress = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ) .aria-valuetext = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Тэкст для атрыбута alt дададзены pdfjs-editor-new-alt-text-added-button-label = Тэкст для атрыбута alt дададзены # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Адсутнічае тэкст для атрыбута alt pdfjs-editor-new-alt-text-missing-button-label = Адсутнічае тэкст для атрыбута alt # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Водгук на тэкст для атрыбута alt pdfjs-editor-new-alt-text-to-review-button-label = Водгук на тэкст для атрыбута alt # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index 2de749e7b72c0..ba8b4eff50546 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Tilføj billede pdfjs-editor-free-highlight-thickness-input = Tykkelse pdfjs-editor-free-highlight-thickness-title = .title = Ændr tykkelse, når andre elementer end tekst fremhæves +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Teksteditor + .default-content = Begynd at skrive… pdfjs-free-text = .aria-label = Teksteditor pdfjs-free-text-default-content = Begynd at skrive… @@ -354,6 +358,8 @@ pdfjs-ink-canvas = ## Alt-text dialog pdfjs-editor-alt-text-button-label = Alternativ tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Rediger alternativ tekst pdfjs-editor-alt-text-edit-button-label = Rediger alternativ tekst pdfjs-editor-alt-text-dialog-label = Vælg en indstilling pdfjs-editor-alt-text-dialog-description = Alternativ tekst hjælper folk, som ikke kan se billedet eller når det ikke indlæses. @@ -367,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Markeret som dekorativ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = For eksempel: "En ung mand sætter sig ved et bord for at spise et måltid mad" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativ tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -447,6 +456,9 @@ pdfjs-editor-new-alt-text-error-close-button = Luk # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) .aria-valuetext = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativ tekst tilføjet pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst tilføjet # This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button = diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index 4db9d9fb9225f..22cb27b3df6c5 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -346,7 +346,7 @@ pdfjs-editor-free-highlight-thickness-title = # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Επεξεργασία κειμένου - .default-content = Ξεκινήστε την πληκτρολόγηση… + .default-content = Ξεκινήστε να πληκτρολογείτε… pdfjs-free-text = .aria-label = Επεξεργασία κειμένου pdfjs-free-text-default-content = Ξεκινήστε να πληκτρολογείτε… diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index 73da02eccd02a..f7045af937e30 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar el texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo pdfjs-editor-alt-text-dialog-label = Eligir una opción pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcada como decorativa # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Cerrar pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Se añadió el texto alternativo pdfjs-editor-new-alt-text-added-button-label = Se añadió el texto alternativo # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Falta el texto alternativo pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Revisar el texto alternativo pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index f5352be3949ae..fe367f5e7d295 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -353,8 +353,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texte alternatif +pdfjs-editor-alt-text-edit-button = + .aria-label = Modifier le texte alternatif pdfjs-editor-alt-text-edit-button-label = Modifier le texte alternatif pdfjs-editor-alt-text-dialog-label = Sélectionnez une option pdfjs-editor-alt-text-dialog-description = Le texte alternatif est utile lorsque des personnes ne peuvent pas voir l’image ou que l’image ne se charge pas. @@ -368,6 +369,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marquée comme décorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Par exemple, « Un jeune homme est assis à une table pour prendre un repas » +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texte alternatif ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +453,16 @@ pdfjs-editor-new-alt-text-error-close-button = Fermer pdfjs-editor-new-alt-text-ai-model-downloading-progress = Téléchargement du modèle d’IA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo) .aria-valuetext = Téléchargement du modèle d’IA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Texte alternatif ajouté pdfjs-editor-new-alt-text-added-button-label = Texte alternatif ajouté # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Texte alternatif manquant pdfjs-editor-new-alt-text-missing-button-label = Texte alternatif manquant # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Réviser le texte alternatif pdfjs-editor-new-alt-text-to-review-button-label = Réviser le texte alternatif # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index f719817a16d65..d53b05906eb0f 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -439,7 +439,7 @@ pdfjs-editor-new-alt-text-dialog-edit-label = Alternative tekst (ôfbyldingsbesk # Modal header positioned above a text box where users can add the alt text. pdfjs-editor-new-alt-text-dialog-add-label = Alternative tekst (ôfbyldingsbeskriuwing) tafoegje pdfjs-editor-new-alt-text-textarea = - .placeholder = Skriuw hjir jo beskriuwing... + .placeholder = Skriuw hjir jo beskriuwing… # This text refers to the alt text box above this description. It offers a definition of alt text. pdfjs-editor-new-alt-text-description = Koarte beskriuwing foar minsken dy’t de ôfbylding net sjen kinne of wannear’t de ôfbylding net laden wurdt. # This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. diff --git a/l10n/ja/viewer.ftl b/l10n/ja/viewer.ftl index 5f24b7f59a79d..0eb7fe5f7f375 100644 --- a/l10n/ja/viewer.ftl +++ b/l10n/ja/viewer.ftl @@ -351,6 +351,8 @@ pdfjs-ink-canvas = # Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = 代替テキスト +pdfjs-editor-alt-text-edit-button = + .aria-label = 代替テキストを編集 pdfjs-editor-alt-text-edit-button-label = 代替テキストを編集 pdfjs-editor-alt-text-dialog-label = オプションの選択 pdfjs-editor-alt-text-dialog-description = 代替テキストは画像が表示されない場合や読み込まれない場合にユーザーの助けになります。 @@ -364,6 +366,9 @@ pdfjs-editor-alt-text-decorative-tooltip = 装飾マークが付いています # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = 例:「若い人がテーブルの席について食事をしています」 +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = 代替テキスト ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -445,10 +450,16 @@ pdfjs-editor-new-alt-text-error-close-button = 閉じる pdfjs-editor-new-alt-text-ai-model-downloading-progress = 代替テキスト AI モデルをダウンロードしています ({ $downloadedSize } / { $totalSize } MB) .aria-valuetext = 代替テキスト AI モデルをダウンロードしています ({ $downloadedSize } / { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = 代替テキストを追加しました pdfjs-editor-new-alt-text-added-button-label = 代替テキストを追加しました # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = 代替テキストがありません pdfjs-editor-new-alt-text-missing-button-label = 代替テキストがありません # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = 代替テキストをレビュー pdfjs-editor-new-alt-text-to-review-button-label = 代替テキストをレビュー # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/nb-NO/viewer.ftl b/l10n/nb-NO/viewer.ftl index 6165b74d1e35e..a6441571d124a 100644 --- a/l10n/nb-NO/viewer.ftl +++ b/l10n/nb-NO/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt-tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Rediger alt-tekst pdfjs-editor-alt-text-edit-button-label = Rediger alt-tekst tekst pdfjs-editor-alt-text-dialog-label = Velg et alternativ pdfjs-editor-alt-text-dialog-description = Alt-tekst (alternativ tekst) hjelper når folk ikke kan se bildet eller når det ikke lastes inn. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Merket som dekorativ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = For eksempel, «En ung mann setter seg ved et bord for å spise et måltid» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt-tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Lukk pdfjs-editor-new-alt-text-ai-model-downloading-progress = Laster ned alternativ tekst AI-modell ({ $downloadedSize } av { $totalSize } MB) .aria-valuetext = Laster ned alternativ tekst AI-modell ({ $downloadedSize } av { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alt-tekst lagt til pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst lagt til # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Mangler alt-tekst pdfjs-editor-new-alt-text-missing-button-label = Mangler alternativ tekst # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Gjennomgå alt-tekst pdfjs-editor-new-alt-text-to-review-button-label = Gjennomgå alternativ tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index 065932a86d685..b70a2643781e5 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -334,13 +334,13 @@ pdfjs-editor-remove-highlight-button = pdfjs-editor-free-text-color-input = Farge pdfjs-editor-free-text-size-input = Storleik pdfjs-editor-ink-color-input = Farge -pdfjs-editor-ink-thickness-input = Tjukkleik +pdfjs-editor-ink-thickness-input = Tjukn pdfjs-editor-ink-opacity-input = Ugjennomskinleg pdfjs-editor-stamp-add-image-button = .title = Legg til bilde pdfjs-editor-stamp-add-image-button-label = Legg til bilde # This refers to the thickness of the line used for free highlighting (not bound to text) -pdfjs-editor-free-highlight-thickness-input = Tjukkleik +pdfjs-editor-free-highlight-thickness-input = Tjukn pdfjs-editor-free-highlight-thickness-title = .title = Endre tjukn når du markerer andre element enn tekst # .default-content is used as a placeholder in an empty text editor. @@ -357,7 +357,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt-tekst pdfjs-editor-alt-text-edit-button-label = Rediger alt-tekst tekst pdfjs-editor-alt-text-dialog-label = Vel eit alternativ @@ -452,11 +451,8 @@ pdfjs-editor-new-alt-text-error-close-button = Lat att # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB) .aria-valuetext = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB) -# This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst lagt til -# This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button-label = Manglande alternativ tekst -# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. pdfjs-editor-new-alt-text-to-review-button-label = Vurder alternativ tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/pl/viewer.ftl b/l10n/pl/viewer.ftl index 5ed53a29c3ff9..98c1d0919393a 100644 --- a/l10n/pl/viewer.ftl +++ b/l10n/pl/viewer.ftl @@ -345,6 +345,10 @@ pdfjs-editor-stamp-add-image-button-label = Dodaj obraz pdfjs-editor-free-highlight-thickness-input = Grubość pdfjs-editor-free-highlight-thickness-title = .title = Zmień grubość podczas wyróżniania elementów innych niż tekst +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Edytor tekstu + .default-content = Zacznij pisać… pdfjs-free-text = .aria-label = Edytor tekstu pdfjs-free-text-default-content = Zacznij pisać… @@ -355,8 +359,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Tekst alternatywny +pdfjs-editor-alt-text-edit-button = + .aria-label = Edytuj tekst alternatywny pdfjs-editor-alt-text-edit-button-label = Edytuj tekst alternatywny pdfjs-editor-alt-text-dialog-label = Wybierz opcję pdfjs-editor-alt-text-dialog-description = Tekst alternatywny pomaga, kiedy ktoś nie może zobaczyć obrazu lub gdy się nie wczytuje. @@ -370,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Oznaczone jako dekoracyjne # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Na przykład: „Młody człowiek siada przy stole, aby zjeść posiłek” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Tekst alternatywny ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -451,10 +459,16 @@ pdfjs-editor-new-alt-text-error-close-button = Zamknij pdfjs-editor-new-alt-text-ai-model-downloading-progress = Pobieranie modelu SI tekstu alternatywnego ({ $downloadedSize } z { $totalSize } MB) .aria-valuetext = Pobieranie modelu SI tekstu alternatywnego ({ $downloadedSize } z { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Dodano tekst alternatywny pdfjs-editor-new-alt-text-added-button-label = Dodano tekst alternatywny # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Brak tekstu alternatywnego pdfjs-editor-new-alt-text-missing-button-label = Brak tekstu alternatywnego # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Przejrzyj tekst alternatywny pdfjs-editor-new-alt-text-to-review-button-label = Przejrzyj tekst alternatywny # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/si/viewer.ftl b/l10n/si/viewer.ftl index 0933af2dfb77a..0481116099ae2 100644 --- a/l10n/si/viewer.ftl +++ b/l10n/si/viewer.ftl @@ -182,7 +182,7 @@ pdfjs-find-highlight-checkbox = සියල්ල උද්දීපනය pdfjs-find-entire-word-checkbox-label = සමස්ත වචන pdfjs-find-reached-top = ලේඛනයේ මුදුනට ළඟා විය, පහළ සිට ඉහළට pdfjs-find-reached-bottom = ලේඛනයේ අවසානයට ළඟා විය, ඉහළ සිට පහළට -pdfjs-find-not-found = වැකිකඩ හමු නොවිණි +pdfjs-find-not-found = වැකිකඩ හමු නොවුණි ## Predefined zoom values diff --git a/l10n/sl/viewer.ftl b/l10n/sl/viewer.ftl index 1b17d9bfa99a4..f7293c702a895 100644 --- a/l10n/sl/viewer.ftl +++ b/l10n/sl/viewer.ftl @@ -361,8 +361,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Nadomestno besedilo +pdfjs-editor-alt-text-edit-button = + .aria-label = Uredi nadomestno besedilo pdfjs-editor-alt-text-edit-button-label = Uredi nadomestno besedilo pdfjs-editor-alt-text-dialog-label = Izberite možnost pdfjs-editor-alt-text-dialog-description = Nadomestno besedilo se prikaže tistim, ki ne vidijo slike, ali če se ta ne naloži. @@ -376,6 +377,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Označeno kot okrasno # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Na primer: "Mladenič sedi za mizo pri jedi" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Nadomestno besedilo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -457,10 +461,16 @@ pdfjs-editor-new-alt-text-error-close-button = Zapri pdfjs-editor-new-alt-text-ai-model-downloading-progress = Prenašanje modela UI za nadomestno besedilo ({ $downloadedSize } od { $totalSize } MB) .aria-valuetext = Prenašanje modela UI za nadomestno besedilo ({ $downloadedSize } od { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Nadomestno besedilo dodano pdfjs-editor-new-alt-text-added-button-label = Nadomestno besedilo dodano # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Nadomestno besedilo manjka pdfjs-editor-new-alt-text-missing-button-label = Nadomestno besedilo manjka # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Oceni nadomestno besedilo pdfjs-editor-new-alt-text-to-review-button-label = Oceni nadomestno besedilo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index 61149609a4231..c800ce822575a 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -348,8 +348,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Tekst alternativ +pdfjs-editor-alt-text-edit-button = + .aria-label = Përpunoni tekst alternativ pdfjs-editor-alt-text-edit-button-label = Përpunoni tekst alternativ pdfjs-editor-alt-text-dialog-label = Zgjidhni një mundësi pdfjs-editor-alt-text-dialog-description = Teksti alt (tekst alternativ) vjen në ndihmë kur njerëzit s’mund të shohin figurën, ose kur ajo nuk ngarkohet. @@ -363,6 +364,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Iu vu shenjë si dekorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Për shembull, “Një djalosh ulet në një tryezë të hajë” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Tekst alternativ ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -444,10 +448,16 @@ pdfjs-editor-new-alt-text-error-close-button = Mbylle pdfjs-editor-new-alt-text-ai-model-downloading-progress = Po shkarkohet model IA teksti alternativ ({ $downloadedSize } nga { $totalSize } MB) .aria-valuetext = Po shkarkohet model IA teksti alternativ ({ $downloadedSize } nga { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = U shtua tekst alternativ pdfjs-editor-new-alt-text-added-button-label = U shtua tekst alternativ # This is a button that users can click to open the alt text editor and add alt text when it is not present. -pdfjs-editor-new-alt-text-missing-button-label = Mungon teskt alternativ +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Mungon tekst alternativ +pdfjs-editor-new-alt-text-missing-button-label = Mungon tekst alternativ # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Shqyrtoni tekst alternativ pdfjs-editor-new-alt-text-to-review-button-label = Shqyrtoni tekst alternativ # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/sr/viewer.ftl b/l10n/sr/viewer.ftl index dbdb67e488836..33702934727d3 100644 --- a/l10n/sr/viewer.ftl +++ b/l10n/sr/viewer.ftl @@ -162,10 +162,10 @@ pdfjs-printing-not-ready = Упозорење: PDF није у потпунос ## Tooltips and alt text for side panel toolbar buttons pdfjs-toggle-sidebar-button = - .title = Прикажи додатну палету + .title = Прикажи/сакриј бочни панел pdfjs-toggle-sidebar-notification-button = - .title = Прикажи/сакриј бочну траку (документ садржи контуру/прилоге/слојеве) -pdfjs-toggle-sidebar-button-label = Прикажи додатну палету + .title = Прикажи/сакриј бочни панел (документ садржи контуру/прилоге/слојеве) +pdfjs-toggle-sidebar-button-label = Прикажи/сакриј бочни панел pdfjs-document-outline-button = .title = Прикажи структуру документа (двоструким кликом проширујете/скупљате све ставке) pdfjs-document-outline-button-label = Контура документа diff --git a/l10n/th/viewer.ftl b/l10n/th/viewer.ftl index 3aefcef0a7f03..5a3cc99c79b4d 100644 --- a/l10n/th/viewer.ftl +++ b/l10n/th/viewer.ftl @@ -335,6 +335,10 @@ pdfjs-editor-stamp-add-image-button-label = เพิ่มภาพ pdfjs-editor-free-highlight-thickness-input = ความหนา pdfjs-editor-free-highlight-thickness-title = .title = เปลี่ยนความหนาเมื่อเน้นรายการอื่นๆ ที่ไม่ใช่ข้อความ +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = ตัวแก้ไขข้อความ + .default-content = เริ่มพิมพ์ได้เลย… pdfjs-free-text = .aria-label = ตัวแก้ไขข้อความ pdfjs-free-text-default-content = เริ่มพิมพ์… @@ -345,8 +349,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = ข้อความทดแทน +pdfjs-editor-alt-text-edit-button = + .aria-label = แก้ไขข้อความทดแทน pdfjs-editor-alt-text-edit-button-label = แก้ไขข้อความทดแทน pdfjs-editor-alt-text-dialog-label = เลือกตัวเลือก pdfjs-editor-alt-text-dialog-description = ข้อความทดแทนสามารถช่วยเหลือได้เมื่อผู้ใช้มองไม่เห็นภาพ หรือภาพไม่โหลด @@ -360,6 +365,9 @@ pdfjs-editor-alt-text-decorative-tooltip = ทำเครื่องหมา # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = ตัวอย่างเช่น “ชายหนุ่มคนหนึ่งนั่งลงที่โต๊ะเพื่อรับประทานอาหารมื้อหนึ่ง” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = ข้อความทดแทน ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -441,10 +449,16 @@ pdfjs-editor-new-alt-text-error-close-button = ปิด pdfjs-editor-new-alt-text-ai-model-downloading-progress = กำลังดาวน์โหลดโมเดล AI สำหรับข้อความทดแทน ({ $downloadedSize } จาก { $totalSize } MB) .aria-valuetext = กำลังดาวน์โหลดโมเดล AI สำหรับข้อความทดแทน ({ $downloadedSize } จาก { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = เพิ่มข้อความทดแทนแล้ว pdfjs-editor-new-alt-text-added-button-label = เพิ่มข้อความทดแทนแล้ว # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = ขาดข้อความทดแทน pdfjs-editor-new-alt-text-missing-button-label = ขาดข้อความทดแทน # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = ตรวจสอบข้อความทดแทน pdfjs-editor-new-alt-text-to-review-button-label = ตรวจสอบข้อความทดแทน # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index 09afd34bd736c..c5f1057cc391e 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -359,8 +359,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Альтернативний текст +pdfjs-editor-alt-text-edit-button = + .aria-label = Редагувати альтернативний текст pdfjs-editor-alt-text-edit-button-label = Змінити альтернативний текст pdfjs-editor-alt-text-dialog-label = Вибрати варіант pdfjs-editor-alt-text-dialog-description = Альтернативний текст допомагає, коли зображення не видно або коли воно не завантажується. @@ -374,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Позначено декоратив # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Наприклад, “Молодий чоловік сідає за стіл їсти” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Альтернативний текст ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -455,10 +459,16 @@ pdfjs-editor-new-alt-text-error-close-button = Закрити pdfjs-editor-new-alt-text-ai-model-downloading-progress = Завантаження моделі ШІ для альтернативного тексту ({ $downloadedSize } з { $totalSize } МБ) .aria-valuetext = Завантаження моделі ШІ для альтернативного тексту ({ $downloadedSize } з { $totalSize } МБ) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Альтернативний текст додано pdfjs-editor-new-alt-text-added-button-label = Альтернативний текст додано # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Відсутній альтернативний текст pdfjs-editor-new-alt-text-missing-button-label = Відсутній альтернативний текст # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Переглянути альтернативний текст pdfjs-editor-new-alt-text-to-review-button-label = Переглянути альтернативний текст # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: From 8c48dc5c5c69fcc938e0b9094c393d993ad2f3a5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 27 Nov 2024 17:51:32 +0100 Subject: [PATCH 095/338] Disable the browser-tests in Google Chrome on the bots Given that `browsertest` repeatedly timeout in Google Chrome, and considering that Firefox is the primary development target, we stop running them on the bots to avoid having to repeatedly deal with this. Note that we already disabled these tests *on Windows* almost three years ago, because of stability issues; see PR 14392. --- gulpfile.mjs | 19 +++++++------------ test/driver.js | 7 ------- test/test_manifest.json | 3 +-- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index f1307c10aefc3..539e199cff6d3 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -686,12 +686,9 @@ function runTests(testsName, { bot = false, xfaOnly = false } = {}) { if (!bot) { args.push("--reftest"); } else { - const os = process.env.OS; - if (/windows/i.test(os)) { - // The browser-tests are too slow in Google Chrome on the Windows - // bot, causing a timeout, hence disabling them for now. - forceNoChrome = true; - } + // The browser-tests are too slow in Google Chrome on the bots, + // causing a timeout, hence disabling them for now. + forceNoChrome = true; } if (xfaOnly) { args.push("--xfaOnly"); @@ -770,12 +767,10 @@ function makeRef(done, bot) { let forceNoChrome = false; const args = ["test.mjs", "--masterMode"]; if (bot) { - const os = process.env.OS; - if (/windows/i.test(os)) { - // The browser-tests are too slow in Google Chrome on the Windows - // bot, causing a timeout, hence disabling them for now. - forceNoChrome = true; - } + // The browser-tests are too slow in Google Chrome on the bots, + // causing a timeout, hence disabling them for now. + forceNoChrome = true; + args.push("--noPrompts", "--strictVerify"); } if (process.argv.includes("--noChrome") || forceNoChrome) { diff --git a/test/driver.js b/test/driver.js index 897504edde6eb..75bc8a9164225 100644 --- a/test/driver.js +++ b/test/driver.js @@ -609,13 +609,6 @@ class Driver { return; } - if (task.noChrome && window?.chrome) { - this._log(`Skipping file "${task.file}" (because on Chrome)\n`); - this.currentTask++; - this._nextTask(); - return; - } - this._log('Loading file "' + task.file + '"\n'); try { diff --git a/test/test_manifest.json b/test/test_manifest.json index c5d7f48b95883..98a5c23da1a40 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10829,8 +10829,7 @@ "rounds": 1, "type": "eq", "link": true, - "talos": false, - "noChrome": true + "talos": false }, { "id": "issue18956", From 910ddd583d9aa481d49efa3ac7877449630c7eaf Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 1 Dec 2024 20:04:54 +0100 Subject: [PATCH 096/338] Bump the stable version in `pdfjs.config` --- pdfjs.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdfjs.config b/pdfjs.config index 5c7ef67fa98a4..b5ee5b026ce5a 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { - "stableVersion": "4.8.69", + "stableVersion": "4.9.124", "baseVersion": "cefd1ebcd239d906758d0f7a601238a1980d5631", "versionPrefix": "4.9." } From c1e7c85415447e261b89434aef4fd2f6097a218d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 2 Dec 2024 09:17:07 +0100 Subject: [PATCH 097/338] Fix the clickable area for rotated ink annotations --- src/display/annotation_layer.js | 57 ++++++++++++++++----------- test/integration/annotation_spec.mjs | 35 ++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/rotated_ink.pdf | Bin 0 -> 17873 bytes 4 files changed, 70 insertions(+), 23 deletions(-) create mode 100644 test/pdfs/rotated_ink.pdf diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index e2dc138a8ded4..fdfdf7e262cea 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -2815,37 +2815,48 @@ class InkAnnotationElement extends AnnotationElement { // Create an invisible polyline with the same points that acts as the // trigger for the popup. const { - data: { rect, inkLists, borderStyle, popupRef }, + data: { rect, rotation, inkLists, borderStyle, popupRef }, } = this; - const { width, height } = getRectDims(rect); + let { width, height } = getRectDims(rect); + let transform; + + // PDF coordinates are calculated from a bottom left origin, so + // transform the polyline coordinates to a top left origin for the + // SVG element. + switch (rotation) { + case 90: + transform = `rotate(90) translate(${-rect[0]},${rect[3] - height}) scale(1,-1)`; + [width, height] = [height, width]; + break; + case 180: + transform = `rotate(180) translate(${-rect[0] - width},${rect[3] - height}) scale(1,-1)`; + break; + case 270: + transform = `rotate(270) translate(${-rect[0] - width},${rect[3]}) scale(1,-1)`; + [width, height] = [height, width]; + break; + default: + transform = `translate(${-rect[0]},${rect[3]}) scale(1,-1)`; + break; + } + const svg = this.svgFactory.create( width, height, /* skipDimensions = */ true ); + const basePolyline = this.svgFactory.createElement(this.svgElementName); + // Ensure that the 'stroke-width' is always non-zero, since otherwise it + // won't be possible to open/close the popup (note e.g. issue 11122). + basePolyline.setAttribute("stroke-width", borderStyle.width || 1); + basePolyline.setAttribute("stroke", "transparent"); + basePolyline.setAttribute("fill", "transparent"); + basePolyline.setAttribute("transform", transform); - for (const inkList of inkLists) { - // Convert the ink list to a single points string that the SVG - // polyline element expects ("x1,y1 x2,y2 ..."). PDF coordinates are - // calculated from a bottom left origin, so transform the polyline - // coordinates to a top left origin for the SVG element. - let points = []; - for (let i = 0, ii = inkList.length; i < ii; i += 2) { - const x = inkList[i] - rect[0]; - const y = rect[3] - inkList[i + 1]; - points.push(`${x},${y}`); - } - points = points.join(" "); - - const polyline = this.svgFactory.createElement(this.svgElementName); + for (let i = 0, ii = inkLists.length; i < ii; i++) { + const polyline = i < ii - 1 ? basePolyline.cloneNode() : basePolyline; this.#polylines.push(polyline); - polyline.setAttribute("points", points); - // Ensure that the 'stroke-width' is always non-zero, since otherwise it - // won't be possible to open/close the popup (note e.g. issue 11122). - polyline.setAttribute("stroke-width", borderStyle.width || 1); - polyline.setAttribute("stroke", "transparent"); - polyline.setAttribute("fill", "transparent"); - + polyline.setAttribute("points", inkLists[i].join(",")); svg.append(polyline); } diff --git a/test/integration/annotation_spec.mjs b/test/integration/annotation_spec.mjs index 52e33698d9c99..7431a17d17e22 100644 --- a/test/integration/annotation_spec.mjs +++ b/test/integration/annotation_spec.mjs @@ -16,6 +16,7 @@ import { closePages, getQuerySelector, + getRect, getSelector, loadAndWait, } from "./test_utils.mjs"; @@ -654,4 +655,38 @@ describe("ResetForm action", () => { }); }); }); + + describe("Rotated annotation and its clickable area", () => { + describe("issue14438.pdf", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "rotated_ink.pdf", + "[data-annotation-id='18R']" + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the clickable area has been rotated", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const rect = await getRect(page, "[data-annotation-id='18R']"); + const promisePopup = page.waitForSelector( + "[data-annotation-id='19R']", + { visible: true } + ); + await page.mouse.move( + rect.x + rect.width * 0.1, + rect.y + rect.height * 0.9 + ); + await promisePopup; + }) + ); + }); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 9419dafdc5390..45949cc358c30 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -684,3 +684,4 @@ !issue19083.pdf !issue19120.pdf !bug1934157.pdf +!rotated_ink.pdf diff --git a/test/pdfs/rotated_ink.pdf b/test/pdfs/rotated_ink.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8b69361eaf3f65bf506926b879a4eaff3e61bf1f GIT binary patch literal 17873 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 X19R6WHarM;<-6TTA#}0g Date: Mon, 2 Dec 2024 11:06:13 +0100 Subject: [PATCH 098/338] [Editor] Don't focus a newly added drawing if it isn't visible on screen --- src/display/editor/draw.js | 4 +- src/display/editor/editor.js | 6 +++ test/integration/ink_editor_spec.mjs | 57 ++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index 553c5708fd343..3906fc4ee9f6e 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -344,7 +344,9 @@ class DrawingEditor extends AnnotationEditor { this.#mustBeCommitted = false; this.commit(); this.parent.setSelected(this); - this.div.focus(); + if (this.isOnScreen) { + this.div.focus(); + } } } diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 095afec3f9f6c..e47388e0a0fc3 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -1402,6 +1402,12 @@ class AnnotationEditor { return this.div && !this.isAttachedToDOM; } + get isOnScreen() { + const { top, left, bottom, right } = this.getClientDimensions(); + const { innerHeight, innerWidth } = window; + return left < innerWidth && right > 0 && top < innerHeight && bottom > 0; + } + #addFocusListeners() { if (this.#focusAC || !this.div) { return; diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 3375b58463502..01ba30fcd85b0 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -612,4 +612,61 @@ describe("Ink Editor", () => { ); }); }); + + describe("Annotation mustn't take focus if it isn't visible", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the focus isn't taken", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + + const x = rect.x + 20; + const y = rect.y + 20; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x, y); + await page.mouse.down(); + await page.mouse.move(x + 50, y + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + + await page.evaluate(() => { + window.focusedIds = []; + window.focusCallback = e => { + window.focusedIds.push(e.target.id); + }; + window.addEventListener("focusin", window.focusCallback); + }); + + const oneToFourteen = Array.from(new Array(13).keys(), n => n + 2); + for (const pageNumber of oneToFourteen) { + await scrollIntoView( + page, + `.page[data-page-number = "${pageNumber}"]` + ); + } + + const ids = await page.evaluate(() => { + const { focusedIds, focusCallback } = window; + window.removeEventListener("focusin", focusCallback); + delete window.focusCallback; + delete window.focusedIds; + return focusedIds; + }); + + expect(ids).withContext(`In ${browserName}`).toEqual([]); + }) + ); + }); + }); }); From 01eb5b468d3249846b0a994615ce5011b1ade9e0 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 1 Dec 2024 21:15:57 +0100 Subject: [PATCH 099/338] [Editor] Make ink annotation editable --- src/core/annotation.js | 31 +- src/display/annotation_layer.js | 97 +++++-- src/display/editor/drawers/inkdraw.js | 54 +++- src/display/editor/drawers/outline.js | 11 + src/display/editor/editor.js | 20 +- src/display/editor/ink.js | 69 ++++- src/display/editor/stamp.js | 10 +- test/integration/annotation_spec.mjs | 8 - test/integration/freetext_editor_spec.mjs | 24 +- test/integration/ink_editor_spec.mjs | 162 ++++++++++- test/integration/test_utils.mjs | 23 ++ test/pdfs/.gitignore | 2 + test/pdfs/inks.pdf | Bin 0 -> 108628 bytes test/pdfs/inks_basic.pdf | Bin 0 -> 7483 bytes test/test_manifest.json | 329 ++++++++++++++++++++++ 15 files changed, 753 insertions(+), 87 deletions(-) create mode 100644 test/pdfs/inks.pdf create mode 100644 test/pdfs/inks_basic.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index 0e3d816877a52..1c6877972f473 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -4382,7 +4382,7 @@ class InkAnnotation extends MarkupAnnotation { const { dict, xref } = params; this.data.annotationType = AnnotationType.INK; this.data.inkLists = []; - this.data.isEditable = !this.data.noHTML && this.data.it === "InkHighlight"; + this.data.isEditable = !this.data.noHTML; // We want to be able to add mouse listeners to the annotation. this.data.noHTML = false; this.data.opacity = dict.get("CA") || 1; @@ -4459,17 +4459,30 @@ class InkAnnotation extends MarkupAnnotation { } static createNewDict(annotation, xref, { apRef, ap }) { - const { color, opacity, paths, outlines, rect, rotation, thickness } = - annotation; - const ink = new Dict(xref); + const { + oldAnnotation, + color, + opacity, + paths, + outlines, + rect, + rotation, + thickness, + user, + } = annotation; + const ink = oldAnnotation || new Dict(xref); ink.set("Type", Name.get("Annot")); ink.set("Subtype", Name.get("Ink")); - ink.set("CreationDate", `D:${getModificationDate()}`); + ink.set(oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate()}`); ink.set("Rect", rect); ink.set("InkList", outlines?.points || paths.points); ink.set("F", 4); ink.set("Rotate", rotation); + if (user) { + ink.set("T", stringToAsciiOrUTF16BE(user)); + } + if (outlines) { // Free highlight. // There's nothing about this in the spec, but it's used when highlighting @@ -4524,12 +4537,15 @@ class InkAnnotation extends MarkupAnnotation { } for (const outline of paths.lines) { - for (let i = 0, ii = outline.length; i < ii; i += 6) { + appearanceBuffer.push( + `${numberToString(outline[4])} ${numberToString(outline[5])} m` + ); + for (let i = 6, ii = outline.length; i < ii; i += 6) { if (isNaN(outline[i])) { appearanceBuffer.push( `${numberToString(outline[i + 4])} ${numberToString( outline[i + 5] - )} m` + )} l` ); } else { const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6); @@ -5006,7 +5022,6 @@ class StampAnnotation extends MarkupAnnotation { oldAnnotation ? "M" : "CreationDate", `D:${getModificationDate()}` ); - stamp.set("CreationDate", `D:${getModificationDate()}`); stamp.set("Rect", rect); stamp.set("F", 4); stamp.set("Border", [0, 0, 0]); diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index fdfdf7e262cea..3198522d7733d 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -2792,6 +2792,8 @@ class CaretAnnotationElement extends AnnotationElement { } class InkAnnotationElement extends AnnotationElement { + #polylinesGroupElement = null; + #polylines = []; constructor(parameters) { @@ -2809,55 +2811,71 @@ class InkAnnotationElement extends AnnotationElement { : AnnotationEditorType.INK; } - render() { - this.container.classList.add(this.containerClassName); - - // Create an invisible polyline with the same points that acts as the - // trigger for the popup. - const { - data: { rect, rotation, inkLists, borderStyle, popupRef }, - } = this; - let { width, height } = getRectDims(rect); - let transform; - + #getTransform(rotation, rect) { // PDF coordinates are calculated from a bottom left origin, so // transform the polyline coordinates to a top left origin for the // SVG element. switch (rotation) { case 90: - transform = `rotate(90) translate(${-rect[0]},${rect[3] - height}) scale(1,-1)`; - [width, height] = [height, width]; - break; + return { + transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`, + width: rect[3] - rect[1], + height: rect[2] - rect[0], + }; case 180: - transform = `rotate(180) translate(${-rect[0] - width},${rect[3] - height}) scale(1,-1)`; - break; + return { + transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`, + width: rect[2] - rect[0], + height: rect[3] - rect[1], + }; case 270: - transform = `rotate(270) translate(${-rect[0] - width},${rect[3]}) scale(1,-1)`; - [width, height] = [height, width]; - break; + return { + transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`, + width: rect[3] - rect[1], + height: rect[2] - rect[0], + }; default: - transform = `translate(${-rect[0]},${rect[3]}) scale(1,-1)`; - break; + return { + transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`, + width: rect[2] - rect[0], + height: rect[3] - rect[1], + }; } + } + + render() { + this.container.classList.add(this.containerClassName); + + // Create an invisible polyline with the same points that acts as the + // trigger for the popup. + const { + data: { rect, rotation, inkLists, borderStyle, popupRef }, + } = this; + const { transform, width, height } = this.#getTransform(rotation, rect); const svg = this.svgFactory.create( width, height, /* skipDimensions = */ true ); - const basePolyline = this.svgFactory.createElement(this.svgElementName); + const g = (this.#polylinesGroupElement = + this.svgFactory.createElement("svg:g")); + svg.append(g); // Ensure that the 'stroke-width' is always non-zero, since otherwise it // won't be possible to open/close the popup (note e.g. issue 11122). - basePolyline.setAttribute("stroke-width", borderStyle.width || 1); - basePolyline.setAttribute("stroke", "transparent"); - basePolyline.setAttribute("fill", "transparent"); - basePolyline.setAttribute("transform", transform); + g.setAttribute("stroke-width", borderStyle.width || 1); + g.setAttribute("stroke-linecap", "round"); + g.setAttribute("stroke-linejoin", "round"); + g.setAttribute("stroke-miterlimit", 10); + g.setAttribute("stroke", "transparent"); + g.setAttribute("fill", "transparent"); + g.setAttribute("transform", transform); for (let i = 0, ii = inkLists.length; i < ii; i++) { - const polyline = i < ii - 1 ? basePolyline.cloneNode() : basePolyline; + const polyline = this.svgFactory.createElement(this.svgElementName); this.#polylines.push(polyline); polyline.setAttribute("points", inkLists[i].join(",")); - svg.append(polyline); + g.append(polyline); } if (!popupRef && this.hasPopupData) { @@ -2870,6 +2888,29 @@ class InkAnnotationElement extends AnnotationElement { return this.container; } + updateEdited(params) { + super.updateEdited(params); + const { thickness, points, rect } = params; + const g = this.#polylinesGroupElement; + if (thickness >= 0) { + g.setAttribute("stroke-width", thickness || 1); + } + if (points) { + for (let i = 0, ii = this.#polylines.length; i < ii; i++) { + this.#polylines[i].setAttribute("points", points[i].join(",")); + } + } + if (rect) { + const { transform, width, height } = this.#getTransform( + this.data.rotation, + rect + ); + const root = g.parentElement; + root.setAttribute("viewBox", `0 0 ${width} ${height}`); + g.setAttribute("transform", transform); + } + } + getElementsToTriggerPopup() { return this.#polylines; } diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index bcc7f2b574595..8e0314c7576c7 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -108,14 +108,7 @@ class InkDrawOutliner { } this.#last.set([x1, y1, x2, y2, x, y], 0); - this.#line.push( - (x1 + 5 * x2) / 6, - (y1 + 5 * y2) / 6, - (5 * x2 + x) / 6, - (5 * y2 + y) / 6, - (x2 + x) / 2, - (y2 + y) / 2 - ); + this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y)); return { path: { @@ -485,6 +478,51 @@ class InkDrawOutline extends Outline { break; } + if (!lines) { + lines = []; + for (const point of points) { + const len = point.length; + if (len === 2) { + lines.push( + new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]) + ); + continue; + } + if (len === 4) { + lines.push( + new Float32Array([ + NaN, + NaN, + NaN, + NaN, + point[0], + point[1], + NaN, + NaN, + NaN, + NaN, + point[2], + point[3], + ]) + ); + continue; + } + const line = new Float32Array(3 * (len - 2)); + lines.push(line); + let [x1, y1, x2, y2] = point.subarray(0, 4); + line.set([NaN, NaN, NaN, NaN, x1, y1], 0); + for (let i = 4; i < len; i += 2) { + const x = point[i]; + const y = point[i + 1]; + line.set( + Outline.createBezierPoints(x1, y1, x2, y2, x, y), + (i - 2) * 3 + ); + [x1, y1, x2, y2] = [x2, y2, x, y]; + } + } + } + for (let i = 0, ii = lines.length; i < ii; i++) { newLines.push({ line: rescaleFn( diff --git a/src/display/editor/drawers/outline.js b/src/display/editor/drawers/outline.js index 27fceed76d567..e06aafcb33ac9 100644 --- a/src/display/editor/drawers/outline.js +++ b/src/display/editor/drawers/outline.js @@ -97,6 +97,17 @@ class Outline { return [x, y]; } } + + static createBezierPoints(x1, y1, x2, y2, x3, y3) { + return [ + (x1 + 5 * x2) / 6, + (y1 + 5 * y2) / 6, + (5 * x2 + x3) / 6, + (5 * y2 + y3) / 6, + (x2 + x3) / 2, + (y2 + y3) / 2, + ]; + } } export { Outline }; diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index e47388e0a0fc3..026d225742e18 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -66,7 +66,7 @@ class AnnotationEditor { #hasBeenClicked = false; - #initialPosition = null; + #initialRect = null; #isEditing = false; @@ -468,13 +468,13 @@ class AnnotationEditor { * @param {number} y - y-translation in page coordinates. */ translateInPage(x, y) { - this.#initialPosition ||= [this.x, this.y]; + this.#initialRect ||= [this.x, this.y, this.width, this.height]; this.#translate(this.pageDimensions, x, y); this.div.scrollIntoView({ block: "nearest" }); } drag(tx, ty) { - this.#initialPosition ||= [this.x, this.y]; + this.#initialRect ||= [this.x, this.y, this.width, this.height]; const { div, parentDimensions: [parentWidth, parentHeight], @@ -530,9 +530,16 @@ class AnnotationEditor { get _hasBeenMoved() { return ( - !!this.#initialPosition && - (this.#initialPosition[0] !== this.x || - this.#initialPosition[1] !== this.y) + !!this.#initialRect && + (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y) + ); + } + + get _hasBeenResized() { + return ( + !!this.#initialRect && + (this.#initialRect[2] !== this.width || + this.#initialRect[3] !== this.height) ); } @@ -989,6 +996,7 @@ class AnnotationEditor { const newX = oppositeX - transfOppositePoint[0]; const newY = oppositeY - transfOppositePoint[1]; + this.#initialRect ||= [this.x, this.y, this.width, this.height]; this.width = newWidth; this.height = newHeight; this.x = newX; diff --git a/src/display/editor/ink.js b/src/display/editor/ink.js index e1a10f0c1739a..2f30dce592386 100644 --- a/src/display/editor/ink.js +++ b/src/display/editor/ink.js @@ -138,11 +138,44 @@ class InkEditor extends DrawingEditor { /** @inheritdoc */ static async deserialize(data, parent, uiManager) { + let initialData = null; if (data instanceof InkAnnotationElement) { - return null; + const { + data: { + inkLists, + rect, + rotation, + id, + color, + opacity, + borderStyle: { rawWidth: thickness }, + popupRef, + }, + parent: { + page: { pageNumber }, + }, + } = data; + initialData = data = { + annotationType: AnnotationEditorType.INK, + color: Array.from(color), + thickness, + opacity, + paths: { points: inkLists }, + boxes: null, + pageIndex: pageNumber - 1, + rect: rect.slice(0), + rotation, + id, + deleted: false, + popupRef, + }; } - return super.deserialize(data, parent, uiManager); + const editor = await super.deserialize(data, parent, uiManager); + editor.annotationElementId = data.id || null; + editor._initialData = initialData; + + return editor; } /** @inheritdoc */ @@ -214,9 +247,41 @@ class InkEditor extends DrawingEditor { structTreeParentId: this._structTreeParentId, }; + if (isForCopying) { + return serialized; + } + + if (this.annotationElementId && !this.#hasElementChanged(serialized)) { + return null; + } + serialized.id = this.annotationElementId; return serialized; } + + #hasElementChanged(serialized) { + const { color, thickness, opacity, pageIndex } = this._initialData; + return ( + this._hasBeenMoved || + this._hasBeenResized || + serialized.color.some((c, i) => c !== color[i]) || + serialized.thickness !== thickness || + serialized.opacity !== opacity || + serialized.pageIndex !== pageIndex + ); + } + + /** @inheritdoc */ + renderAnnotationElement(annotation) { + const { points, rect } = this.serializeDraw(/* isForCopying = */ false); + annotation.updateEdited({ + rect, + thickness: this._drawingOptions["stroke-width"], + points, + }); + + return null; + } } export { InkEditor }; diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index a2d0ff3dc6f71..972e009ca6a0b 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -921,19 +921,19 @@ class StampEditor extends AnnotationEditor { #hasElementChanged(serialized) { const { - rect, pageIndex, accessibilityData: { altText }, } = this._initialData; - const isSameRect = serialized.rect.every( - (x, i) => Math.abs(x - rect[i]) < 1 - ); const isSamePageIndex = serialized.pageIndex === pageIndex; const isSameAltText = (serialized.accessibilityData?.alt || "") === altText; return { - isSame: isSameRect && isSamePageIndex && isSameAltText, + isSame: + !this._hasBeenMoved && + !this._hasBeenResized && + isSamePageIndex && + isSameAltText, isSameAltText, }; } diff --git a/test/integration/annotation_spec.mjs b/test/integration/annotation_spec.mjs index 7431a17d17e22..4e444f5a452e0 100644 --- a/test/integration/annotation_spec.mjs +++ b/test/integration/annotation_spec.mjs @@ -504,14 +504,6 @@ describe("ResetForm action", () => { it("must check that the Ink annotation has a popup", async () => { await Promise.all( pages.map(async ([browserName, page]) => { - if (browserName) { - // TODO - pending( - "Re-enable this test when the Ink annotation has been made editable." - ); - return; - } - await page.waitForFunction( `document.querySelector("[data-annotation-id='25R']").hidden === false` ); diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 29e89f28ae32e..0c3f9d7242a7d 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -28,6 +28,7 @@ import { getSelectedEditors, getSerialized, hover, + isCanvasWhite, kbBigMoveDown, kbBigMoveLeft, kbBigMoveRight, @@ -988,27 +989,8 @@ describe("FreeText Editor", () => { pages.map(async ([browserName, page]) => { await switchToFreeText(page); - const isEditorWhite = editorRect => - page.evaluate(rect => { - const canvas = document.querySelector(".canvasWrapper canvas"); - const ctx = canvas.getContext("2d"); - rect ||= { - x: 0, - y: 0, - width: canvas.width, - height: canvas.height, - }; - const { data } = ctx.getImageData( - rect.x, - rect.y, - rect.width, - rect.height - ); - return data.every(x => x === 0xff); - }, editorRect); - // The page has been re-rendered but with no freetext annotations. - let isWhite = await isEditorWhite(); + let isWhite = await isCanvasWhite(page, 1); expect(isWhite).withContext(`In ${browserName}`).toBeTrue(); let editorIds = await getEditors(page, "freeText"); @@ -1066,7 +1048,7 @@ describe("FreeText Editor", () => { editorIds = await getEditors(page, "freeText"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(1); - isWhite = await isEditorWhite(editorRect); + isWhite = await isCanvasWhite(page, 1, editorRect); expect(isWhite).withContext(`In ${browserName}`).toBeTrue(); // Check we've now a div containing the text. diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 01ba30fcd85b0..1f908fde78488 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -17,9 +17,14 @@ import { awaitPromise, closePages, createPromise, + dragAndDropAnnotation, + getAnnotationSelector, + getEditors, getEditorSelector, getRect, getSelectedEditors, + getSerialized, + isCanvasWhite, kbRedo, kbSelectAll, kbUndo, @@ -27,8 +32,10 @@ import { scrollIntoView, switchToEditor, waitForNoElement, + waitForSelectedEditor, waitForSerialized, waitForStorageEntries, + waitForTimeout, } from "./test_utils.mjs"; const waitForPointerUp = page => @@ -580,7 +587,7 @@ describe("Ink Editor", () => { await closePages(pages); }); - it("must check that the color has been changed", async () => { + it("must check that the deletion has been undid", async () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToInk(page); @@ -669,4 +676,157 @@ describe("Ink Editor", () => { ); }); }); + + describe("Ink (update existing)", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("inks.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must update an existing annotation", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const annotationsRect = await page.evaluate(() => { + let xm = Infinity, + xM = -Infinity, + ym = Infinity, + yM = -Infinity; + for (const el of document.querySelectorAll( + "section.inkAnnotation" + )) { + const { x, y, width, height } = el.getBoundingClientRect(); + xm = Math.min(xm, x); + xM = Math.max(xM, x + width); + ym = Math.min(ym, y); + yM = Math.max(yM, y + height); + } + return { x: xm, y: ym, width: xM - xm, height: yM - ym }; + }); + + await switchToInk(page); + + // The page has been re-rendered but with no ink annotations. + let isWhite = await isCanvasWhite(page, 1, annotationsRect); + expect(isWhite).withContext(`In ${browserName}`).toBeTrue(); + + let editorIds = await getEditors(page, "ink"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(15); + + const pdfjsA = getEditorSelector(0); + const editorRect = await getRect(page, pdfjsA); + await page.mouse.click( + editorRect.x + editorRect.width / 2, + editorRect.y + editorRect.height / 2 + ); + await waitForSelectedEditor(page, pdfjsA); + + const red = "#ff0000"; + page.evaluate(value => { + window.PDFViewerApplication.eventBus.dispatch( + "switchannotationeditorparams", + { + source: null, + type: window.pdfjsLib.AnnotationEditorParamsType.INK_COLOR, + value, + } + ); + }, red); + + const serialized = await getSerialized(page); + expect(serialized.length).withContext(`In ${browserName}`).toEqual(1); + expect(serialized[0].color).toEqual([255, 0, 0]); + + // Disable editing mode. + await switchToInk(page, /* disable = */ true); + + // We want to check that the editor is displayed but not the original + // canvas. + editorIds = await getEditors(page, "ink"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(1); + + isWhite = await isCanvasWhite(page, 1, editorRect); + expect(isWhite).withContext(`In ${browserName}`).toBeTrue(); + + // Check we've now a svg with a red stroke. + await page.waitForSelector("svg[stroke = '#ff0000']", { + visible: true, + }); + + // Re-enable editing mode. + await switchToInk(page); + await page.focus(".annotationEditorLayer"); + + await kbUndo(page); + await waitForSerialized(page, 0); + + editorIds = await getEditors(page, "ink"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(15); + + // Undo again. + await kbUndo(page); + // Nothing should happen, it's why we can't wait for something + // specific! + // eslint-disable-next-line no-restricted-syntax + await waitForTimeout(200); + + // We check that the editor hasn't been removed. + editorIds = await getEditors(page, "ink"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(15); + }) + ); + }); + }); + + describe("Ink (move existing)", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("inks.pdf", getAnnotationSelector("277R")); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must move an annotation", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await page.click(getAnnotationSelector("277R"), { count: 2 }); + const edgeB = getEditorSelector(10); + await waitForSelectedEditor(page, edgeB); + + const editorIds = await getEditors(page, "ink"); + expect(editorIds.length).withContext(`In ${browserName}`).toEqual(15); + + // All the current annotations should be serialized as null objects + // because they haven't been edited yet. + const serialized = await getSerialized(page); + expect(serialized).withContext(`In ${browserName}`).toEqual([]); + + const editorRect = await page.$eval(edgeB, el => { + const { x, y, width, height } = el.getBoundingClientRect(); + return { x, y, width, height }; + }); + + // Select the annotation we want to move. + await page.mouse.click(editorRect.x + 2, editorRect.y + 2); + await waitForSelectedEditor(page, edgeB); + + await dragAndDropAnnotation( + page, + editorRect.x + editorRect.width / 2, + editorRect.y + editorRect.height / 2, + 100, + 100 + ); + await waitForSerialized(page, 1); + }) + ); + }); + }); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 65213567aa6c9..6138035b05122 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -781,6 +781,28 @@ function waitForNoElement(page, selector) { ); } +function isCanvasWhite(page, pageNumber, rectangle) { + return page.evaluate( + (rect, pageN) => { + const canvas = document.querySelector( + `.page[data-page-number = "${pageN}"] .canvasWrapper canvas` + ); + const canvasRect = canvas.getBoundingClientRect(); + const ctx = canvas.getContext("2d"); + rect ||= canvasRect; + const { data } = ctx.getImageData( + rect.x - canvasRect.x, + rect.y - canvasRect.y, + rect.width, + rect.height + ); + return new Uint32Array(data.buffer).every(x => x === 0xffffffff); + }, + rectangle, + pageNumber + ); +} + export { applyFunctionToEditor, awaitPromise, @@ -806,6 +828,7 @@ export { getSerialized, getSpanRectFromText, hover, + isCanvasWhite, isVisible, kbBigMoveDown, kbBigMoveLeft, diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 45949cc358c30..7083ac7d95f00 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -685,3 +685,5 @@ !issue19120.pdf !bug1934157.pdf !rotated_ink.pdf +!inks.pdf +!inks_basic.pdf diff --git a/test/pdfs/inks.pdf b/test/pdfs/inks.pdf new file mode 100644 index 0000000000000000000000000000000000000000..371144239fe0e190b5bbba7a18e5a606e4137dd4 GIT binary patch literal 108628 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

^A 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 98a5c23da1a40..d3167615d5f73 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10872,5 +10872,334 @@ "talos": false, "type": "eq", "link": true + }, + { + "id": "inks_basic-editor-save-print", + "file": "pdfs/inks_basic.pdf", + "md5": "2615610de59b4849993dcc2614ebb266", + "rounds": 1, + "lastPage": 1, + "type": "eq", + "save": true, + "print": true, + "annotationStorage": { + "pdfjs_internal_editor_0": { + "annotationType": 15, + "color": [241, 17, 41], + "opacity": 1, + "thickness": 20, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 114, + 691.5, + null, + null, + null, + null, + 159.75, + 631.5 + ] + ], + "points": [[114, 691.5, 159.75, 631.5]] + }, + "pageIndex": 0, + "rect": [ + 104.0000076523194, 621.5000049701105, 169.7500193485847, + 701.5000020036331 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "16R" + }, + "pdfjs_internal_editor_1": { + "id": "17R", + "deleted": true, + "pageIndex": 0, + "popupRef": "" + }, + "pdfjs_internal_editor_2": { + "annotationType": 15, + "color": [0, 0, 0], + "opacity": 1, + "thickness": 3, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 475.0961608886719, + 647.4615478515625, + null, + null, + null, + null, + 520.8461303710938, + 587.4615478515625 + ] + ], + "points": [ + [ + 475.0961608886719, 647.4615478515625, 520.8461303710938, + 587.4615478515625 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 473.59618278650134, 585.9615278473268, 522.3461772570244, + 648.9615135559669 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "18R" + }, + "pdfjs_internal_editor_3": { + "annotationType": 15, + "color": [250, 23, 28], + "opacity": 0.55, + "thickness": 3, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 79.04861450195312, + 532.353759765625, + null, + null, + null, + null, + 198.18736267089844, + 378.6045837402344 + ] + ], + "points": [ + [ + 79.04861450195312, 532.353759765625, 198.18736267089844, + 378.6045837402344 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 77.54861622361037, 377.10462435392236, 199.6873893210521, + 533.8537948498359 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "19R" + }, + "pdfjs_internal_editor_4": { + "annotationType": 15, + "color": [70, 108, 241], + "opacity": 0.7, + "thickness": 20, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 273.6300048828125, + 535.47998046875, + null, + null, + null, + null, + 319.3800048828125, + 475.4800109863281 + ] + ], + "points": [ + [ + 273.6300048828125, 535.47998046875, 319.3800048828125, + 475.4800109863281 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 263.629992209948, 465.48002000955444, 329.38000390621335, + 545.4799757370582 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "20R" + } + } + }, + { + "id": "inks_basic-editor-print", + "file": "pdfs/inks_basic.pdf", + "md5": "2615610de59b4849993dcc2614ebb266", + "rounds": 1, + "lastPage": 1, + "type": "eq", + "print": true, + "annotationStorage": { + "pdfjs_internal_editor_0": { + "annotationType": 15, + "color": [241, 17, 41], + "opacity": 1, + "thickness": 20, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 114, + 691.5, + null, + null, + null, + null, + 159.75, + 631.5 + ] + ], + "points": [[114, 691.5, 159.75, 631.5]] + }, + "pageIndex": 0, + "rect": [ + 104.0000076523194, 621.5000049701105, 169.7500193485847, + 701.5000020036331 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "16R" + }, + "pdfjs_internal_editor_1": { + "id": "17R", + "deleted": true, + "pageIndex": 0, + "popupRef": "" + }, + "pdfjs_internal_editor_2": { + "annotationType": 15, + "color": [0, 0, 0], + "opacity": 1, + "thickness": 3, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 475.0961608886719, + 647.4615478515625, + null, + null, + null, + null, + 520.8461303710938, + 587.4615478515625 + ] + ], + "points": [ + [ + 475.0961608886719, 647.4615478515625, 520.8461303710938, + 587.4615478515625 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 473.59618278650134, 585.9615278473268, 522.3461772570244, + 648.9615135559669 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "18R" + }, + "pdfjs_internal_editor_3": { + "annotationType": 15, + "color": [250, 23, 28], + "opacity": 0.55, + "thickness": 3, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 79.04861450195312, + 532.353759765625, + null, + null, + null, + null, + 198.18736267089844, + 378.6045837402344 + ] + ], + "points": [ + [ + 79.04861450195312, 532.353759765625, 198.18736267089844, + 378.6045837402344 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 77.54861622361037, 377.10462435392236, 199.6873893210521, + 533.8537948498359 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "19R" + }, + "pdfjs_internal_editor_4": { + "annotationType": 15, + "color": [70, 108, 241], + "opacity": 0.7, + "thickness": 20, + "paths": { + "lines": [ + [ + null, + null, + null, + null, + 273.6300048828125, + 535.47998046875, + null, + null, + null, + null, + 319.3800048828125, + 475.4800109863281 + ] + ], + "points": [ + [ + 273.6300048828125, 535.47998046875, 319.3800048828125, + 475.4800109863281 + ] + ] + }, + "pageIndex": 0, + "rect": [ + 263.629992209948, 465.48002000955444, 329.38000390621335, + 545.4799757370582 + ], + "rotation": 0, + "structTreeParentId": null, + "id": "20R" + } + } } ] From 716c01c468906028014ded26975ee5b3015c369f Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Sun, 24 Nov 2024 23:05:59 +0100 Subject: [PATCH 100/338] Replace createTemporaryNodeServer with TestPdfsServer Some tests rely on the presence of a server that serves PDF files. When tests are run from a web browser, the test files and PDF files are served by the same server (WebServer), but in Node.js that server is not around. Currently, the tests that depend on it start a minimal Node.js server that re-implements part of the functionality from WebServer. To avoid code duplication when tests depend on more complex behaviors, this patch replaces createTemporaryNodeServer with the existing WebServer, wrapped in a new test utility that has the same interface in Node.js and non-Node.js environments (=TestPdfsServer). This patch has been tested by running the refactored tests in the following three configurations: 1. From the browser: - http://localhost:8888/test/unit/unit_test.html?spec=api - http://localhost:8888/test/unit/unit_test.html?spec=fetch_stream 2. Run specific tests directly with jasmine without legacy bundling: `JASMINE_CONFIG_PATH=test/unit/clitests.json ./node_modules/.bin/jasmine --filter='^api|^fetch_stream'` 3. `gulp unittestcli` --- test/unit/api_spec.js | 24 ++---- test/unit/fetch_stream_spec.js | 27 ++----- test/unit/test_utils.js | 143 ++++++++++++++++++++------------- 3 files changed, 99 insertions(+), 95 deletions(-) diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 9d8641f729333..f7fa63b9e44b1 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -31,9 +31,9 @@ import { import { buildGetDocumentParams, CMAP_URL, - createTemporaryNodeServer, DefaultFileReaderFactory, TEST_PDFS_PATH, + TestPdfsServer, } from "./test_utils.js"; import { DefaultCanvasFactory, @@ -67,27 +67,17 @@ describe("api", function () { buildGetDocumentParams(tracemonkeyFileName); let CanvasFactory; - let tempServer = null; - beforeAll(function () { + beforeAll(async function () { CanvasFactory = new DefaultCanvasFactory({}); - if (isNodeJS) { - tempServer = createTemporaryNodeServer(); - } + await TestPdfsServer.ensureStarted(); }); - afterAll(function () { + afterAll(async function () { CanvasFactory = null; - if (isNodeJS) { - // Close the server from accepting new connections after all test - // finishes. - const { server } = tempServer; - server.close(); - - tempServer = null; - } + await TestPdfsServer.ensureStopped(); }); function waitSome(callback) { @@ -148,9 +138,7 @@ describe("api", function () { }); it("creates pdf doc from URL-object", async function () { - const urlObj = isNodeJS - ? new URL(`http://127.0.0.1:${tempServer.port}/${basicApiFileName}`) - : new URL(TEST_PDFS_PATH + basicApiFileName, window.location); + const urlObj = TestPdfsServer.resolveURL(basicApiFileName); const loadingTask = getDocument(urlObj); expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true); diff --git a/test/unit/fetch_stream_spec.js b/test/unit/fetch_stream_spec.js index 3fbe1efc10ef4..cc9fcbbb51d54 100644 --- a/test/unit/fetch_stream_spec.js +++ b/test/unit/fetch_stream_spec.js @@ -13,35 +13,22 @@ * limitations under the License. */ -import { AbortException, isNodeJS } from "../../src/shared/util.js"; -import { createTemporaryNodeServer } from "./test_utils.js"; +import { AbortException } from "../../src/shared/util.js"; import { PDFFetchStream } from "../../src/display/fetch_stream.js"; +import { TestPdfsServer } from "./test_utils.js"; describe("fetch_stream", function () { - let tempServer = null; - function getPdfUrl() { - return isNodeJS - ? `http://127.0.0.1:${tempServer.port}/tracemonkey.pdf` - : new URL("../pdfs/tracemonkey.pdf", window.location).href; + return TestPdfsServer.resolveURL("tracemonkey.pdf").href; } const pdfLength = 1016315; - beforeAll(function () { - if (isNodeJS) { - tempServer = createTemporaryNodeServer(); - } + beforeAll(async function () { + await TestPdfsServer.ensureStarted(); }); - afterAll(function () { - if (isNodeJS) { - // Close the server from accepting new connections after all test - // finishes. - const { server } = tempServer; - server.close(); - - tempServer = null; - } + afterAll(async function () { + await TestPdfsServer.ensureStopped(); }); it("read with streaming", async function () { diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index db2fdc2fde90a..d08098fdca474 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -122,73 +122,102 @@ function createIdFactory(pageIndex) { return page._localIdFactory; } -function createTemporaryNodeServer() { - assert(isNodeJS, "Should only be used in Node.js environments."); - - const fs = process.getBuiltinModule("fs"), - http = process.getBuiltinModule("http"); - function isAcceptablePath(requestUrl) { - try { - // Reject unnormalized paths, to protect against path traversal attacks. - const url = new URL(requestUrl, "https://localhost/"); - return url.pathname === requestUrl; - } catch { - return false; +// Some tests rely on special behavior from webserver.mjs. When loaded in the +// browser, the page is already served from WebServer. When running from +// Node.js, that is not the case. This helper starts the WebServer if needed, +// and offers a mechanism to resolve the URL in a uniform way. +class TestPdfsServer { + static #webServer; + + static #startCount = 0; + + static #startPromise; + + static async ensureStarted() { + if (this.#startCount++) { + // Already started before. E.g. from another beforeAll call. + return this.#startPromise; + } + if (!isNodeJS) { + // In web browsers, tests are presumably served by webserver.mjs. + return undefined; + } + + this.#startPromise = this.#startServer().finally(() => { + this.#startPromise = null; + }); + return this.#startPromise; + } + + static async #startServer() { + // WebServer from webserver.mjs is imported dynamically instead of + // statically because we do not need it when running from the browser. + let WebServer; + if (import.meta.url.endsWith("/lib-legacy/test/unit/test_utils.js")) { + // When "gulp unittestcli" is used to run tests, the tests are run from + // pdf.js/build/lib-legacy/test/ instead of directly from pdf.js/test/. + // eslint-disable-next-line import/no-unresolved + ({ WebServer } = await import("../../../../test/webserver.mjs")); + } else { + ({ WebServer } = await import("../webserver.mjs")); } + this.#webServer = new WebServer({ + host: "127.0.0.1", + root: TEST_PDFS_PATH, + }); + await new Promise(resolve => { + this.#webServer.start(resolve); + }); + } + + static async ensureStopped() { + assert(this.#startCount > 0, "ensureStarted() should be called first"); + assert(!this.#startPromise, "ensureStarted() should have resolved"); + if (--this.#startCount) { + // Keep server alive as long as there is an ensureStarted() that was not + // followed by an ensureStopped() call. + // This could happen if ensureStarted() was called again before + // ensureStopped() was called from afterAll(). + return; + } + if (!isNodeJS) { + // Web browsers cannot stop the server. + return; + } + + await new Promise(resolve => { + this.#webServer.stop(resolve); + this.#webServer = null; + }); + } + + /** + * @param {string} path - path to file within test/unit/pdf/ (TEST_PDFS_PATH). + * @returns {URL} + */ + static resolveURL(path) { + assert(this.#startCount > 0, "ensureStarted() should be called first"); + assert(!this.#startPromise, "ensureStarted() should have resolved"); + + if (isNodeJS) { + // Note: TestPdfsServer.ensureStarted() should be called first. + return new URL(path, `http://127.0.0.1:${this.#webServer.port}/`); + } + // When "gulp server" is used, our URL looks like + // http://localhost:8888/test/unit/unit_test.html + // The PDFs are served from: + // http://localhost:8888/test/pdfs/ + return new URL(TEST_PDFS_PATH + path, window.location); } - // Create http server to serve pdf data for tests. - const server = http - .createServer((request, response) => { - if (!isAcceptablePath(request.url)) { - response.writeHead(400); - response.end("Invalid path"); - return; - } - const filePath = process.cwd() + "/test/pdfs" + request.url; - fs.promises.lstat(filePath).then( - stat => { - if (!request.headers.range) { - const contentLength = stat.size; - const stream = fs.createReadStream(filePath); - response.writeHead(200, { - "Content-Type": "application/pdf", - "Content-Length": contentLength, - "Accept-Ranges": "bytes", - }); - stream.pipe(response); - } else { - const [start, end] = request.headers.range - .split("=")[1] - .split("-") - .map(x => Number(x)); - const stream = fs.createReadStream(filePath, { start, end }); - response.writeHead(206, { - "Content-Type": "application/pdf", - }); - stream.pipe(response); - } - }, - error => { - response.writeHead(404); - response.end(`File ${request.url} not found!`); - } - ); - }) - .listen(0); /* Listen on a random free port */ - - return { - server, - port: server.address().port, - }; } export { buildGetDocumentParams, CMAP_URL, createIdFactory, - createTemporaryNodeServer, DefaultFileReaderFactory, STANDARD_FONT_DATA_URL, TEST_PDFS_PATH, + TestPdfsServer, XRefMock, }; From 235ad65c4f93035636e83d3d1d48c3ec3006efc0 Mon Sep 17 00:00:00 2001 From: Rob Wu Date: Wed, 20 Nov 2024 02:42:13 +0100 Subject: [PATCH 101/338] Add test cases for redirected responses Regression tests for issue #12744 and PR #19028 --- test/unit/api_spec.js | 12 ++-- test/unit/common_pdfstream_tests.js | 90 +++++++++++++++++++++++++++++ test/unit/fetch_stream_spec.js | 30 ++++++++++ test/unit/network_spec.js | 39 +++++++++++++ test/unit/test_utils.js | 17 ++++++ test/webserver.mjs | 62 ++++++++++++++++++-- 6 files changed, 238 insertions(+), 12 deletions(-) create mode 100644 test/unit/common_pdfstream_tests.js diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index f7fa63b9e44b1..58cb5215b49aa 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -32,6 +32,7 @@ import { buildGetDocumentParams, CMAP_URL, DefaultFileReaderFactory, + getCrossOriginHostname, TEST_PDFS_PATH, TestPdfsServer, } from "./test_utils.js"; @@ -2977,17 +2978,14 @@ describe("api", function () { let loadingTask; function _checkCanLoad(expectSuccess, filename, options) { if (isNodeJS) { + // We can simulate cross-origin requests, but since Node.js does not + // enforce the Same Origin Policy, requests are expected to be allowed + // independently of withCredentials. pending("Cannot simulate cross-origin requests in Node.js"); } const params = buildGetDocumentParams(filename, options); const url = new URL(params.url); - if (url.hostname === "localhost") { - url.hostname = "127.0.0.1"; - } else if (params.url.hostname === "127.0.0.1") { - url.hostname = "localhost"; - } else { - pending("Can only run cross-origin test on localhost!"); - } + url.hostname = getCrossOriginHostname(url.hostname); params.url = url.href; loadingTask = getDocument(params); return loadingTask.promise diff --git a/test/unit/common_pdfstream_tests.js b/test/unit/common_pdfstream_tests.js new file mode 100644 index 0000000000000..b96620df9f5c2 --- /dev/null +++ b/test/unit/common_pdfstream_tests.js @@ -0,0 +1,90 @@ +/* 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. + */ + +import { AbortException, isNodeJS } from "../../src/shared/util.js"; +import { getCrossOriginHostname, TestPdfsServer } from "./test_utils.js"; + +// Common tests to verify behavior across implementations of the IPDFStream +// interface: +// - PDFNetworkStream by network_spec.js +// - PDFFetchStream by fetch_stream_spec.js +async function testCrossOriginRedirects({ + PDFStreamClass, + redirectIfRange, + testRangeReader, +}) { + const basicApiUrl = TestPdfsServer.resolveURL("basicapi.pdf").href; + const basicApiFileLength = 105779; + + const rangeSize = 32768; + const stream = new PDFStreamClass({ + url: getCrossOriginUrlWithRedirects(basicApiUrl, redirectIfRange), + length: basicApiFileLength, + rangeChunkSize: rangeSize, + disableStream: true, + disableRange: false, + }); + + const fullReader = stream.getFullReader(); + + await fullReader.headersReady; + // Sanity check: We can only test range requests if supported: + expect(fullReader.isRangeSupported).toEqual(true); + // ^ When range requests are supported (and streaming is disabled), the full + // initial request is aborted and we do not need to call fullReader.cancel(). + + const rangeReader = stream.getRangeReader( + basicApiFileLength - rangeSize, + basicApiFileLength + ); + + try { + await testRangeReader(rangeReader); + } finally { + rangeReader.cancel(new AbortException("Don't need rangeReader")); + } +} + +/** + * @param {string} testserverUrl - A URL handled that supports CORS and + * redirects (see crossOriginHandler and redirectHandler in webserver.mjs). + * @param {boolean} redirectIfRange - Whether Range requests should be + * redirected to a different origin compared to the initial request. + * @returns {string} A URL that will be redirected by the server. + */ +function getCrossOriginUrlWithRedirects(testserverUrl, redirectIfRange) { + const url = new URL(testserverUrl); + if (!isNodeJS) { + // The responses are going to be cross-origin. In Node.js, fetch() allows + // cross-origin requests for any request, but in browser environments we + // need to enable CORS. + // This option depends on crossOriginHandler in webserver.mjs. + url.searchParams.set("cors", "withoutCredentials"); + } + + // This redirect options depend on redirectHandler in webserver.mjs. + + // We will change the host to a cross-origin domain so that the initial + // request will be cross-origin. Set "redirectToHost" to the original host + // to force a cross-origin redirect (relative to the initial URL). + url.searchParams.set("redirectToHost", url.hostname); + url.hostname = getCrossOriginHostname(url.hostname); + if (redirectIfRange) { + url.searchParams.set("redirectIfRange", "1"); + } + return url.href; +} + +export { testCrossOriginRedirects }; diff --git a/test/unit/fetch_stream_spec.js b/test/unit/fetch_stream_spec.js index cc9fcbbb51d54..181818a594a77 100644 --- a/test/unit/fetch_stream_spec.js +++ b/test/unit/fetch_stream_spec.js @@ -15,6 +15,7 @@ import { AbortException } from "../../src/shared/util.js"; import { PDFFetchStream } from "../../src/display/fetch_stream.js"; +import { testCrossOriginRedirects } from "./common_pdfstream_tests.js"; import { TestPdfsServer } from "./test_utils.js"; describe("fetch_stream", function () { @@ -116,4 +117,33 @@ describe("fetch_stream", function () { expect(result1.value).toEqual(rangeSize); expect(result2.value).toEqual(tailSize); }); + + describe("Redirects", function () { + it("redirects allowed if all responses are same-origin", async function () { + await testCrossOriginRedirects({ + PDFStreamClass: PDFFetchStream, + redirectIfRange: false, + async testRangeReader(rangeReader) { + await expectAsync(rangeReader.read()).toBeResolved(); + }, + }); + }); + + it("redirects blocked if any response is cross-origin", async function () { + await testCrossOriginRedirects({ + PDFStreamClass: PDFFetchStream, + redirectIfRange: true, + async testRangeReader(rangeReader) { + // When read (sync), error should be reported. + await expectAsync(rangeReader.read()).toBeRejectedWithError( + /^Expected range response-origin "http:.*" to match "http:.*"\.$/ + ); + // When read again (async), error should be consistent. + await expectAsync(rangeReader.read()).toBeRejectedWithError( + /^Expected range response-origin "http:.*" to match "http:.*"\.$/ + ); + }, + }); + }); + }); }); diff --git a/test/unit/network_spec.js b/test/unit/network_spec.js index 9a55b4771ff0e..367e525601ed9 100644 --- a/test/unit/network_spec.js +++ b/test/unit/network_spec.js @@ -15,6 +15,8 @@ import { AbortException } from "../../src/shared/util.js"; import { PDFNetworkStream } from "../../src/display/network.js"; +import { testCrossOriginRedirects } from "./common_pdfstream_tests.js"; +import { TestPdfsServer } from "./test_utils.js"; describe("network", function () { const pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href; @@ -115,4 +117,41 @@ describe("network", function () { expect(isRangeSupported).toEqual(true); expect(fullReaderCancelled).toEqual(true); }); + + describe("Redirects", function () { + beforeAll(async function () { + await TestPdfsServer.ensureStarted(); + }); + + afterAll(async function () { + await TestPdfsServer.ensureStopped(); + }); + + it("redirects allowed if all responses are same-origin", async function () { + await testCrossOriginRedirects({ + PDFStreamClass: PDFNetworkStream, + redirectIfRange: false, + async testRangeReader(rangeReader) { + await expectAsync(rangeReader.read()).toBeResolved(); + }, + }); + }); + + it("redirects blocked if any response is cross-origin", async function () { + await testCrossOriginRedirects({ + PDFStreamClass: PDFNetworkStream, + redirectIfRange: true, + async testRangeReader(rangeReader) { + // When read (sync), error should be reported. + await expectAsync(rangeReader.read()).toBeRejectedWithError( + /^Expected range response-origin "http:.*" to match "http:.*"\.$/ + ); + // When read again (async), error should be consistent. + await expectAsync(rangeReader.read()).toBeRejectedWithError( + /^Expected range response-origin "http:.*" to match "http:.*"\.$/ + ); + }, + }); + }); + }); }); diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index d08098fdca474..4361ebac68205 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -51,6 +51,22 @@ function buildGetDocumentParams(filename, options) { return params; } +function getCrossOriginHostname(hostname) { + if (hostname === "localhost") { + // Note: This does not work if localhost is listening on IPv6 only. + // As a work-around, visit the IPv6 version at: + // http://[::1]:8888/test/unit/unit_test.html?spec=Cross-origin + return "127.0.0.1"; + } + + if (hostname === "127.0.0.1" || hostname === "[::1]") { + return "localhost"; + } + + // FQDN are cross-origin and browsers usually resolve them to the same server. + return hostname.endsWith(".") ? hostname.slice(0, -1) : hostname + "."; +} + class XRefMock { constructor(array) { this._map = Object.create(null); @@ -216,6 +232,7 @@ export { CMAP_URL, createIdFactory, DefaultFileReaderFactory, + getCrossOriginHostname, STANDARD_FONT_DATA_URL, TEST_PDFS_PATH, TestPdfsServer, diff --git a/test/webserver.mjs b/test/webserver.mjs index e0295f3a2865e..fffd8d72aa5ec 100644 --- a/test/webserver.mjs +++ b/test/webserver.mjs @@ -52,7 +52,7 @@ class WebServer { this.cacheExpirationTime = cacheExpirationTime || 0; this.disableRangeRequests = false; this.hooks = { - GET: [crossOriginHandler], + GET: [crossOriginHandler, redirectHandler], POST: [], }; } @@ -308,6 +308,11 @@ class WebServer { } #serveFileRange(response, fileURL, fileSize, start, end) { + if (end > fileSize || start > end) { + response.writeHead(416); + response.end(); + return; + } const stream = fs.createReadStream(fileURL, { flags: "rs", start, @@ -336,18 +341,65 @@ class WebServer { } // This supports the "Cross-origin" test in test/unit/api_spec.js -// It is here instead of test.js so that when the test will still complete as +// and "Redirects" in test/unit/network_spec.js and +// test/unit/fetch_stream_spec.js via test/unit/common_pdfstream_tests.js. +// It is here instead of test.mjs so that when the test will still complete as // expected if the user does "gulp server" and then visits // http://localhost:8888/test/unit/unit_test.html?spec=Cross-origin function crossOriginHandler(url, request, response) { if (url.pathname === "/test/pdfs/basicapi.pdf") { + if (!url.searchParams.has("cors") || !request.headers.origin) { + return; + } + response.setHeader("Access-Control-Allow-Origin", request.headers.origin); if (url.searchParams.get("cors") === "withCredentials") { - response.setHeader("Access-Control-Allow-Origin", request.headers.origin); response.setHeader("Access-Control-Allow-Credentials", "true"); - } else if (url.searchParams.get("cors") === "withoutCredentials") { - response.setHeader("Access-Control-Allow-Origin", request.headers.origin); + } // withoutCredentials does not include Access-Control-Allow-Credentials. + response.setHeader( + "Access-Control-Expose-Headers", + "Accept-Ranges,Content-Range" + ); + response.setHeader("Vary", "Origin"); + } +} + +// This supports the "Redirects" test in test/unit/network_spec.js and +// test/unit/fetch_stream_spec.js via test/unit/common_pdfstream_tests.js. +// It is here instead of test.mjs so that when the test will still complete as +// expected if the user does "gulp server" and then visits +// http://localhost:8888/test/unit/unit_test.html?spec=Redirects +function redirectHandler(url, request, response) { + const redirectToHost = url.searchParams.get("redirectToHost"); + if (redirectToHost) { + // Chrome may serve byte range requests directly from the cache, potentially + // from a full request or a different range, without involving the server. + // To prevent this from happening, make sure that the response is never + // cached, so that Range requests are never served from the browser cache. + response.setHeader("Cache-Control", "no-store,max-age=0"); + + if (url.searchParams.get("redirectIfRange") && !request.headers.range) { + return false; + } + try { + const newURL = new URL(url); + newURL.hostname = redirectToHost; + // Delete test-only query parameters to avoid infinite redirects. + newURL.searchParams.delete("redirectToHost"); + newURL.searchParams.delete("redirectIfRange"); + if (newURL.hostname !== redirectToHost) { + throw new Error(`Invalid hostname: ${redirectToHost}`); + } + response.setHeader("Location", newURL.href); + } catch { + response.writeHead(500); + response.end(); + return true; } + response.writeHead(302); + response.end(); + return true; } + return false; } export { WebServer }; From 80a01c561b43e013651a464153e4cf9111628cdc Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Tue, 8 Oct 2024 10:51:20 +0200 Subject: [PATCH 102/338] Break messageBar class out Move .messageBar out of .dialog into its own standalone class in order to reuse as much of it for the upcoming feature for an undo message for annotations. --- web/dialog.css | 93 ++------------------------------ web/message_bar.css | 127 ++++++++++++++++++++++++++++++++++++++++++++ web/pdf_viewer.css | 1 + 3 files changed, 132 insertions(+), 89 deletions(-) create mode 100644 web/message_bar.css diff --git a/web/dialog.css b/web/dialog.css index c36393fc35011..3a5ba15d44932 100644 --- a/web/dialog.css +++ b/web/dialog.css @@ -270,29 +270,17 @@ } .messageBar { - --message-bar-warning-icon: url(images/messageBar_warning.svg); - --closing-button-icon: url(images/messageBar_closingButton.svg); - --message-bar-bg-color: #ffebcd; --message-bar-fg-color: #15141a; --message-bar-border-color: rgb(0 0 0 / 0.08); + --message-bar-icon: url(images/messageBar_warning.svg); --message-bar-icon-color: #cd411e; - --message-bar-close-button-border-radius: 4px; - --message-bar-close-button-border: none; - --message-bar-close-button-color: var(--text-primary-color); - --message-bar-close-button-hover-bg-color: rgb(21 20 26 / 0.14); - --message-bar-close-button-active-bg-color: rgb(21 20 26 / 0.21); - --message-bar-close-button-focus-bg-color: rgb(21 20 26 / 0.07); - --message-bar-close-button-color-hover: var(--text-primary-color); @media (prefers-color-scheme: dark) { --message-bar-bg-color: #5a3100; --message-bar-fg-color: #fbfbfe; --message-bar-border-color: rgb(255 255 255 / 0.08); --message-bar-icon-color: #e49c49; - --message-bar-close-button-hover-bg-color: rgb(251 251 254 / 0.14); - --message-bar-close-button-active-bg-color: rgb(251 251 254 / 0.21); - --message-bar-close-button-focus-bg-color: rgb(251 251 254 / 0.07); } @media screen and (forced-colors: active) { @@ -300,43 +288,14 @@ --message-bar-fg-color: CanvasText; --message-bar-border-color: CanvasText; --message-bar-icon-color: CanvasText; - --message-bar-close-button-color: ButtonText; - --message-bar-close-button-border: 1px solid ButtonText; - --message-bar-close-button-hover-bg-color: ButtonText; - --message-bar-close-button-active-bg-color: ButtonText; - --message-bar-close-button-focus-bg-color: ButtonText; - --message-bar-close-button-color-hover: HighlightText; } - display: flex; - position: relative; - padding: 12px 8px 12px 0; - flex-direction: column; - justify-content: center; - align-items: flex-start; - gap: 8px; align-self: stretch; - border-radius: 4px; - border: 1px solid var(--message-bar-border-color); - background: var(--message-bar-bg-color); - color: var(--message-bar-fg-color); - > div { - display: flex; - padding-inline-start: 16px; - align-items: flex-start; - gap: 8px; - align-self: stretch; - - &::before { - content: ""; - display: inline-block; - width: 16px; - height: 16px; - mask-image: var(--message-bar-warning-icon); - mask-size: cover; - background-color: var(--message-bar-icon-color); + &::before, + > div { + margin-block: 4px; } > div { @@ -356,50 +315,6 @@ } } } - - .closeButton { - position: absolute; - width: 32px; - height: 32px; - inset-inline-end: 8px; - inset-block-start: 8px; - background: none; - border-radius: var(--message-bar-close-button-border-radius); - border: var(--message-bar-close-button-border); - - &::before { - content: ""; - display: inline-block; - width: 16px; - height: 16px; - mask-image: var(--closing-button-icon); - mask-size: cover; - background-color: var(--message-bar-close-button-color); - } - - &:is(:hover, :active, :focus)::before { - background-color: var(--message-bar-close-button-color-hover); - } - - &:hover { - background-color: var(--message-bar-close-button-hover-bg-color); - } - - &:active { - background-color: var(--message-bar-close-button-active-bg-color); - } - - &:focus { - background-color: var(--message-bar-close-button-focus-bg-color); - } - - > span { - display: inline-block; - width: 0; - height: 0; - overflow: hidden; - } - } } .toggler { diff --git a/web/message_bar.css b/web/message_bar.css new file mode 100644 index 0000000000000..2e908f4785608 --- /dev/null +++ b/web/message_bar.css @@ -0,0 +1,127 @@ +/* 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. + */ + +.messageBar { + --closing-button-icon: url(images/messageBar_closingButton.svg); + --message-bar-close-button-color: var(--text-primary-color); + --message-bar-close-button-color-hover: var(--text-primary-color); + --message-bar-close-button-border-radius: 4px; + --message-bar-close-button-border: none; + --message-bar-close-button-hover-bg-color: rgb(21 20 26 / 0.14); + --message-bar-close-button-active-bg-color: rgb(21 20 26 / 0.21); + --message-bar-close-button-focus-bg-color: rgb(21 20 26 / 0.07); + + @media (prefers-color-scheme: dark) { + --message-bar-close-button-hover-bg-color: rgb(251 251 254 / 0.14); + --message-bar-close-button-active-bg-color: rgb(251 251 254 / 0.21); + --message-bar-close-button-focus-bg-color: rgb(251 251 254 / 0.07); + } + + @media screen and (forced-colors: active) { + --message-bar-close-button-color: ButtonText; + --message-bar-close-button-border: 1px solid ButtonText; + --message-bar-close-button-hover-bg-color: ButtonText; + --message-bar-close-button-active-bg-color: ButtonText; + --message-bar-close-button-focus-bg-color: ButtonText; + --message-bar-close-button-color-hover: HighlightText; + } + + display: flex; + position: relative; + padding: 8px 8px 8px 16px; + flex-direction: column; + justify-content: center; + align-items: center; + gap: 8px; + user-select: none; + + border-radius: 4px; + + border: 1px solid var(--message-bar-border-color); + background: var(--message-bar-bg-color); + color: var(--message-bar-fg-color); + + > div { + display: flex; + align-items: flex-start; + gap: 8px; + align-self: stretch; + + &::before { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + mask-image: var(--message-bar-icon); + mask-size: cover; + background-color: var(--message-bar-icon-color); + flex-shrink: 0; + } + } + + button { + cursor: pointer; + + &:focus-visible { + outline: var(--focus-ring-outline); + outline-offset: 2px; + } + } + + .closeButton { + width: 32px; + height: 32px; + background: none; + border-radius: var(--message-bar-close-button-border-radius); + border: var(--message-bar-close-button-border); + + display: flex; + align-items: center; + justify-content: center; + + &::before { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + mask-image: var(--closing-button-icon); + mask-size: cover; + background-color: var(--message-bar-close-button-color); + } + + &:is(:hover, :active, :focus)::before { + background-color: var(--message-bar-close-button-color-hover); + } + + &:hover { + background-color: var(--message-bar-close-button-hover-bg-color); + } + + &:active { + background-color: var(--message-bar-close-button-active-bg-color); + } + + &:focus { + background-color: var(--message-bar-close-button-focus-bg-color); + } + + > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; + } + } +} diff --git a/web/pdf_viewer.css b/web/pdf_viewer.css index ec7bceb69a9aa..115a8f8532b82 100644 --- a/web/pdf_viewer.css +++ b/web/pdf_viewer.css @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +@import url(message_bar.css); @import url(dialog.css); @import url(text_layer_builder.css); @import url(annotation_layer_builder.css); From 453ed23e9abbcaf65cd13a274a1d7559e0c36b16 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Tue, 22 Oct 2024 13:23:47 +0530 Subject: [PATCH 103/338] Pop open a message when user deletes an annotation When a user deletes any number of annotations, they are notified of the action by a popup message with an undo button. Besides that, this change reuses the existing messageBar CSS class from the new alt-text dialog as much as possible. --- gulpfile.mjs | 1 + l10n/en-US/viewer.ftl | 21 ++++++ src/display/editor/draw.js | 1 + src/display/editor/editor.js | 2 + src/display/editor/tools.js | 14 +++- web/app.js | 37 +++++++++- web/editor_undo_bar.js | 128 +++++++++++++++++++++++++++++++++++ web/message_bar.css | 94 +++++++++++++++++++++++++ web/pdf_viewer.js | 6 +- web/viewer.html | 14 ++++ web/viewer.js | 6 ++ 11 files changed, 321 insertions(+), 3 deletions(-) create mode 100644 web/editor_undo_bar.js diff --git a/gulpfile.mjs b/gulpfile.mjs index 539e199cff6d3..57c8c66d16461 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1148,6 +1148,7 @@ function buildComponents(defines, dir) { "web/images/messageBar_*.svg", "web/images/toolbarButton-{editorHighlight,menuArrow}.svg", "web/images/cursor-*.svg", + "web/images/secondaryToolbarButton-documentProperties.svg", ]; return ordered([ diff --git a/l10n/en-US/viewer.ftl b/l10n/en-US/viewer.ftl index fbff0d86a9c36..3e4a3510cf83d 100644 --- a/l10n/en-US/viewer.ftl +++ b/l10n/en-US/viewer.ftl @@ -503,3 +503,24 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-close-button = Close + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Highlight removed +pdfjs-editor-undo-bar-message-freetext = Text removed +pdfjs-editor-undo-bar-message-ink = Drawing removed +pdfjs-editor-undo-bar-message-stamp = Image removed +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotation removed + *[other] { $count } annotations removed + } + +pdfjs-editor-undo-bar-undo-button = + .title = Undo +pdfjs-editor-undo-bar-undo-button-label = Undo +pdfjs-editor-undo-bar-close-button = + .title = Close +pdfjs-editor-undo-bar-close-button-label = Close diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index 3906fc4ee9f6e..d5f1c4bb02835 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -676,6 +676,7 @@ class DrawingEditor extends AnnotationEditor { signal, }); parent.toggleDrawing(); + uiManager._editorUndoBar?.hide(); if (this._currentDraw) { parent.drawLayer.updateProperties( diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 026d225742e18..50aff8624d838 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -1142,6 +1142,8 @@ class AnnotationEditor { bindEvents(this, this.div, ["pointerdown"]); + this._uiManager._editorUndoBar?.hide(); + return this.div; } diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index d608324885a28..cb1d9e24b74bf 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -620,6 +620,8 @@ class AnnotationEditorUIManager { #editorsToRescale = new Set(); + _editorUndoBar = null; + #enableHighlightFloatingButton = false; #enableUpdatedAddImage = false; @@ -829,7 +831,8 @@ class AnnotationEditorUIManager { enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, - mlManager + mlManager, + editorUndoBar ) { const signal = (this._signal = this.#abortController.signal); this.#container = container; @@ -864,6 +867,7 @@ class AnnotationEditorUIManager { rotation: 0, }; this.isShiftKeyDown = false; + this._editorUndoBar = editorUndoBar || null; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { Object.defineProperty(this, "reset", { @@ -904,6 +908,7 @@ class AnnotationEditorUIManager { clearTimeout(this.#translationTimeoutId); this.#translationTimeoutId = null; } + this._editorUndoBar?.destroy(); } combinedSignal(ac) { @@ -1656,6 +1661,8 @@ class AnnotationEditorUIManager { this.setEditingState(false); this.#disableAll(); + this._editorUndoBar?.hide(); + this.#updateModeCapability.resolve(); return; } @@ -2038,6 +2045,7 @@ class AnnotationEditorUIManager { hasSomethingToRedo: true, isEmpty: this.#isEmpty(), }); + this._editorUndoBar?.hide(); } /** @@ -2099,6 +2107,10 @@ class AnnotationEditorUIManager { ? [drawingEditor] : [...this.#selectedEditors]; const cmd = () => { + this._editorUndoBar?.show( + undo, + editors.length === 1 ? editors[0].editorType : editors.length + ); for (const editor of editors) { editor.remove(); } diff --git a/web/app.js b/web/app.js index ea9ea83bea515..0242743d6d93d 100644 --- a/web/app.js +++ b/web/app.js @@ -69,6 +69,7 @@ import { AltTextManager } from "web-alt_text_manager"; import { AnnotationEditorParams } from "web-annotation_editor_params"; import { CaretBrowsingMode } from "./caret_browsing.js"; import { DownloadManager } from "web-download_manager"; +import { EditorUndoBar } from "./editor_undo_bar.js"; import { OverlayManager } from "./overlay_manager.js"; import { PasswordPrompt } from "./password_prompt.js"; import { PDFAttachmentViewer } from "web-pdf_attachment_viewer"; @@ -192,6 +193,7 @@ const PDFViewerApplication = { _isCtrlKeyDown: false, _caretBrowsing: null, _isScrolling: false, + editorUndoBar: null, // Called once when the document is loaded. async initialize(appConfig) { @@ -461,6 +463,10 @@ const PDFViewerApplication = { : null; } + if (appConfig.editorUndoBar) { + this.editorUndoBar = new EditorUndoBar(appConfig.editorUndoBar, eventBus); + } + const enableHWA = AppOptions.get("enableHWA"); const pdfViewer = new PDFViewer({ container, @@ -470,6 +476,7 @@ const PDFViewerApplication = { linkService: pdfLinkService, downloadManager, altTextManager, + editorUndoBar: this.editorUndoBar, findController, scriptingManager: AppOptions.get("enableScripting") && pdfScriptingManager, @@ -2747,7 +2754,7 @@ function onTouchEnd(evt) { this._isPinching = false; } -function onClick(evt) { +function closeSecondaryToolbar(evt) { if (!this.secondaryToolbar?.isOpen) { return; } @@ -2764,6 +2771,20 @@ function onClick(evt) { } } +function closeEditorUndoBar(evt) { + if (!this.editorUndoBar?.isOpen) { + return; + } + if (this.appConfig.secondaryToolbar?.toolbar.contains(evt.target)) { + this.editorUndoBar.hide(); + } +} + +function onClick(evt) { + closeSecondaryToolbar.call(this, evt); + closeEditorUndoBar.call(this, evt); +} + function onKeyUp(evt) { // evt.ctrlKey is false hence we use evt.key. if (evt.key === "Control") { @@ -2774,6 +2795,20 @@ function onKeyUp(evt) { function onKeyDown(evt) { this._isCtrlKeyDown = evt.key === "Control"; + if ( + this.editorUndoBar?.isOpen && + evt.keyCode !== 9 && + evt.keyCode !== 16 && + !( + (evt.keyCode === 13 || evt.keyCode === 32) && + getActiveOrFocusedElement() === this.appConfig.editorUndoBar.undoButton + ) + ) { + // Hide undo bar on keypress except for Shift, Tab, Shift+Tab. + // Also avoid hiding if the undo button is triggered. + this.editorUndoBar.hide(); + } + if (this.overlayManager.active) { return; } diff --git a/web/editor_undo_bar.js b/web/editor_undo_bar.js new file mode 100644 index 0000000000000..aa064e3841f0c --- /dev/null +++ b/web/editor_undo_bar.js @@ -0,0 +1,128 @@ +/* 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. + */ + +import { noContextMenu } from "pdfjs-lib"; + +class EditorUndoBar { + #closeButton = null; + + #container; + + #eventBus = null; + + #focusTimeout = null; + + #initController = null; + + isOpen = false; + + #message; + + #showController = null; + + #undoButton; + + static #l10nMessages = Object.freeze({ + highlight: "pdfjs-editor-undo-bar-message-highlight", + freetext: "pdfjs-editor-undo-bar-message-freetext", + stamp: "pdfjs-editor-undo-bar-message-stamp", + ink: "pdfjs-editor-undo-bar-message-ink", + _multiple: "pdfjs-editor-undo-bar-message-multiple", + }); + + constructor({ container, message, undoButton, closeButton }, eventBus) { + this.#container = container; + this.#message = message; + this.#undoButton = undoButton; + this.#closeButton = closeButton; + this.#eventBus = eventBus; + } + + destroy() { + this.#initController?.abort(); + this.#initController = null; + + this.hide(); + } + + show(undoAction, messageData) { + if (!this.#initController) { + this.#initController = new AbortController(); + const opts = { signal: this.#initController.signal }; + const boundHide = this.hide.bind(this); + + this.#container.addEventListener("contextmenu", noContextMenu, opts); + this.#closeButton.addEventListener("click", boundHide, opts); + this.#eventBus._on("beforeprint", boundHide, opts); + this.#eventBus._on("download", boundHide, opts); + } + + this.hide(); + + if (typeof messageData === "string") { + this.#message.setAttribute( + "data-l10n-id", + EditorUndoBar.#l10nMessages[messageData] + ); + } else { + this.#message.setAttribute( + "data-l10n-id", + EditorUndoBar.#l10nMessages._multiple + ); + this.#message.setAttribute( + "data-l10n-args", + JSON.stringify({ count: messageData }) + ); + } + this.isOpen = true; + this.#container.hidden = false; + + this.#showController = new AbortController(); + + this.#undoButton.addEventListener( + "click", + () => { + undoAction(); + this.hide(); + }, + { signal: this.#showController.signal } + ); + + // Without the setTimeout, VoiceOver will read out the document title + // instead of the popup label. + this.#focusTimeout = setTimeout(() => { + this.#container.focus(); + this.#focusTimeout = null; + }, 100); + } + + hide() { + if (!this.isOpen) { + return; + } + this.isOpen = false; + this.#container.hidden = true; + + this.#showController?.abort(); + this.#showController = null; + + if (this.#focusTimeout) { + clearTimeout(this.#focusTimeout); + this.#focusTimeout = null; + } + } +} + +export { EditorUndoBar }; diff --git a/web/message_bar.css b/web/message_bar.css index 2e908f4785608..4a948d2eda055 100644 --- a/web/message_bar.css +++ b/web/message_bar.css @@ -125,3 +125,97 @@ } } } + +#editorUndoBar { + --text-primary-color: #15141a; + + --message-bar-icon: url(images/secondaryToolbarButton-documentProperties.svg); + --message-bar-icon-color: #0060df; + --message-bar-bg-color: #deeafc; + --message-bar-fg-color: var(--text-primary-color); + --message-bar-border-color: rgb(0 0 0 / 0.08); + + --undo-button-bg-color: rgb(21 20 26 / 0.07); + --undo-button-bg-color-hover: rgb(21 20 26 / 0.14); + --undo-button-bg-color-active: rgb(21 20 26 / 0.21); + + --undo-button-fg-color: var(--message-bar-fg-color); + --undo-button-fg-color-hover: var(--undo-button-fg-color); + --undo-button-fg-color-active: var(--undo-button-fg-color); + + --focus-ring-color: #0060df; + --focus-ring-outline: 2px solid var(--focus-ring-color); + + @media (prefers-color-scheme: dark) { + --text-primary-color: #fbfbfe; + + --message-bar-icon-color: #73a7f3; + --message-bar-bg-color: #003070; + --message-bar-border-color: rgb(255 255 255 / 0.08); + + --undo-button-bg-color: rgb(255 255 255 / 0.08); + --undo-button-bg-color-hover: rgb(255 255 255 / 0.14); + --undo-button-bg-color-active: rgb(255 255 255 / 0.21); + } + + @media screen and (forced-colors: active) { + --text-primary-color: CanvasText; + + --message-bar-icon-color: CanvasText; + --message-bar-bg-color: Canvas; + --message-bar-border-color: CanvasText; + + --undo-button-bg-color: ButtonText; + --undo-button-bg-color-hover: SelectedItem; + --undo-button-bg-color-active: SelectedItem; + + --undo-button-fg-color: ButtonFace; + --undo-button-fg-color-hover: SelectedItemText; + --undo-button-fg-color-active: SelectedItemText; + + --focus-ring-color: CanvasText; + } + + position: fixed; + top: 50px; + left: 50%; + transform: translateX(-50%); + z-index: 10; + + padding-block: 8px; + padding-inline: 16px 8px; + + font: menu; + font-size: 15px; + + cursor: default; + + button { + cursor: pointer; + } + + #editorUndoBarUndoButton { + border-radius: 4px; + font-weight: 590; + line-height: 19.5px; + color: var(--undo-button-fg-color); + border: none; + padding: 4px 16px; + margin-inline-start: 8px; + height: 32px; + + background-color: var(--undo-button-bg-color); + + &:hover { + background-color: var(--undo-button-bg-color-hover); + } + + &:active { + background-color: var(--undo-button-bg-color-active); + } + } + + > div { + align-items: center; + } +} diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 6f05d56fe7c09..e968db3f14810 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -214,6 +214,8 @@ class PDFViewer { #containerTopLeft = null; + #editorUndoBar = null; + #enableHWA = false; #enableHighlightFloatingButton = false; @@ -281,6 +283,7 @@ class PDFViewer { this.downloadManager = options.downloadManager || null; this.findController = options.findController || null; this.#altTextManager = options.altTextManager || null; + this.#editorUndoBar = options.editorUndoBar || null; if (this.findController) { this.findController.onIsPageVisible = pageNumber => @@ -907,7 +910,8 @@ class PDFViewer { this.#enableHighlightFloatingButton, this.#enableUpdatedAddImage, this.#enableNewAltTextWhenAddingImage, - this.#mlManager + this.#mlManager, + this.#editorUndoBar ); eventBus.dispatch("annotationeditoruimanager", { source: this, diff --git a/web/viewer.html b/web/viewer.html index 82445ced04d0c..9d28650020c1f 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -688,6 +688,20 @@ +

+
diff --git a/web/viewer.js b/web/viewer.js index 7bd314fa1cc52..913d8f0bb75ee 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -223,6 +223,12 @@ function getViewerConfiguration() { editorHighlightShowAll: document.getElementById("editorHighlightShowAll"), }, printContainer: document.getElementById("printContainer"), + editorUndoBar: { + container: document.getElementById("editorUndoBar"), + message: document.getElementById("editorUndoBarMessage"), + undoButton: document.getElementById("editorUndoBarUndoButton"), + closeButton: document.getElementById("editorUndoBarCloseButton"), + }, }; } From 6352d3338abd3b9e7a48f916b32ffba13d9ddf84 Mon Sep 17 00:00:00 2001 From: Aditi <62544124+Aditi-1400@users.noreply.github.com> Date: Sat, 19 Oct 2024 02:19:46 +0530 Subject: [PATCH 104/338] Add tests for annotation delete popup --- test/integration/freetext_editor_spec.mjs | 121 ++++++ test/integration/highlight_editor_spec.mjs | 448 +++++++++++++++++++++ test/integration/ink_editor_spec.mjs | 126 ++++++ test/integration/stamp_editor_spec.mjs | 94 +++++ test/integration/test_utils.mjs | 7 + 5 files changed, 796 insertions(+) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 0c3f9d7242a7d..085c75e6a6c8e 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -3670,4 +3670,125 @@ describe("FreeText Editor", () => { ); }); }); + + describe("Undo deletion popup has the expected behaviour", () => { + let pages; + const editorSelector = getEditorSelector(0); + + beforeEach(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that deleting a FreeText editor can be undone using the undo button", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToFreeText(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + const data = "Hello PDF.js World !!"; + await page.mouse.click(rect.x + 100, rect.y + 100); + await page.waitForSelector(editorSelector, { + visible: true, + }); + await page.type(`${editorSelector} .internal`, data); + + // Commit. + await page.keyboard.press("Escape"); + await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForSelector("#editorUndoBar:not([hidden])"); + await page.click("#editorUndoBarUndoButton"); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + }) + ); + }); + + it("must check that the undo deletion popup displays the correct message", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToFreeText(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + const data = "Hello PDF.js World !!"; + await page.mouse.click(rect.x + 100, rect.y + 100); + await page.waitForSelector(editorSelector, { + visible: true, + }); + await page.type(`${editorSelector} .internal`, data); + + // Commit. + await page.keyboard.press("Escape"); + await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForFunction(() => { + const messageElement = document.querySelector( + "#editorUndoBarMessage" + ); + return messageElement && messageElement.textContent.trim() !== ""; + }); + const message = await page.waitForSelector("#editorUndoBarMessage"); + const messageText = await page.evaluate( + el => el.textContent, + message + ); + expect(messageText).toContain("Text removed"); + }) + ); + }); + + it("must check that the popup disappears when a new textbox is created", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToFreeText(page); + + let rect = await getRect(page, ".annotationEditorLayer"); + const data = "Hello PDF.js World !!"; + await page.mouse.click(rect.x + 100, rect.y + 100); + await page.waitForSelector(editorSelector, { + visible: true, + }); + await page.type(`${editorSelector} .internal`, data); + + await page.keyboard.press("Escape"); + await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForSelector("#editorUndoBar:not([hidden])"); + rect = await getRect(page, ".annotationEditorLayer"); + const newData = "This is a new text box!"; + await page.mouse.click(rect.x + 150, rect.y + 150); + await page.waitForSelector(getEditorSelector(1), { + visible: true, + }); + await page.type(`${getEditorSelector(1)} .internal`, newData); + + await page.keyboard.press("Escape"); + await page.waitForSelector( + `${getEditorSelector(1)} .overlay.enabled` + ); + await waitForSerialized(page, 1); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + }); }); diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index c6cbd1f8a30c3..19bcf30ca45c0 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -26,6 +26,7 @@ import { kbBigMoveUp, kbFocusNext, kbFocusPrevious, + kbSave, kbSelectAll, kbUndo, loadAndWait, @@ -37,6 +38,11 @@ import { waitForSelectedEditor, waitForSerialized, } from "./test_utils.mjs"; +import { fileURLToPath } from "url"; +import fs from "fs"; +import path from "path"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); const selectAll = async page => { await kbSelectAll(page); @@ -2165,4 +2171,446 @@ describe("Highlight Editor", () => { ); }); }); + + describe("Undo deletion popup has the expected behaviour", () => { + let pages; + const editorSelector = getEditorSelector(0); + + beforeEach(async () => { + pages = await loadAndWait( + "tracemonkey.pdf", + ".annotationEditorLayer", + null, + null, + { + highlightEditorColors: + "yellow=#FFFF00,green=#00FF00,blue=#0000FF,pink=#FF00FF,red=#FF0000", + } + ); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that deleting a highlight can be undone using the undo button", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.click("#editorUndoBarUndoButton"); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + await page.waitForSelector( + `.page[data-page-number = "1"] svg.highlight[fill = "#FFFF00"]` + ); + }) + ); + }); + + it("must check that the popup disappears when the undo button is clicked", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.click("#editorUndoBarUndoButton"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when the close button is clicked", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.waitForSelector("#editorUndoBarCloseButton"); + await page.click("#editorUndoBarCloseButton"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when a new annotation is created", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + const newRect = await getSpanRectFromText(page, 1, "Introduction"); + const newX = newRect.x + newRect.width / 2; + const newY = newRect.y + newRect.height / 2; + await page.mouse.click(newX, newY, { count: 2, delay: 100 }); + + await page.waitForSelector(getEditorSelector(1)); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when the print dialog is opened", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.evaluate(() => window.print()); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when the user clicks on the print button", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.click("#printButton"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when the save dialog is opened", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await kbSave(page); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when an option from the secondaryToolbar is used", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.click("#secondaryToolbarToggleButton"); + await page.click("#lastPage"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when highlight mode is disabled", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await switchToHighlight(page, /* disable */ true); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the popup disappears when a PDF is drag-and-dropped", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + const pdfPath = path.join(__dirname, "../pdfs/basicapi.pdf"); + const pdfData = fs.readFileSync(pdfPath).toString("base64"); + const dataTransfer = await page.evaluateHandle(data => { + const transfer = new DataTransfer(); + const view = Uint8Array.from(atob(data), code => + code.charCodeAt(0) + ); + const file = new File([view], "basicapi.pdf", { + type: "application/pdf", + }); + transfer.items.add(file); + return transfer; + }, pdfData); + + const dropSelector = "#viewer"; + await page.evaluate( + (transfer, selector) => { + const dropTarget = document.querySelector(selector); + const event = new DragEvent("dragstart", { + dataTransfer: transfer, + }); + dropTarget.dispatchEvent(event); + }, + dataTransfer, + dropSelector + ); + + await page.evaluate( + (transfer, selector) => { + const dropTarget = document.querySelector(selector); + const event = new DragEvent("drop", { + dataTransfer: transfer, + bubbles: true, + }); + dropTarget.dispatchEvent(event); + }, + dataTransfer, + dropSelector + ); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + + it("must check that the undo deletion popup displays the correct message", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForFunction(() => { + const messageElement = document.querySelector( + "#editorUndoBarMessage" + ); + return messageElement && messageElement.textContent.trim() !== ""; + }); + + const message = await page.waitForSelector("#editorUndoBarMessage"); + const messageText = await page.evaluate( + el => el.textContent, + message + ); + expect(messageText).toContain("Highlight removed"); + }) + ); + }); + + it("must display correct message for multiple highlights", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + let rect = await getSpanRectFromText(page, 1, "Abstract"); + let x = rect.x + rect.width / 2; + let y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + + rect = await getSpanRectFromText(page, 1, "Languages"); + x = rect.x + rect.width / 2; + y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(getEditorSelector(1)); + + await selectAll(page); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForFunction(() => { + const messageElement = document.querySelector( + "#editorUndoBarMessage" + ); + return messageElement && messageElement.textContent.trim() !== ""; + }); + + const message = await page.waitForSelector("#editorUndoBarMessage"); + const messageText = await page.evaluate( + el => el.textContent, + message + ); + + // Cleans the message text by removing all non-ASCII characters. + // It eliminates any invisible characters such as directional marks + // that interfere with string comparisons + const cleanMessage = messageText.replaceAll(/\P{ASCII}/gu, ""); + expect(cleanMessage).toContain(`2 annotations removed`); + }) + ); + }); + + it("must work properly when selecting undo by keyboard", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.focus("#editorUndoBarUndoButton"); // we have to simulate focus like this to avoid the wait + await page.keyboard.press("Enter"); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + await page.waitForSelector( + `.page[data-page-number = "1"] svg.highlight[fill = "#FFFF00"]` + ); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.focus("#editorUndoBarUndoButton"); // we have to simulate focus like this to avoid the wait + await page.keyboard.press(" "); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + await page.waitForSelector( + `.page[data-page-number = "1"] svg.highlight[fill = "#FFFF00"]` + ); + }) + ); + }); + + it("must dismiss itself when user presses space/enter key and undo key isn't focused", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const rect = await getSpanRectFromText(page, 1, "Abstract"); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.focus("#editorUndoBar"); + await page.keyboard.press("Enter"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + }); }); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 1f908fde78488..8754ccfd2f291 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -829,4 +829,130 @@ describe("Ink Editor", () => { ); }); }); + + describe("Undo deletion popup has the expected behaviour", () => { + let pages; + const editorSelector = getEditorSelector(0); + + beforeEach(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that deleting a drawing can be undone using the undo button", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + const xStart = rect.x + 300; + const yStart = rect.y + 300; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(xStart, yStart); + await page.mouse.down(); + await page.mouse.move(xStart + 50, yStart + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForSelector("#editorUndoBar:not([hidden])"); + await page.click("#editorUndoBarUndoButton"); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + }) + ); + }); + + it("must check that the undo deletion popup displays the correct message", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + const xStart = rect.x + 300; + const yStart = rect.y + 300; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(xStart, yStart); + await page.mouse.down(); + await page.mouse.move(xStart + 50, yStart + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForFunction(() => { + const messageElement = document.querySelector( + "#editorUndoBarMessage" + ); + return messageElement && messageElement.textContent.trim() !== ""; + }); + const message = await page.waitForSelector("#editorUndoBarMessage"); + const messageText = await page.evaluate( + el => el.textContent, + message + ); + expect(messageText).toContain("Drawing removed"); + }) + ); + }); + + it("must check that the popup disappears when a new drawing is created", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + const xStart = rect.x + 300; + const yStart = rect.y + 300; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(xStart, yStart); + await page.mouse.down(); + await page.mouse.move(xStart + 50, yStart + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + const newRect = await getRect(page, ".annotationEditorLayer"); + const newXStart = newRect.x + 300; + const newYStart = newRect.y + 300; + const newClickHandle = await waitForPointerUp(page); + await page.mouse.move(newXStart, newYStart); + await page.mouse.down(); + await page.mouse.move(newXStart + 50, newYStart + 50); + await page.mouse.up(); + await awaitPromise(newClickHandle); + await commit(page); + + await page.waitForSelector(getEditorSelector(1)); + await waitForSerialized(page, 1); + await page.waitForSelector(getEditorSelector(1)); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + }); }); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index d09d9c3c37a0a..60197b5ddc96f 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1530,4 +1530,98 @@ describe("Stamp Editor", () => { } }); }); + + describe("Undo deletion popup has the expected behaviour", () => { + let pages; + const editorSelector = getEditorSelector(0); + + beforeEach(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that deleting an image can be undone using the undo button", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToStamp(page); + const selector = editorSelector; + + await copyImage(page, "../images/firefox_logo.png", 0); + await page.waitForSelector(selector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${selector} button.delete`); + await page.click(`${selector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForSelector("#editorUndoBar:not([hidden])"); + + await page.click("#editorUndoBarUndoButton"); + await waitForSerialized(page, 1); + await page.waitForSelector(editorSelector); + await page.waitForSelector(`${selector} canvas`); + }) + ); + }); + + it("must check that the undo deletion popup displays the correct message", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToStamp(page); + const selector = editorSelector; + + await copyImage(page, "../images/firefox_logo.png", 0); + await page.waitForSelector(selector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${selector} button.delete`); + await page.click(`${selector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForFunction(() => { + const messageElement = document.querySelector( + "#editorUndoBarMessage" + ); + return messageElement && messageElement.textContent.trim() !== ""; + }); + const message = await page.waitForSelector("#editorUndoBarMessage"); + const messageText = await page.evaluate( + el => el.textContent, + message + ); + expect(messageText).toContain("Image removed"); + }) + ); + }); + + it("must check that the popup disappears when a new image is inserted", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToStamp(page); + const selector = editorSelector; + + await copyImage(page, "../images/firefox_logo.png", 0); + await page.waitForSelector(selector); + await waitForSerialized(page, 1); + + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 0); + + await page.waitForSelector("#editorUndoBar:not([hidden])"); + await page.click("#editorStampAddImage"); + const newInput = await page.$("#stampEditorFileInput"); + await newInput.uploadFile( + `${path.join(__dirname, "../images/firefox_logo.png")}` + ); + await waitForImage(page, getEditorSelector(1)); + await waitForSerialized(page, 1); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + }) + ); + }); + }); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 6138035b05122..c52f5257bb299 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -756,6 +756,12 @@ async function kbFocusPrevious(page) { await awaitPromise(handle); } +async function kbSave(page) { + await page.keyboard.down(modifier); + await page.keyboard.press("s"); + await page.keyboard.up(modifier); +} + async function switchToEditor(name, page, disable = false) { const modeChangedHandle = await createPromise(page, resolve => { window.PDFViewerApplication.eventBus.on( @@ -842,6 +848,7 @@ export { kbModifierDown, kbModifierUp, kbRedo, + kbSave, kbSelectAll, kbUndo, loadAndWait, From cfe3b4eed8342fd30c1ba2c122f98887e56c0e69 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 3 Dec 2024 16:11:41 +0100 Subject: [PATCH 105/338] [Editor] Corrrectly get the words from the alt-text when reporting the telemetry (bug 1929311) --- test/integration/stamp_editor_spec.mjs | 82 +++++++++++++++++++++++++- web/genericcom.js | 2 +- web/new_alt_text_manager.js | 13 +++- 3 files changed, 93 insertions(+), 4 deletions(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 60197b5ddc96f..20e854b73dcda 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -897,6 +897,9 @@ describe("Stamp Editor", () => { eventBus.on("annotationeditoruimanager", ({ uiManager }) => { window.uiManager = uiManager; }); + eventBus.on("reporttelemetry", ({ details }) => { + (window.telemetry ||= []).push(structuredClone(details)); + }); }, }, { @@ -917,6 +920,7 @@ describe("Stamp Editor", () => { } await page.evaluate(() => { window.uiManager.reset(); + window.telemetry = []; }); // Disable editing mode. await switchToStamp(page, /* disable */ true); @@ -953,7 +957,7 @@ describe("Stamp Editor", () => { // Check that AI guessed the correct alt text. await page.waitForFunction( `document.getElementById("newAltTextDescriptionTextarea").value === - "Fake alt text"` + "Fake alt text."` ); // Check that the dialog has the correct title: "Edit..." @@ -1182,6 +1186,82 @@ describe("Stamp Editor", () => { await page.waitForSelector("#newAltTextDisclaimer[hidden]"); } }); + + it("must check that the data in telemetry are correct", async () => { + // Run sequentially to avoid clipboard issues. + for (const [browserName, page] of pages) { + await page.evaluate(() => { + window.PDFViewerApplication.mlManager.enableAltTextModelDownload = true; + }); + await switchToStamp(page); + + // Add an image. + await copyImage(page, "../images/firefox_logo.png", 0); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); + await waitForSerialized(page, 1); + + // Wait for the dialog to be visible. + await page.waitForSelector("#newAltTextDialog", { visible: true }); + + // Check that AI guessed the correct alt text. + await page.waitForFunction( + `document.getElementById("newAltTextDescriptionTextarea").value === + "Fake alt text."` + ); + // Clear the input and check that the title changes to "Add..." + await clearInput( + page, + "#newAltTextDescriptionTextarea", + /* waitForInputEvent = */ true + ); + // Save the empty text. + await page.click("#newAltTextSave"); + await page.waitForSelector("#newAltTextDialog", { visible: false }); + + // Get the telemetry data and clean. + let telemetry = await page.evaluate(() => { + const tel = window.telemetry; + window.telemetry = []; + return tel; + }); + let saveTelemetry = telemetry.find( + details => details.data.action === "pdfjs.image.alt_text.user_edit" + ); + expect(saveTelemetry.data.data) + .withContext(`In ${browserName}`) + .toEqual({ + total_words: 3, + words_removed: 3, + words_added: 0, + }); + + // Click on the Review button. + const buttonSelector = `${editorSelector} button.altText.new`; + await page.waitForSelector(buttonSelector, { visible: true }); + await page.click(buttonSelector); + await page.waitForSelector("#newAltTextDialog", { visible: true }); + + // Add a new alt text and check that the title changes to "Edit..." + await page.type("#newAltTextDescriptionTextarea", "Fake text alt foo."); + + // Save the empty text. + await page.click("#newAltTextSave"); + await page.waitForSelector("#newAltTextDialog", { visible: false }); + + telemetry = await page.evaluate(() => window.telemetry); + saveTelemetry = telemetry.find( + details => details.data.action === "pdfjs.image.alt_text.user_edit" + ); + expect(saveTelemetry.data.data) + .withContext(`In ${browserName}`) + .toEqual({ + total_words: 3, + words_removed: 0, + words_added: 1, + }); + } + }); }); describe("New alt-text flow (bug 1920515)", () => { diff --git a/web/genericcom.js b/web/genericcom.js index 9bddcbc456eb5..610dac9502140 100644 --- a/web/genericcom.js +++ b/web/genericcom.js @@ -132,7 +132,7 @@ class FakeMLManager { guess({ request: { data } }) { return new Promise(resolve => { setTimeout(() => { - resolve(data ? { output: "Fake alt text" } : { error: true }); + resolve(data ? { output: "Fake alt text." } : { error: true }); }, 3000); }); } diff --git a/web/new_alt_text_manager.js b/web/new_alt_text_manager.js index d9b7c80be406e..12d1eeaa51007 100644 --- a/web/new_alt_text_manager.js +++ b/web/new_alt_text_manager.js @@ -460,6 +460,15 @@ class NewAltTextManager { this.#uiManager = null; } + #extractWords(text) { + return new Set( + text + .toLowerCase() + .split(/[^\p{L}\p{N}]+/gu) + .filter(x => !!x) + ); + } + #save() { const altText = this.#textarea.value.trim(); this.#currentEditor.altTextData = { @@ -469,8 +478,8 @@ class NewAltTextManager { this.#currentEditor.altTextData.guessedAltText = this.#guessedAltText; if (this.#guessedAltText && this.#guessedAltText !== altText) { - const guessedWords = new Set(this.#guessedAltText.split(/\s+/)); - const words = new Set(altText.split(/\s+/)); + const guessedWords = this.#extractWords(this.#guessedAltText); + const words = this.#extractWords(altText); this.#currentEditor._reportTelemetry({ action: "pdfjs.image.alt_text.user_edit", data: { From ef9112b0c80fdbc885b0c0442f9c5b9e982f7e68 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 4 Dec 2024 09:15:01 +0100 Subject: [PATCH 106/338] Fix unused css variables (follow-up of #18900) --- web/message_bar.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/message_bar.css b/web/message_bar.css index 4a948d2eda055..695168c7783de 100644 --- a/web/message_bar.css +++ b/web/message_bar.css @@ -208,10 +208,12 @@ &:hover { background-color: var(--undo-button-bg-color-hover); + color: var(--undo-button-fg-color-hover); } &:active { background-color: var(--undo-button-bg-color-active); + color: var(--undo-button-fg-color-active); } } From 6f10413dcd8f5b4a06c3db4df257a1413394a1c8 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 13 Nov 2024 11:07:55 +0100 Subject: [PATCH 107/338] Introduce `Promise.try()` usage in the code-base This simplifies the creation of Promises in some cases; see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/try --- src/shared/message_handler.js | 21 ++++++++------------- src/shared/util.js | 13 +++++++++++++ 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/shared/message_handler.js b/src/shared/message_handler.js index 6d74a01fd671d..0ed90ee5e8435 100644 --- a/src/shared/message_handler.js +++ b/src/shared/message_handler.js @@ -41,6 +41,8 @@ const StreamKind = { START_COMPLETE: 8, }; +function onFn() {} + function wrapReason(reason) { if ( !( @@ -121,9 +123,7 @@ class MessageHandler { targetName = data.sourceName, comObj = this.comObj; - new Promise(function (resolve) { - resolve(action(data.data)); - }).then( + Promise.try(action, data.data).then( function (result) { comObj.postMessage({ sourceName, @@ -365,9 +365,7 @@ class MessageHandler { streamSink.ready = streamSink.sinkCapability.promise; this.streamSinks[streamId] = streamSink; - new Promise(function (resolve) { - resolve(action(data.data, streamSink)); - }).then( + Promise.try(action, data.data, streamSink).then( function () { comObj.postMessage({ sourceName, @@ -432,9 +430,7 @@ class MessageHandler { // Reset desiredSize property of sink on every pull. streamSink.desiredSize = data.desiredSize; - new Promise(function (resolve) { - resolve(streamSink.onPull?.()); - }).then( + Promise.try(streamSink.onPull || onFn).then( function () { comObj.postMessage({ sourceName, @@ -488,10 +484,9 @@ class MessageHandler { if (!streamSink) { break; } + const dataReason = wrapReason(data.reason); - new Promise(function (resolve) { - resolve(streamSink.onCancel?.(wrapReason(data.reason))); - }).then( + Promise.try(streamSink.onCancel || onFn, dataReason).then( function () { comObj.postMessage({ sourceName, @@ -511,7 +506,7 @@ class MessageHandler { }); } ); - streamSink.sinkCapability.reject(wrapReason(data.reason)); + streamSink.sinkCapability.reject(dataReason); streamSink.isCancelled = true; delete this.streamSinks[streamId]; break; diff --git a/src/shared/util.js b/src/shared/util.js index b6dfb4002a304..1d812bf010442 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1124,6 +1124,19 @@ function fromBase64Util(str) { return stringToBytes(atob(str)); } +// TODO: Remove this once https://bugzilla.mozilla.org/show_bug.cgi?id=1928493 +// is fixed. +if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("SKIP_BABEL")) && + typeof Promise.try !== "function" +) { + Promise.try = function (fn, ...args) { + return new Promise(resolve => { + resolve(fn(...args)); + }); + }; +} + export { AbortException, AnnotationActionEventType, From 37ab852c49ec55a4d06f9698b592b4d1fbb11d80 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 4 Dec 2024 17:57:17 +0100 Subject: [PATCH 108/338] Correctly wait for the editor mode when double clicking on an annotation in integration tests --- test/integration/ink_editor_spec.mjs | 15 ++++++++++----- test/integration/stamp_editor_spec.mjs | 7 +++++++ 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 8754ccfd2f291..6a09f4d488b23 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -31,6 +31,7 @@ import { loadAndWait, scrollIntoView, switchToEditor, + waitForAnnotationModeChanged, waitForNoElement, waitForSelectedEditor, waitForSerialized, @@ -796,7 +797,14 @@ describe("Ink Editor", () => { it("must move an annotation", async () => { await Promise.all( pages.map(async ([browserName, page]) => { - await page.click(getAnnotationSelector("277R"), { count: 2 }); + const modeChangedHandle = await waitForAnnotationModeChanged(page); + const inkRect = await getRect(page, getAnnotationSelector("277R")); + await page.mouse.click( + inkRect.x + inkRect.width / 2, + inkRect.y + inkRect.height / 2, + { count: 2 } + ); + await awaitPromise(modeChangedHandle); const edgeB = getEditorSelector(10); await waitForSelectedEditor(page, edgeB); @@ -808,10 +816,7 @@ describe("Ink Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorRect = await page.$eval(edgeB, el => { - const { x, y, width, height } = el.getBoundingClientRect(); - return { x, y, width, height }; - }); + const editorRect = await getRect(page, edgeB); // Select the annotation we want to move. await page.mouse.click(editorRect.x + 2, editorRect.y + 2); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 20e854b73dcda..6e76a45b92e34 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -40,6 +40,7 @@ import { serializeBitmapDimensions, switchToEditor, waitForAnnotationEditorLayer, + waitForAnnotationModeChanged, waitForEntryInStorage, waitForSelectedEditor, waitForSerialized, @@ -1437,7 +1438,9 @@ describe("Stamp Editor", () => { it("must move an annotation", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + const modeChangedHandle = await waitForAnnotationModeChanged(page); await page.click(getAnnotationSelector("25R"), { count: 2 }); + await awaitPromise(modeChangedHandle); await waitForSelectedEditor(page, getEditorSelector(0)); const editorIds = await getEditors(page, "stamp"); @@ -1484,7 +1487,9 @@ describe("Stamp Editor", () => { it("must update an existing alt-text", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + const modeChangedHandle = await waitForAnnotationModeChanged(page); await page.click(getAnnotationSelector("58R"), { count: 2 }); + await awaitPromise(modeChangedHandle); await waitForSelectedEditor(page, getEditorSelector(4)); const editorIds = await getEditors(page, "stamp"); @@ -1541,7 +1546,9 @@ describe("Stamp Editor", () => { it("must check that the annotation is correctly restored", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + const modeChangedHandle = await waitForAnnotationModeChanged(page); await page.click(getAnnotationSelector("37R"), { count: 2 }); + await awaitPromise(modeChangedHandle); const editorSelector = getEditorSelector(2); await waitForSelectedEditor(page, editorSelector); From e49345ac8a7186df3f50bc7d620503572562b6f5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 5 Dec 2024 13:07:57 +0100 Subject: [PATCH 109/338] Ensure that the `.toggleButton`, as used in the findbar, always have visible hover/focus state (issue 19165) Similar to the regular toolbarButtons that can be toggled, this ensure that it's always possible to tell when the findbar "buttons" are hovered/focused. --- web/viewer.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/viewer.css b/web/viewer.css index 3629d5eb2a514..71d7dd5f81a85 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -634,14 +634,14 @@ body { .toggleButton { display: inline; - &:is(:hover, :has(> input:focus-visible)) { + &:has(> input:checked) { color: var(--toggled-btn-color); - background-color: var(--button-hover-color); + background-color: var(--toggled-btn-bg-color); } - &:has(> input:checked) { + &:is(:hover, :has(> input:focus-visible)) { color: var(--toggled-btn-color); - background-color: var(--toggled-btn-bg-color); + background-color: var(--button-hover-color); } & > input { From 83801fa729b73769ebb4517d00bc6eecab6fbd43 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 5 Dec 2024 14:22:00 +0100 Subject: [PATCH 110/338] [Editor] Correctly update the current drawing when zooming We were trying to update the drawing on the current page but if the drawing is an another page then it wasn't updated. --- src/display/editor/annotation_editor_layer.js | 5 +- src/display/editor/tools.js | 22 ++++++- test/integration/ink_editor_spec.mjs | 62 +++++++++++++++++++ 3 files changed, 83 insertions(+), 6 deletions(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index fbc5bc52869eb..e6610febd814c 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -804,7 +804,7 @@ class AnnotationEditorLayer { return; } - this.#uiManager.unselectAll(); + this.#uiManager.setCurrentDrawingSession(this); this.#drawingAC = new AbortController(); const signal = this.#uiManager.combinedSignal(this.#drawingAC); this.div.addEventListener( @@ -816,7 +816,6 @@ class AnnotationEditorLayer { }, { signal } ); - this.#uiManager.disableUserSelect(true); this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); } @@ -824,9 +823,9 @@ class AnnotationEditorLayer { if (!this.#drawingAC) { return null; } + this.#uiManager.setCurrentDrawingSession(null); this.#drawingAC.abort(); this.#drawingAC = null; - this.#uiManager.disableUserSelect(false); return this.#currentEditorType.endDrawing(isAborted); } diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index cb1d9e24b74bf..f4a22e5604cb0 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -610,6 +610,8 @@ class AnnotationEditorUIManager { #copyPasteAC = null; + #currentDrawingSession = null; + #currentPageIndex = 0; #deletedAnnotationsElementIds = new Set(); @@ -972,6 +974,20 @@ class AnnotationEditorUIManager { ); } + /** + * Set the current drawing session. + * @param {AnnotationEditorLayer} layer + */ + setCurrentDrawingSession(layer) { + if (layer) { + this.unselectAll(); + this.disableUserSelect(true); + } else { + this.disableUserSelect(false); + } + this.#currentDrawingSession = layer; + } + setMainHighlightColorPicker(colorPicker) { this.#mainHighlightColorPicker = colorPicker; } @@ -1054,7 +1070,7 @@ class AnnotationEditorUIManager { for (const editor of this.#editorsToRescale) { editor.onScaleChanging(); } - this.currentLayer?.onScaleChanging(); + this.#currentDrawingSession?.onScaleChanging(); } onRotationChanging({ pagesRotation }) { @@ -1984,7 +2000,7 @@ class AnnotationEditorUIManager { * @param {AnnotationEditor} editor */ setSelected(editor) { - this.currentLayer?.commitOrRemove(); + this.#currentDrawingSession?.commitOrRemove(); for (const ed of this.#selectedEditors) { if (ed !== editor) { ed.unselect(); @@ -2176,7 +2192,7 @@ class AnnotationEditorUIManager { } } - if (this.currentLayer?.commitOrRemove()) { + if (this.#currentDrawingSession?.commitOrRemove()) { return; } diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 6a09f4d488b23..93f7de906a5b1 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -960,4 +960,66 @@ describe("Ink Editor", () => { ); }); }); + + describe("Ink must update its stroke width when not the current active layer", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the stroke width has been updated after zooming", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + + const x = rect.x + 20; + const y = rect.y + 20; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x, y); + await page.mouse.down(); + await page.mouse.move(x + 50, y + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + + const svgSelector = ".canvasWrapper svg.draw"; + const strokeWidth = await page.$eval(svgSelector, el => + parseFloat(el.getAttribute("stroke-width")) + ); + + await scrollIntoView(page, `.page[data-page-number = "2"]`); + + const rectPageTwo = await getRect( + page, + `.page[data-page-number = "2"] .annotationEditorLayer` + ); + const originX = rectPageTwo.x + rectPageTwo.width / 2; + const originY = rectPageTwo.y + rectPageTwo.height / 2; + await page.evaluate( + origin => { + window.PDFViewerApplication.pdfViewer.increaseScale({ + scaleFactor: 1.5, + origin, + }); + }, + [originX, originY] + ); + + const newStrokeWidth = await page.$eval(svgSelector, el => + parseFloat(el.getAttribute("stroke-width")) + ); + + expect(newStrokeWidth) + .withContext(`In ${browserName}`) + .not.toEqual(strokeWidth); + }) + ); + }); + }); }); From 41c6a08e7d1338d66c9b87d93e2da3708c29aabf Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 5 Dec 2024 21:03:54 +0100 Subject: [PATCH 111/338] Avoid to display an alert or a confirm dialog if the message is empty It fixes #19171. --- src/scripting_api/app.js | 3 +++ test/unit/scripting_spec.js | 46 +++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/scripting_api/app.js b/src/scripting_api/app.js index acf1a7e228b21..74dba793d19a7 100644 --- a/src/scripting_api/app.js +++ b/src/scripting_api/app.js @@ -447,6 +447,9 @@ class App extends PDFObject { cMsg = cMsg.cMsg; } cMsg = (cMsg || "").toString(); + if (!cMsg) { + return 0; + } nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 diff --git a/test/unit/scripting_spec.js b/test/unit/scripting_spec.js index 9ce2699d48106..6246120df4169 100644 --- a/test/unit/scripting_spec.js +++ b/test/unit/scripting_spec.js @@ -607,6 +607,52 @@ describe("Scripting", function () { value = await myeval(`app.platform = "hello"`); expect(value).toEqual("app.platform is read-only"); }); + + it("shouldn't display an alert", async () => { + const refId = getId(); + const data = { + objects: { + field: [ + { + id: refId, + value: "", + actions: { + Validate: [`app.alert(event.value);`], + }, + type: "text", + name: "MyField", + }, + ], + }, + appInfo: { language: "en-US", platform: "Linux x86_64" }, + calculationOrder: [], + dispatchEventName: "_dispatchMe", + }; + + sandbox.createSandbox(data); + await sandbox.dispatchEventInSandbox({ + id: refId, + value: "hello", + name: "Keystroke", + willCommit: true, + }); + expect(send_queue.has("alert")).toEqual(true); + expect(send_queue.get("alert")).toEqual({ + command: "alert", + value: "hello", + }); + send_queue.delete(refId); + send_queue.delete("alert"); + + await sandbox.dispatchEventInSandbox({ + id: refId, + value: "", + name: "Keystroke", + willCommit: true, + }); + expect(send_queue.has("alert")).toEqual(false); + send_queue.delete(refId); + }); }); describe("AForm", function () { From d6931105d557bd9cc202696b10c5495ec5d6853d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 2 Dec 2024 13:38:22 +0100 Subject: [PATCH 112/338] Prevent Webpack from resolving `import.meta.url` statements during building (issue 19145) This fixes a Node.js-specific regression from PR 18959. --- gulpfile.mjs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gulpfile.mjs b/gulpfile.mjs index 57c8c66d16461..23a6fcfd7e88d 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -380,6 +380,11 @@ function createWebpackConfig( }, devtool: enableSourceMaps ? "source-map" : undefined, module: { + parser: { + javascript: { + importMeta: false, + }, + }, rules: [ { test: /\.[mc]?js$/, From 5b1545a284df309dbb3ad6044b266350f4fa51a9 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Thu, 5 Dec 2024 22:25:31 +0100 Subject: [PATCH 113/338] Bump the stable version in `pdfjs.config` --- pdfjs.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdfjs.config b/pdfjs.config index b5ee5b026ce5a..9de4ef4d9c795 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { - "stableVersion": "4.9.124", + "stableVersion": "4.9.155", "baseVersion": "cefd1ebcd239d906758d0f7a601238a1980d5631", "versionPrefix": "4.9." } From 4b32b4bc72a0868f8040679a75416dfc511f54c4 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 4 Dec 2024 19:34:57 +0100 Subject: [PATCH 114/338] When zooming replace the css-zoomed canvas by the new one only when rendering is finished It fixes #18622. It avoids to recreate a canvasWrapper element in order minimize the DOM operations. --- test/integration/viewer_spec.mjs | 21 ++++- web/pdf_page_view.js | 152 ++++++++++++++----------------- web/pdf_viewer.css | 13 +-- 3 files changed, 90 insertions(+), 96 deletions(-) diff --git a/test/integration/viewer_spec.mjs b/test/integration/viewer_spec.mjs index 4d14649d28bc8..ac9af95693cda 100644 --- a/test/integration/viewer_spec.mjs +++ b/test/integration/viewer_spec.mjs @@ -276,9 +276,20 @@ describe("PDF viewer", () => { beforeEach(async () => { await Promise.all( pages.map(async ([browserName, page]) => { - await page.evaluate(() => { - window.PDFViewerApplication.pdfViewer.currentScale = 0.5; - }); + const handle = await waitForPageRendered(page); + if ( + await page.evaluate(() => { + if ( + window.PDFViewerApplication.pdfViewer.currentScale !== 0.5 + ) { + window.PDFViewerApplication.pdfViewer.currentScale = 0.5; + return true; + } + return false; + }) + ) { + await awaitPromise(handle); + } }) ); }); @@ -317,12 +328,14 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 2; + const handle = await waitForPageRendered(page); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0, scaleFactor, }); }, factor); + await awaitPromise(handle); const canvasSize = await getCanvasSize(page); @@ -343,12 +356,14 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 4; + const handle = await waitForPageRendered(page); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0, scaleFactor, }); }, factor); + await awaitPromise(handle); const canvasSize = await getCanvasSize(page); diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 010aa18ae437c..46ab525a0e002 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -116,6 +116,8 @@ const LAYERS_ORDER = new Map([ class PDFPageView { #annotationMode = AnnotationMode.ENABLE_FORMS; + #canvasWrapper = null; + #enableHWA = false; #hasRestrictedScaling = false; @@ -126,6 +128,8 @@ class PDFPageView { #loadingId = null; + #originalViewport = null; + #previousRotation = null; #scaleRoundX = 1; @@ -144,8 +148,6 @@ class PDFPageView { regularAnnotations: true, }; - #viewportMap = new WeakMap(); - #layers = [null, null, null, null]; /** @@ -195,7 +197,6 @@ class PDFPageView { this.annotationLayer = null; this.annotationEditorLayer = null; this.textLayer = null; - this.zoomLayer = null; this.xfaLayer = null; this.structTreeLayer = null; this.drawLayer = null; @@ -508,33 +509,23 @@ class PDFPageView { this._textHighlighter.enable(); } - /** - * @private - */ - _resetZoomLayer(removeFromDOM = false) { - if (!this.zoomLayer) { + #resetCanvas() { + const { canvas } = this; + if (!canvas) { return; } - const zoomLayerCanvas = this.zoomLayer.firstChild; - this.#viewportMap.delete(zoomLayerCanvas); - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - - if (removeFromDOM) { - // Note: `ChildNode.remove` doesn't throw if the parent node is undefined. - this.zoomLayer.remove(); - } - this.zoomLayer = null; + canvas.remove(); + canvas.width = canvas.height = 0; + this.canvas = null; + this.#originalViewport = null; } reset({ - keepZoomLayer = false, keepAnnotationLayer = false, keepAnnotationEditorLayer = false, keepXfaLayer = false, keepTextLayer = false, + keepCanvasWrapper = false, } = {}) { this.cancelRendering({ keepAnnotationLayer, @@ -547,21 +538,21 @@ class PDFPageView { const div = this.div; const childNodes = div.childNodes, - zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null, annotationLayerNode = (keepAnnotationLayer && this.annotationLayer?.div) || null, annotationEditorLayerNode = (keepAnnotationEditorLayer && this.annotationEditorLayer?.div) || null, xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null, - textLayerNode = (keepTextLayer && this.textLayer?.div) || null; + textLayerNode = (keepTextLayer && this.textLayer?.div) || null, + canvasWrapperNode = (keepCanvasWrapper && this.#canvasWrapper) || null; for (let i = childNodes.length - 1; i >= 0; i--) { const node = childNodes[i]; switch (node) { - case zoomLayerNode: case annotationLayerNode: case annotationEditorLayerNode: case xfaLayerNode: case textLayerNode: + case canvasWrapperNode: continue; } node.remove(); @@ -590,16 +581,9 @@ class PDFPageView { } this.structTreeLayer?.hide(); - if (!zoomLayerNode) { - if (this.canvas) { - this.#viewportMap.delete(this.canvas); - // Zeroing the width and height causes Firefox to release graphics - // resources immediately, which can greatly reduce memory consumption. - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - this._resetZoomLayer(); + if (!keepCanvasWrapper && this.#canvasWrapper) { + this.#canvasWrapper = null; + this.#resetCanvas(); } } @@ -609,11 +593,11 @@ class PDFPageView { } this.#isEditing = isEditing; this.reset({ - keepZoomLayer: true, keepAnnotationLayer: true, keepAnnotationEditorLayer: true, keepXfaLayer: true, keepTextLayer: true, + keepCanvasWrapper: true, }); } @@ -697,7 +681,6 @@ class PDFPageView { this.renderingState !== RenderingStates.FINISHED ) { this.cancelRendering({ - keepZoomLayer: true, keepAnnotationLayer: true, keepAnnotationEditorLayer: true, keepXfaLayer: true, @@ -715,7 +698,6 @@ class PDFPageView { } this.cssTransform({ - target: this.canvas, redrawAnnotationLayer: true, redrawAnnotationEditorLayer: true, redrawXfaLayer: true, @@ -737,20 +719,14 @@ class PDFPageView { }); return; } - if (!this.zoomLayer && !this.canvas.hidden) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = "absolute"; - } - } - if (this.zoomLayer) { - this.cssTransform({ target: this.zoomLayer.firstChild }); } + this.cssTransform({}); this.reset({ - keepZoomLayer: true, keepAnnotationLayer: true, keepAnnotationEditorLayer: true, keepXfaLayer: true, keepTextLayer: true, + keepCanvasWrapper: true, }); } @@ -805,41 +781,32 @@ class PDFPageView { } cssTransform({ - target, redrawAnnotationLayer = false, redrawAnnotationEditorLayer = false, redrawXfaLayer = false, redrawTextLayer = false, hideTextLayer = false, }) { - // Scale target (canvas), its wrapper and page container. - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && - !(target instanceof HTMLCanvasElement) - ) { - throw new Error("Expected `target` to be a canvas."); - } - if (!target.hasAttribute("zooming")) { - target.setAttribute("zooming", true); - const { style } = target; - style.width = style.height = ""; + const { canvas } = this; + if (!canvas) { + return; } - const originalViewport = this.#viewportMap.get(target); + const originalViewport = this.#originalViewport; if (this.viewport !== originalViewport) { // The canvas may have been originally rotated; rotate relative to that. const relativeRotation = - this.viewport.rotation - originalViewport.rotation; - const absRotation = Math.abs(relativeRotation); - let scaleX = 1, - scaleY = 1; - if (absRotation === 90 || absRotation === 270) { + (360 + this.viewport.rotation - originalViewport.rotation) % 360; + if (relativeRotation === 90 || relativeRotation === 270) { const { width, height } = this.viewport; // Scale x and y because of the rotation. - scaleX = height / width; - scaleY = width / height; + const scaleX = height / width; + const scaleY = width / height; + canvas.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX},${scaleY})`; + } else { + canvas.style.transform = + relativeRotation === 0 ? "" : `rotate(${relativeRotation}deg)`; } - target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`; } if (redrawAnnotationLayer && this.annotationLayer) { @@ -892,7 +859,6 @@ class PDFPageView { this.#renderError = error; this.renderingState = RenderingStates.FINISHED; - this._resetZoomLayer(/* removeFromDOM = */ true); // Ensure that the thumbnails won't become partially (or fully) blank, // for documents that contain interactive form elements. @@ -927,9 +893,12 @@ class PDFPageView { // Wrap the canvas so that if it has a CSS transform for high DPI the // overflow will be hidden in Firefox. - const canvasWrapper = document.createElement("div"); - canvasWrapper.classList.add("canvasWrapper"); - this.#addLayer(canvasWrapper, "canvasWrapper"); + let canvasWrapper = this.#canvasWrapper; + if (!canvasWrapper) { + canvasWrapper = this.#canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + this.#addLayer(canvasWrapper, "canvasWrapper"); + } if ( !this.textLayer && @@ -1004,22 +973,37 @@ class PDFPageView { const canvas = document.createElement("canvas"); canvas.setAttribute("role", "presentation"); - // Keep the canvas hidden until the first draw callback, or until drawing - // is complete when `!this.renderingQueue`, to prevent black flickering. - canvas.hidden = true; const hasHCM = !!(pageColors?.background && pageColors?.foreground); + const prevCanvas = this.canvas; + const updateOnFirstShow = !prevCanvas && !hasHCM; + this.canvas = canvas; + this.#originalViewport = viewport; let showCanvas = isLastShow => { - // In HCM, a final filter is applied on the canvas which means that - // before it's applied we've normal colors. Consequently, to avoid to have - // a final flash we just display it once all the drawing is done. - if (!hasHCM || isLastShow) { - canvas.hidden = false; - showCanvas = null; // Only invoke the function once. + if (updateOnFirstShow) { + // Don't add the canvas until the first draw callback, or until + // drawing is complete when `!this.renderingQueue`, to prevent black + // flickering. + canvasWrapper.append(canvas); + showCanvas = null; + return; + } + if (!isLastShow) { + return; } + + if (prevCanvas) { + prevCanvas.replaceWith(canvas); + prevCanvas.width = prevCanvas.height = 0; + } else { + // In HCM, a final filter is applied on the canvas which means that + // before it's applied we've normal colors. Consequently, to avoid to + // have a final flash we just display it once all the drawing is done. + canvasWrapper.append(canvas); + } + + showCanvas = null; }; - canvasWrapper.append(canvas); - this.canvas = canvas; const ctx = canvas.getContext("2d", { alpha: false, @@ -1073,9 +1057,6 @@ class PDFPageView { this.#scaleRoundY = sfy[1]; } - // Add the viewport so it's known what it was originally drawn with. - this.#viewportMap.set(canvas, viewport); - // Rendering area const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] @@ -1141,6 +1122,9 @@ class PDFPageView { // callback had been invoked at least once. if (!(error instanceof RenderingCancelledException)) { showCanvas?.(true); + } else { + prevCanvas?.remove(); + this.#resetCanvas(); } return this.#finishRenderTask(renderTask, error); } diff --git a/web/pdf_viewer.css b/web/pdf_viewer.css index 115a8f8532b82..97dcb6cd75966 100644 --- a/web/pdf_viewer.css +++ b/web/pdf_viewer.css @@ -83,19 +83,14 @@ height: 100%; canvas { + position: absolute; + top: 0; + left: 0; margin: 0; display: block; width: 100%; height: 100%; - - &[hidden] { - display: none; - } - - &[zooming] { - width: 100%; - height: 100%; - } + contain: content; .structTree { contain: strict; From 95beedc03bf53d5dbf4941d76510a5e408a48a58 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 27 Nov 2024 12:33:39 +0100 Subject: [PATCH 115/338] Ensure that a missing/invalid "Content-Range" header is handled in `PDFNetworkStream` (issue 19075) In the event that the "Content-Range" header is missing/invalid, loading will now be aborted rather than hanging indefinitely. --- src/display/network.js | 15 +++++++++----- test/unit/network_spec.js | 43 ++++++++++++++++++++++++++++++++++++++- test/webserver.mjs | 13 +++++++++++- 3 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/display/network.js b/src/display/network.js index 3beb3257bd546..8f08e27c5f51c 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -13,7 +13,7 @@ * limitations under the License. */ -import { assert, stringToBytes } from "../shared/util.js"; +import { assert, stringToBytes, warn } from "../shared/util.js"; import { createHeaders, createResponseStatusError, @@ -161,10 +161,15 @@ class NetworkManager { if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { const rangeHeader = xhr.getResponseHeader("Content-Range"); const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); - pendingRequest.onDone({ - begin: parseInt(matches[1], 10), - chunk, - }); + if (matches) { + pendingRequest.onDone({ + begin: parseInt(matches[1], 10), + chunk, + }); + } else { + warn(`Missing or invalid "Content-Range" header.`); + pendingRequest.onError?.(0); + } } else if (chunk) { pendingRequest.onDone({ begin: 0, diff --git a/test/unit/network_spec.js b/test/unit/network_spec.js index 367e525601ed9..ebcb1a89103ac 100644 --- a/test/unit/network_spec.js +++ b/test/unit/network_spec.js @@ -13,7 +13,10 @@ * limitations under the License. */ -import { AbortException } from "../../src/shared/util.js"; +import { + AbortException, + UnexpectedResponseException, +} from "../../src/shared/util.js"; import { PDFNetworkStream } from "../../src/display/network.js"; import { testCrossOriginRedirects } from "./common_pdfstream_tests.js"; import { TestPdfsServer } from "./test_utils.js"; @@ -118,6 +121,44 @@ describe("network", function () { expect(fullReaderCancelled).toEqual(true); }); + it(`handle reading ranges with missing/invalid "Content-Range" header`, async function () { + async function readRanges(mode) { + const rangeSize = 32768; + const stream = new PDFNetworkStream({ + url: `${pdf1}?test-network-break-ranges=${mode}`, + length: pdf1Length, + rangeChunkSize: rangeSize, + disableStream: true, + disableRange: false, + }); + + const fullReader = stream.getFullReader(); + + await fullReader.headersReady; + // Ensure that range requests are supported. + expect(fullReader.isRangeSupported).toEqual(true); + // We shall be able to close the full reader without issues. + fullReader.cancel(new AbortException("Don't need fullReader.")); + + const rangeReader = stream.getRangeReader( + pdf1Length - rangeSize, + pdf1Length + ); + + try { + await rangeReader.read(); + + // Shouldn't get here. + expect(false).toEqual(true); + } catch (ex) { + expect(ex instanceof UnexpectedResponseException).toEqual(true); + expect(ex.status).toEqual(0); + } + } + + await Promise.all([readRanges("missing"), readRanges("invalid")]); + }); + describe("Redirects", function () { beforeAll(async function () { await TestPdfsServer.ensureStarted(); diff --git a/test/webserver.mjs b/test/webserver.mjs index fffd8d72aa5ec..dd2ae735ecbd1 100644 --- a/test/webserver.mjs +++ b/test/webserver.mjs @@ -177,6 +177,7 @@ class WebServer { this.#serveFileRange( response, localURL, + url.searchParams, fileSize, start, isNaN(end) ? fileSize : end + 1 @@ -307,7 +308,7 @@ class WebServer { stream.pipe(response); } - #serveFileRange(response, fileURL, fileSize, start, end) { + #serveFileRange(response, fileURL, searchParams, fileSize, start, end) { if (end > fileSize || start > end) { response.writeHead(416); response.end(); @@ -330,6 +331,16 @@ class WebServer { "Content-Range", `bytes ${start}-${end - 1}/${fileSize}` ); + + // Support test in `test/unit/network_spec.js`. + switch (searchParams.get("test-network-break-ranges")) { + case "missing": + response.removeHeader("Content-Range"); + break; + case "invalid": + response.setHeader("Content-Range", "bytes abc-def/qwerty"); + break; + } response.writeHead(206); stream.pipe(response); } From 6db1569edf4b5aed02d82cff13f2d0718a747ffc Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 1 Dec 2024 11:36:18 +0100 Subject: [PATCH 116/338] Make the `onError` callback required in `NetworkManager` This helps ensure that loading errors are always handled correctly, and note that both `PDFNetworkStreamFullRequestReader` and `PDFNetworkStreamRangeRequestReader` already provided such a callback. --- src/display/network.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/display/network.js b/src/display/network.js index 8f08e27c5f51c..930c2d39639a5 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -85,11 +85,10 @@ class NetworkManager { } xhr.responseType = "arraybuffer"; - if (args.onError) { - xhr.onerror = function (evt) { - args.onError(xhr.status); - }; - } + assert(args.onError, "Expected `onError` callback to be provided."); + xhr.onerror = () => { + args.onError(xhr.status); + }; xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); xhr.onprogress = this.onProgress.bind(this, xhrId); @@ -137,7 +136,7 @@ class NetworkManager { // Success status == 0 can be on ftp, file and other protocols. if (xhr.status === 0 && this.isHttp) { - pendingRequest.onError?.(xhr.status); + pendingRequest.onError(xhr.status); return; } const xhrStatus = xhr.status || OK_RESPONSE; @@ -153,7 +152,7 @@ class NetworkManager { !ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus ) { - pendingRequest.onError?.(xhr.status); + pendingRequest.onError(xhr.status); return; } @@ -168,7 +167,7 @@ class NetworkManager { }); } else { warn(`Missing or invalid "Content-Range" header.`); - pendingRequest.onError?.(0); + pendingRequest.onError(0); } } else if (chunk) { pendingRequest.onDone({ @@ -176,7 +175,7 @@ class NetworkManager { chunk, }); } else { - pendingRequest.onError?.(xhr.status); + pendingRequest.onError(xhr.status); } } From fa0482138698f8b5f8734d07bd036c09b378f895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 2 Dec 2024 13:28:20 +0100 Subject: [PATCH 117/338] Do not stringify errors when logging them Converting errors to string drops their stack trace, making it more difficult to debug their actual reason. We can instead pass the error objects as-is to console.warn/error, so that Firefox/Chrome devtools will show both the stack trace of the console.warn/error call, and the original stack trace of the error. This commit also enables the `unicorn/no-console-spaces` ESLint rule, which avoids accidental extra spaces when passing multiple parameters to `console.*` methods. --- eslint.config.mjs | 1 + test/downloadutils.mjs | 2 +- test/driver.js | 2 +- test/unit/testreporter.js | 2 +- web/app.js | 10 +++++----- web/download_manager.js | 2 +- web/firefoxcom.js | 2 +- web/l10n.js | 2 +- web/pdf_page_view.js | 10 +++++----- web/pdf_rendering_queue.js | 2 +- web/pdf_scripting_manager.js | 4 ++-- 11 files changed, 20 insertions(+), 19 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index caf6c01a4f230..ea65d380b63d0 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -112,6 +112,7 @@ export default [ "perfectionist/sort-named-exports": "error", "unicorn/no-abusive-eslint-disable": "error", "unicorn/no-array-push-push": "error", + "unicorn/no-console-spaces": "error", "unicorn/no-instanceof-array": "error", "unicorn/no-invalid-remove-event-listener": "error", "unicorn/no-new-buffer": "error", diff --git a/test/downloadutils.mjs b/test/downloadutils.mjs index 682e916e320f7..6d80e2153f425 100644 --- a/test/downloadutils.mjs +++ b/test/downloadutils.mjs @@ -86,7 +86,7 @@ async function downloadManifestFiles(manifest) { try { await downloadFile(file, url); } catch (ex) { - console.error(`Error during downloading of ${url}: ${ex}`); + console.error(`Error during downloading of ${url}:`, ex); fs.writeFileSync(file, ""); // making it empty file fs.writeFileSync(`${file}.error`, ex); } diff --git a/test/driver.js b/test/driver.js index 75bc8a9164225..15c6c5952ceb3 100644 --- a/test/driver.js +++ b/test/driver.js @@ -1192,7 +1192,7 @@ class Driver { resolve(); }) .catch(reason => { - console.warn(`Driver._send failed (${url}): ${reason}`); + console.warn(`Driver._send failed (${url}):`, reason); this.inFlightRequests--; resolve(); diff --git a/test/unit/testreporter.js b/test/unit/testreporter.js index 05abc51847961..4c5b6b8905798 100644 --- a/test/unit/testreporter.js +++ b/test/unit/testreporter.js @@ -18,7 +18,7 @@ const TestReporter = function (browser) { resolve(); }) .catch(reason => { - console.warn(`TestReporter - send failed (${action}): ${reason}`); + console.warn(`TestReporter - send failed (${action}):`, reason); resolve(); send(action, json); diff --git a/web/app.js b/web/app.js index 0242743d6d93d..d7ed30ef7ad2d 100644 --- a/web/app.js +++ b/web/app.js @@ -204,7 +204,7 @@ const PDFViewerApplication = { try { await this.preferences.initializedPromise; } catch (ex) { - console.error(`initialize: "${ex.message}".`); + console.error("initialize:", ex); } if (AppOptions.get("pdfBugEnabled")) { await this._parseHashParams(); @@ -308,7 +308,7 @@ const PDFViewerApplication = { await __non_webpack_import__(PDFWorker.workerSrc); } } catch (ex) { - console.error(`_parseHashParams: "${ex.message}".`); + console.error("_parseHashParams:", ex); } } if (params.has("textlayer")) { @@ -324,7 +324,7 @@ const PDFViewerApplication = { await loadPDFBug(); this._PDFBug.loadCSS(); } catch (ex) { - console.error(`_parseHashParams: "${ex.message}".`); + console.error("_parseHashParams:", ex); } break; } @@ -337,7 +337,7 @@ const PDFViewerApplication = { await loadPDFBug(); this._PDFBug.init(mainContainer, enabled); } catch (ex) { - console.error(`_parseHashParams: "${ex.message}".`); + console.error("_parseHashParams:", ex); } } // It is not possible to change locale for the (various) extension builds. @@ -1130,7 +1130,7 @@ const PDFViewerApplication = { this.downloadManager.download(data, this._downloadUrl, this._docFilename); } catch (reason) { // When the PDF document isn't ready, fallback to a "regular" download. - console.error(`Error when saving the document: ${reason.message}`); + console.error(`Error when saving the document:`, reason); await this.download(); } finally { await this.pdfScriptingManager.dispatchDidSave(); diff --git a/web/download_manager.js b/web/download_manager.js index 255806f039837..26d6200b3cbed 100644 --- a/web/download_manager.js +++ b/web/download_manager.js @@ -93,7 +93,7 @@ class DownloadManager { window.open(viewerUrl); return true; } catch (ex) { - console.error(`openOrDownloadData: ${ex}`); + console.error("openOrDownloadData:", ex); // Release the `blobUrl`, since opening it failed, and fallback to // downloading the PDF file. URL.revokeObjectURL(blobUrl); diff --git a/web/firefoxcom.js b/web/firefoxcom.js index f8e711686b998..5b98d17a60683 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -121,7 +121,7 @@ class DownloadManager { window.open(viewerUrl); return true; } catch (ex) { - console.error(`openOrDownloadData: ${ex}`); + console.error("openOrDownloadData:", ex); // Release the `blobUrl`, since opening it failed, and fallback to // downloading the PDF file. URL.revokeObjectURL(blobUrl); diff --git a/web/l10n.js b/web/l10n.js index 053614e9885c7..ad469a5266be6 100644 --- a/web/l10n.js +++ b/web/l10n.js @@ -85,7 +85,7 @@ class L10n { try { await this.#l10n.translateElements([element]); } catch (ex) { - console.error(`translateOnce: "${ex}".`); + console.error("translateOnce:", ex); } } diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 46ab525a0e002..13b18e433c26f 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -402,7 +402,7 @@ class PDFPageView { "display" ); } catch (ex) { - console.error(`#renderAnnotationLayer: "${ex}".`); + console.error("#renderAnnotationLayer:", ex); error = ex; } finally { this.#dispatchLayerRendered("annotationlayerrendered", error); @@ -414,7 +414,7 @@ class PDFPageView { try { await this.annotationEditorLayer.render(this.viewport, "display"); } catch (ex) { - console.error(`#renderAnnotationEditorLayer: "${ex}".`); + console.error("#renderAnnotationEditorLayer:", ex); error = ex; } finally { this.#dispatchLayerRendered("annotationeditorlayerrendered", error); @@ -425,7 +425,7 @@ class PDFPageView { try { await this.drawLayer.render("display"); } catch (ex) { - console.error(`#renderDrawLayer: "${ex}".`); + console.error("#renderDrawLayer:", ex); } } @@ -441,7 +441,7 @@ class PDFPageView { this.#buildXfaTextContentItems(result.textDivs); } } catch (ex) { - console.error(`#renderXfaLayer: "${ex}".`); + console.error("#renderXfaLayer:", ex); error = ex; } finally { if (this.xfaLayer?.div) { @@ -466,7 +466,7 @@ class PDFPageView { if (ex instanceof AbortException) { return; } - console.error(`#renderTextLayer: "${ex}".`); + console.error("#renderTextLayer:", ex); error = ex; } this.#dispatchLayerRendered("textlayerrendered", error); diff --git a/web/pdf_rendering_queue.js b/web/pdf_rendering_queue.js index 60e885e225c4c..620eae6c104da 100644 --- a/web/pdf_rendering_queue.js +++ b/web/pdf_rendering_queue.js @@ -201,7 +201,7 @@ class PDFRenderingQueue { if (reason instanceof RenderingCancelledException) { return; } - console.error(`renderView: "${reason}"`); + console.error("renderView:", reason); }); break; } diff --git a/web/pdf_scripting_manager.js b/web/pdf_scripting_manager.js index 63d08c60459ef..402613f87f507 100644 --- a/web/pdf_scripting_manager.js +++ b/web/pdf_scripting_manager.js @@ -105,7 +105,7 @@ class PDFScriptingManager { try { this.#scripting = this.#initScripting(); } catch (error) { - console.error(`setDocument: "${error.message}".`); + console.error("setDocument:", error); await this.#destroyScripting(); return; @@ -192,7 +192,7 @@ class PDFScriptingManager { eventBus.dispatch("sandboxcreated", { source: this }); } catch (error) { - console.error(`setDocument: "${error.message}".`); + console.error("setDocument:", error); await this.#destroyScripting(); return; From 7d52086c589cfcdab4381bb4b5243724f58cac0e Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 6 Dec 2024 15:53:36 +0100 Subject: [PATCH 118/338] Get the first codepoint instead of the first char when using the toUnicode map It fixes #19182. --- src/core/to_unicode_map.js | 2 +- test/pdfs/.gitignore | 1 + test/pdfs/issue19182.pdf | Bin 0 -> 175528 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19182.pdf diff --git a/src/core/to_unicode_map.js b/src/core/to_unicode_map.js index 24bd8fe7d977c..e1a0e5c9b34a4 100644 --- a/src/core/to_unicode_map.js +++ b/src/core/to_unicode_map.js @@ -28,7 +28,7 @@ class ToUnicodeMap { forEach(callback) { for (const charCode in this._map) { - callback(charCode, this._map[charCode].charCodeAt(0)); + callback(charCode, this._map[charCode].codePointAt(0)); } } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 7083ac7d95f00..fc38de944c38c 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -687,3 +687,4 @@ !rotated_ink.pdf !inks.pdf !inks_basic.pdf +!issue19182.pdf diff --git a/test/pdfs/issue19182.pdf b/test/pdfs/issue19182.pdf new file mode 100644 index 0000000000000000000000000000000000000000..93ad565396dd63cc8778027b192f6fc82d9eb477 GIT binary patch literal 175528 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

$XHxin^Bo!rB?<~!1u{e+ZTby3LKYH( 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 +p)}27(hTRb>CmdAY^7aaM7B?(@z4 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 W5*p}I8Maiqje)M28JFi`p! Date: Thu, 5 Dec 2024 17:03:47 +0100 Subject: [PATCH 119/338] Support toggling the `PDFFindBar` options with the `Enter` key (issue 19175) These DOM elements are `input type="checkbox"` and (natively) only support being toggled with the `Space` key, however we can extend an existing event-listener to "manually" support the `Enter` key as well. --- web/pdf_find_bar.js | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/web/pdf_find_bar.js b/web/pdf_find_bar.js index 44787f2505a9b..d76d4fe3dc43d 100644 --- a/web/pdf_find_bar.js +++ b/web/pdf_find_bar.js @@ -46,6 +46,13 @@ class PDFFindBar { this.eventBus = eventBus; this.#mainContainer = mainContainer; + const checkedInputs = new Map([ + [this.highlightAll, "highlightallchange"], + [this.caseSensitive, "casesensitivitychange"], + [this.entireWord, "entirewordchange"], + [this.matchDiacritics, "diacriticmatchingchange"], + ]); + // Add event listeners to the DOM elements. this.toggleButton.addEventListener("click", () => { this.toggle(); @@ -55,11 +62,14 @@ class PDFFindBar { this.dispatchEvent(""); }); - this.bar.addEventListener("keydown", e => { - switch (e.keyCode) { + this.bar.addEventListener("keydown", ({ keyCode, shiftKey, target }) => { + switch (keyCode) { case 13: // Enter - if (e.target === this.findField) { - this.dispatchEvent("again", e.shiftKey); + if (target === this.findField) { + this.dispatchEvent("again", shiftKey); + } else if (checkedInputs.has(target)) { + target.checked = !target.checked; + this.dispatchEvent(/* evtName = */ checkedInputs.get(target)); } break; case 27: // Escape @@ -71,26 +81,15 @@ class PDFFindBar { this.findPreviousButton.addEventListener("click", () => { this.dispatchEvent("again", true); }); - this.findNextButton.addEventListener("click", () => { this.dispatchEvent("again", false); }); - this.highlightAll.addEventListener("click", () => { - this.dispatchEvent("highlightallchange"); - }); - - this.caseSensitive.addEventListener("click", () => { - this.dispatchEvent("casesensitivitychange"); - }); - - this.entireWord.addEventListener("click", () => { - this.dispatchEvent("entirewordchange"); - }); - - this.matchDiacritics.addEventListener("click", () => { - this.dispatchEvent("diacriticmatchingchange"); - }); + for (const [elem, evtName] of checkedInputs) { + elem.addEventListener("click", () => { + this.dispatchEvent(evtName); + }); + } } reset() { From 97846a9a19d0ed1d5fe725f93aa0cedcebc90191 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 7 Dec 2024 13:21:27 +0100 Subject: [PATCH 120/338] Update dependencies to the most recent versions --- gulpfile.mjs | 2 +- package-lock.json | 489 ++++++++++++++++++++++++---------------------- package.json | 18 +- 3 files changed, 270 insertions(+), 239 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index 23a6fcfd7e88d..fddd72bc7b5c1 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2251,7 +2251,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - "@napi-rs/canvas": "^0.1.64", + "@napi-rs/canvas": "^0.1.65", }, browser: { canvas: false, diff --git a/package-lock.json b/package-lock.json index 1aad71a21b328..ab1a5a1542b94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,13 +15,13 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.64", - "@types/node": "^22.9.3", + "@napi-rs/canvas": "^0.1.65", + "@types/node": "^22.10.1", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001684", + "caniuse-lite": "^1.0.30001687", "core-js": "^3.39.0", - "eslint": "^9.15.0", + "eslint": "^9.16.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", @@ -29,7 +29,7 @@ "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", - "globals": "^15.12.0", + "globals": "^15.13.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", @@ -37,7 +37,7 @@ "gulp-replace": "^1.1.4", "gulp-zip": "^6.0.0", "highlight.js": "^11.10.0", - "jasmine": "^5.4.0", + "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", @@ -49,9 +49,9 @@ "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "puppeteer": "23.3.1", - "stylelint": "^16.10.0", + "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.10", @@ -59,7 +59,7 @@ "ttest": "^4.0.0", "typescript": "^5.7.2", "vinyl": "^3.0.0", - "webpack": "^5.96.1", + "webpack": "^5.97.1", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, @@ -1702,9 +1702,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", - "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", "dev": true, "funding": [ { @@ -1721,13 +1721,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.1" + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", - "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", "dev": true, "funding": [ { @@ -1745,9 +1745,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", - "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz", + "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==", "dev": true, "funding": [ { @@ -1764,31 +1764,8 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1" - } - }, - "node_modules/@csstools/selector-specificity": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", - "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "postcss-selector-parser": "^6.1.0" + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" } }, "node_modules/@dual-bundle/import-meta-resolve": { @@ -1910,9 +1887,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", - "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, "license": "MIT", "engines": { @@ -2353,31 +2330,31 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.64.tgz", - "integrity": "sha512-GjvaYebjPsnvGxBsUJxW2Bh1Di9kVifWZ+LLeQEI7se4SD5Ts7GRpdLXhKM05wA4GB9reClFLRd4lUoFMcTMxw==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.65.tgz", + "integrity": "sha512-YcFhXQcp+b2d38zFOJNbpyPHnIL7KAEkhJQ+UeeKI5IpE9B8Cpf/M6RiHPQXSsSqnYbrfFylnW49dyh2oeSblQ==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.64", - "@napi-rs/canvas-darwin-arm64": "0.1.64", - "@napi-rs/canvas-darwin-x64": "0.1.64", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.64", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.64", - "@napi-rs/canvas-linux-arm64-musl": "0.1.64", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.64", - "@napi-rs/canvas-linux-x64-gnu": "0.1.64", - "@napi-rs/canvas-linux-x64-musl": "0.1.64", - "@napi-rs/canvas-win32-x64-msvc": "0.1.64" + "@napi-rs/canvas-android-arm64": "0.1.65", + "@napi-rs/canvas-darwin-arm64": "0.1.65", + "@napi-rs/canvas-darwin-x64": "0.1.65", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.65", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.65", + "@napi-rs/canvas-linux-arm64-musl": "0.1.65", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.65", + "@napi-rs/canvas-linux-x64-gnu": "0.1.65", + "@napi-rs/canvas-linux-x64-musl": "0.1.65", + "@napi-rs/canvas-win32-x64-msvc": "0.1.65" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.64.tgz", - "integrity": "sha512-kyS1b0lt3Nj6QDci8mHTjLA782OpUz5+yiDzsXeOOdqPgiKuDX6ff228gJcZ5/vEOf40rvxar9cYArsTeSuhqQ==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.65.tgz", + "integrity": "sha512-ZYwqFYEKcT5Zr8lbiaJNJj/poLaeK2TncolY914r+gD2TJNeP7ZqvE7A2SX/1C9MB4E3DQEwm3YhL3WEf0x3MQ==", "cpu": [ "arm64" ], @@ -2392,9 +2369,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.64.tgz", - "integrity": "sha512-FiXkDoQcTaKWU5ZavEpyYTB+gwLtML/KMnYBi/t5gQGbEC5sOM16S4UtQNAb5zraam0/75wqFyVbgIt3H5JbWg==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.65.tgz", + "integrity": "sha512-Pg1pfiJEyDIsX+V0QaJPRWvXbw5zmWAk3bivFCvt/5pwZb37/sT6E/RqPHT9NnqpDyKW6SriwY9ypjljysUA1Q==", "cpu": [ "arm64" ], @@ -2409,9 +2386,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.64.tgz", - "integrity": "sha512-TobMkHfS93VBdZclq7V82tnbYT7+swKe4rhuRtIAi+HolIPhKkoZP6mUthl841Sfsuo0f2o6ZJxn+Y6DWmZ3Tg==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.65.tgz", + "integrity": "sha512-3Tr+/HjdJN7Z/VKIcsxV2DvDIibZCExgfYTgljCkUSFuoI7iNkOE6Dc1Q6j212EB9PeO8KmfrViBqHYT6IwWkA==", "cpu": [ "x64" ], @@ -2426,9 +2403,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.64.tgz", - "integrity": "sha512-Zs4+wQpLMjsIvC1sC0+HeYsMGrNtqkhgEMdIHEA5yWLaGmLlsiiqJ+ZZKasynHLklWFfV6ywkfhPTLs2n80tlQ==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.65.tgz", + "integrity": "sha512-3KP+dYObH7CVkZMZWwk1WX9jRjL+EKdQtD43H8MOI+illf+dwqLlecdQ4d9bQRIxELKJ8dyPWY4fOp/Ngufrdg==", "cpu": [ "arm" ], @@ -2443,9 +2420,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.64.tgz", - "integrity": "sha512-AaE2LU42iASw5PE8UdJ/GxAHfN2nKvnwgDL9rR+JzsN19fl4Av8R2VlnBBKVKGJekeqlAN+J+9oIFIGvKUpkpA==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.65.tgz", + "integrity": "sha512-Ka3StKz7Dq7kjTF3nNJCq43UN/VlANS7qGE3dWkn1d+tQNsCRy/wRmyt1TUFzIjRqcTFMQNRbgYq84+53UBA0A==", "cpu": [ "arm64" ], @@ -2460,9 +2437,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.64.tgz", - "integrity": "sha512-EcScvyDfBaP44pfrRxDAmv/NKo7CAM34a5HVo6xSPAlLhLaOWTcMJrlZc14Sx105Q46u2myH1DcTtVsFO9XRfg==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.65.tgz", + "integrity": "sha512-O4xMASm2JrmqYoiDyxVWi+z5C14H+oVEag2rZ5iIA67dhWqYZB+iO7wCFpBYRj31JPBR29FOsu6X9zL+DwBFdw==", "cpu": [ "arm64" ], @@ -2477,9 +2454,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.64.tgz", - "integrity": "sha512-XlqIGfNxV3JF4+mzn+BVxCsKeYGHhYnHo5m8COn012iEri0UXU65VSgMVbAa+78neu9bXoBWT0fUI2TrnV+u1Q==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.65.tgz", + "integrity": "sha512-dblWDaA59ZU8bPbkfM+riSke7sFbNZ70LEevUdI5rgiFEUzYUQlU34gSBzemTACj5rCWt1BYeu0GfkLSjNMBSw==", "cpu": [ "riscv64" ], @@ -2494,9 +2471,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.64.tgz", - "integrity": "sha512-TuVeg6ISOV/NmAYE7Gg5/lyE/SW3a2Unrd+3kTVcI76LHfZwZcdPaNaU9GKJLLv1O5/zMcgK/lJmYOpI+JU4NQ==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.65.tgz", + "integrity": "sha512-wsp+atutw13OJXGU3DDkdngtBDoEg01IuK5xMe0L6VFPV8maGkh17CXze078OD5QJOc6kFyw3DDscMLOPF8+oA==", "cpu": [ "x64" ], @@ -2511,9 +2488,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.64.tgz", - "integrity": "sha512-JwfHdmSIRPlP+u8xglfxcqYfpjg6k/HROBKjeA5eSNCHUiSdH/HStyieAkMInyNjbqVL0FwTgLLNWW16fqTq8w==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.65.tgz", + "integrity": "sha512-odX+nN+IozWzhdj31INcHz3Iy9+EckNw+VqsZcaUxZOTu7/3FmktRNI6aC1qe5minZNv1m05YOS1FVf7fvmjlA==", "cpu": [ "x64" ], @@ -2528,9 +2505,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.64", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.64.tgz", - "integrity": "sha512-iVrrc+Ob9yNJ6yPeMRympLOszg2JvV6DaSostBbAs714eaQ/+i5b6dTI0QRdb/JWpm95CQ7SM/kOPZJZv7Rfjw==", + "version": "0.1.65", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.65.tgz", + "integrity": "sha512-RZQX3luWnlNWgdMnLMQ1hyfQraeAn9lnxWWVCHuUM4tAWEV8UDdeb7cMwmJW7eyt8kAosmjeHt3cylQMHOxGFg==", "cpu": [ "x64" ], @@ -2728,13 +2705,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.9.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz", - "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==", + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/normalize-package-data": { @@ -2906,148 +2883,163 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -3055,13 +3047,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/a-sync-waterfall": { "version": "1.0.1", @@ -3973,9 +3967,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001684", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", - "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", "dev": true, "funding": [ { @@ -4598,13 +4592,13 @@ } }, "node_modules/css-tree": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", - "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.10.0", + "mdn-data": "2.12.2", "source-map-js": "^1.0.1" }, "engines": { @@ -5330,9 +5324,9 @@ } }, "node_modules/eslint": { - "version": "9.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", - "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "license": "MIT", "dependencies": { @@ -5341,7 +5335,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.15.0", + "@eslint/js": "9.16.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -6971,9 +6965,9 @@ } }, "node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", "dev": true, "license": "MIT", "engines": { @@ -8316,23 +8310,23 @@ } }, "node_modules/jasmine": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.4.0.tgz", - "integrity": "sha512-E2u4ylX5tgGYvbynImU6EUBKKrSVB1L72FEPjGh4M55ov1VsxR26RA2JU91L9YSPFgcjo4mCLyKn/QXvEYGBkA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.5.0.tgz", + "integrity": "sha512-JKlEVCVD5QBPYLsg/VE+IUtjyseDCrW8rMBu8la+9ysYashDgavMLM9Kotls1FhI6dCJLJ40dBCIfQjGLPZI1Q==", "dev": true, "license": "MIT", "dependencies": { "glob": "^10.2.2", - "jasmine-core": "~5.4.0" + "jasmine-core": "~5.5.0" }, "bin": { "jasmine": "bin/jasmine.js" } }, "node_modules/jasmine-core": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.4.0.tgz", - "integrity": "sha512-T4fio3W++llLd7LGSGsioriDHgWyhoL6YTu4k37uwJLF7DzOzspz7mNxRoM3cQdLWtL/ebazQpIf/yZGJx/gzg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.5.0.tgz", + "integrity": "sha512-NHOvoPO6o9gVR6pwqEACTEpbgcH+JJ6QDypyymGbSUIFIFsMMbBJ/xsFNud8MSClfnWclXd7RQlAZBz7yVo5TQ==", "dev": true, "license": "MIT" }, @@ -8841,9 +8835,9 @@ } }, "node_modules/known-css-properties": { - "version": "0.34.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", - "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", + "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==", "dev": true, "license": "MIT" }, @@ -9229,9 +9223,9 @@ } }, "node_modules/mdn-data": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", - "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", "dev": true, "license": "CC0-1.0" }, @@ -10799,9 +10793,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "dev": true, "license": "MIT", "bin": { @@ -12236,9 +12230,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.10.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", - "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", + "version": "16.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", + "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", "dev": true, "funding": [ { @@ -12252,16 +12246,16 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.1", - "@csstools/css-tokenizer": "^3.0.1", - "@csstools/media-query-list-parser": "^3.0.1", - "@csstools/selector-specificity": "^4.0.0", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "@csstools/media-query-list-parser": "^4.0.2", + "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.0", + "css-tree": "^3.0.1", "debug": "^4.3.7", "fast-glob": "^3.3.2", "fastest-levenshtein": "^1.0.16", @@ -12273,16 +12267,16 @@ "ignore": "^6.0.2", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", - "known-css-properties": "^0.34.0", + "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", - "picocolors": "^1.0.1", - "postcss": "^8.4.47", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^6.1.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", @@ -12315,6 +12309,29 @@ "stylelint": ">=16.0.0" } }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz", + "integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^7.0.0" + } + }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", @@ -12411,6 +12428,20 @@ "node": ">=0.10.0" } }, + "node_modules/stylelint/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -13652,9 +13683,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -14017,17 +14048,17 @@ } }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", diff --git a/package.json b/package.json index 867e5dfe4986e..9bf1c6348fd01 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,13 @@ "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.64", - "@types/node": "^22.9.3", + "@napi-rs/canvas": "^0.1.65", + "@types/node": "^22.10.1", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001684", + "caniuse-lite": "^1.0.30001687", "core-js": "^3.39.0", - "eslint": "^9.15.0", + "eslint": "^9.16.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", @@ -24,7 +24,7 @@ "eslint-plugin-perfectionist": "^3.9.1", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", - "globals": "^15.12.0", + "globals": "^15.13.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", @@ -32,7 +32,7 @@ "gulp-replace": "^1.1.4", "gulp-zip": "^6.0.0", "highlight.js": "^11.10.0", - "jasmine": "^5.4.0", + "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", @@ -44,9 +44,9 @@ "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.3.3", + "prettier": "^3.4.2", "puppeteer": "23.3.1", - "stylelint": "^16.10.0", + "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.10", @@ -54,7 +54,7 @@ "ttest": "^4.0.0", "typescript": "^5.7.2", "vinyl": "^3.0.0", - "webpack": "^5.96.1", + "webpack": "^5.97.1", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, From 3be56c9a51718ccd6d319603359047bb0e93eb06 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 7 Dec 2024 13:34:27 +0100 Subject: [PATCH 121/338] Upgrade `eslint-plugin-perfectionist` to version 4.2.0 This requires two changes on our side: - The order of exports in `web/viewer{-geckoview}.js` changes slightly because `eslint-plugin-perfectionist` aligned the sorting order with the `eslint-plugin-sort-exports` plugin we used before. This restores the change from commit 347f155. - The `eslint-plugin-import` plugin contains a bug that causes the new version of `eslint-plugin-perfectionist` to be reported as unresolved. This issue is tracked upstream, and since the plugin works fine we can simply extend the ignore list we already have to avoid this error until the upstream bug is fixed. --- eslint.config.mjs | 2 + package-lock.json | 146 +++++++++++++++++----------------------- package.json | 2 +- web/viewer-geckoview.js | 2 +- web/viewer.js | 2 +- 5 files changed, 66 insertions(+), 88 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index ea65d380b63d0..ec3e8012433e9 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -103,6 +103,8 @@ export default [ "web", "fluent-bundle", "fluent-dom", + // See https://github.com/firebase/firebase-admin-node/discussions/1359. + "eslint-plugin-perfectionist", ], }, ], diff --git a/package-lock.json b/package-lock.json index ab1a5a1542b94..f5b57e561874d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^3.9.1", + "eslint-plugin-perfectionist": "^4.2.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.13.0", @@ -2742,14 +2742,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.10.0.tgz", - "integrity": "sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", + "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/visitor-keys": "8.10.0" + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2760,9 +2760,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.10.0.tgz", - "integrity": "sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", + "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", "dev": true, "license": "MIT", "engines": { @@ -2774,14 +2774,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.10.0.tgz", - "integrity": "sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", + "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/visitor-keys": "8.10.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2842,16 +2842,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.10.0.tgz", - "integrity": "sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", + "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.10.0", - "@typescript-eslint/types": "8.10.0", - "@typescript-eslint/typescript-estree": "8.10.0" + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2862,17 +2862,22 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.10.0.tgz", - "integrity": "sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", + "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.10.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.17.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2882,6 +2887,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -5545,66 +5563,21 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-3.9.1.tgz", - "integrity": "sha512-9WRzf6XaAxF4Oi5t/3TqKP5zUjERhasHmLFHin2Yw6ZAp/EP/EVA2dr3BhQrrHWCm5SzTMZf0FcjDnBkO2xFkA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.2.0.tgz", + "integrity": "sha512-hEMFx5xfSc/0OLZXJhSaLUKkFxATuRf4yL2iVfxEcxkkb17DfoLZY9eH960dPSw5uB7o+4avqP3rtkNp1Vwo7w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.9.0", - "@typescript-eslint/utils": "^8.9.0", - "minimatch": "^9.0.5", - "natural-compare-lite": "^1.4.0" + "@typescript-eslint/types": "^8.17.0", + "@typescript-eslint/utils": "^8.17.0", + "natural-orderby": "^5.0.0" }, "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "astro-eslint-parser": "^1.0.2", - "eslint": ">=8.0.0", - "svelte": ">=3.0.0", - "svelte-eslint-parser": "^0.41.1", - "vue-eslint-parser": ">=9.0.0" - }, - "peerDependenciesMeta": { - "astro-eslint-parser": { - "optional": true - }, - "svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - }, - "vue-eslint-parser": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/eslint-plugin-perfectionist/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "eslint": ">=8.0.0" } }, "node_modules/eslint-plugin-prettier": { @@ -9676,12 +9649,15 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "node_modules/natural-orderby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/natural-orderby/-/natural-orderby-5.0.0.tgz", + "integrity": "sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/neo-async": { "version": "2.6.2", @@ -13275,9 +13251,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 9bf1c6348fd01..6ef9cc9cfb97f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^3.9.1", + "eslint-plugin-perfectionist": "^4.2.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.13.0", diff --git a/web/viewer-geckoview.js b/web/viewer-geckoview.js index 9db5a0c1398b0..2b9fd1ace93fb 100644 --- a/web/viewer-geckoview.js +++ b/web/viewer-geckoview.js @@ -77,7 +77,7 @@ if ( } export { + PDFViewerApplication, AppConstants as PDFViewerApplicationConstants, AppOptions as PDFViewerApplicationOptions, - PDFViewerApplication, }; diff --git a/web/viewer.js b/web/viewer.js index 913d8f0bb75ee..1ef6f1a535625 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -275,7 +275,7 @@ if ( } export { + PDFViewerApplication, AppConstants as PDFViewerApplicationConstants, AppOptions as PDFViewerApplicationOptions, - PDFViewerApplication, }; From d1d66a5b07025f0ede8a428e8edf619b92a00040 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 7 Dec 2024 13:23:29 +0100 Subject: [PATCH 122/338] Update translations to the most recent versions --- l10n/cs/viewer.ftl | 9 ++++ l10n/dsb/viewer.ftl | 22 +++++++++ l10n/en-CA/viewer.ftl | 16 ++++++- l10n/en-GB/viewer.ftl | 20 ++++++++ l10n/es-AR/viewer.ftl | 20 ++++++++ l10n/fa/viewer.ftl | 104 +++++++++++++++++++++++++++++++++++++++- l10n/hr/viewer.ftl | 4 +- l10n/hsb/viewer.ftl | 22 +++++++++ l10n/id/viewer.ftl | 81 +++++++++++++++++++++++++++++++ l10n/is/viewer.ftl | 20 ++++++++ l10n/it/viewer.ftl | 20 ++++++++ l10n/ko/viewer.ftl | 16 +++++++ l10n/pa-IN/viewer.ftl | 20 ++++++++ l10n/ru/viewer.ftl | 21 ++++++++ l10n/sr/viewer.ftl | 108 ++++++++++++++++++++++++++++++++++++++++++ l10n/sv-SE/viewer.ftl | 20 ++++++++ l10n/vi/viewer.ftl | 16 +++++++ l10n/zh-TW/viewer.ftl | 16 +++++++ 18 files changed, 551 insertions(+), 4 deletions(-) diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index bc6157b5b13fc..e34e418a984ac 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -497,3 +497,12 @@ pdfjs-editor-alt-text-settings-editor-title = Editor alternativního textu pdfjs-editor-alt-text-settings-show-dialog-button-label = Při přidávání obrázku hned zobrazit editor alternativního textu pdfjs-editor-alt-text-settings-show-dialog-description = Pomůže vám zajistit, aby všechny vaše obrázky obsahovaly alternativní text. pdfjs-editor-alt-text-settings-close-button = Zavřít + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-undo-button = + .title = Zpět +pdfjs-editor-undo-bar-undo-button-label = Zpět +pdfjs-editor-undo-bar-close-button = + .title = Zavřít +pdfjs-editor-undo-bar-close-button-label = Zavřít diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index d1ec368862ef0..24ac94fb233b8 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -497,3 +497,25 @@ pdfjs-editor-alt-text-settings-editor-title = Editor za alternatiwny tekst pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwnego teksta ned pokazaś, gaž se wobraz pśidawa pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga, wam wšym swójim wobrazam alternatiwny tekst pśidaś. pdfjs-editor-alt-text-settings-close-button = Zacyniś + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Wótwónoźone wuzwignuś +pdfjs-editor-undo-bar-message-freetext = Tekst jo se wótwónoźeł +pdfjs-editor-undo-bar-message-ink = Kreslanka jo se wótwónoźeła +pdfjs-editor-undo-bar-message-stamp = Wobraz jo se wótwónoźeł +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } pśipisk jo se wótwónoźeł + [two] { $count } pśipiska stej se wótwónoźełej + [few] { $count } pśipiski su se wótwónoźeli + *[other] { $count } pśipiskow jo se wótwónoźeło + } +pdfjs-editor-undo-bar-undo-button = + .title = Anulěrowaś +pdfjs-editor-undo-bar-undo-button-label = Anulěrowaś +pdfjs-editor-undo-bar-close-button = + .title = Zacyniś +pdfjs-editor-undo-bar-close-button-label = Zacyniś diff --git a/l10n/en-CA/viewer.ftl b/l10n/en-CA/viewer.ftl index 729b61527dd47..349ff6ec0ce9f 100644 --- a/l10n/en-CA/viewer.ftl +++ b/l10n/en-CA/viewer.ftl @@ -343,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Add image pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-title = .title = Change thickness when highlighting items other than text +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Text Editor + .default-content = Start typing… pdfjs-free-text = .aria-label = Text Editor pdfjs-free-text-default-content = Start typing… @@ -353,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt text +pdfjs-editor-alt-text-edit-button = + .aria-label = Edit alt text pdfjs-editor-alt-text-edit-button-label = Edit alt text pdfjs-editor-alt-text-dialog-label = Choose an option pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load. @@ -368,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marked as decorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = For example, “A young man sits down at a table to eat a meal” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt text ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Close pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alt text added pdfjs-editor-new-alt-text-added-button-label = Alt text added # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Missing alt text pdfjs-editor-new-alt-text-missing-button-label = Missing alt text # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Review alt text pdfjs-editor-new-alt-text-to-review-button-label = Review alt text # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: diff --git a/l10n/en-GB/viewer.ftl b/l10n/en-GB/viewer.ftl index 348b2db18810e..4222f6febc48d 100644 --- a/l10n/en-GB/viewer.ftl +++ b/l10n/en-GB/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-close-button = Close + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Highlight removed +pdfjs-editor-undo-bar-message-freetext = Text removed +pdfjs-editor-undo-bar-message-ink = Drawing removed +pdfjs-editor-undo-bar-message-stamp = Image removed +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotation removed + *[other] { $count } annotations removed + } +pdfjs-editor-undo-bar-undo-button = + .title = Undo +pdfjs-editor-undo-bar-undo-button-label = Undo +pdfjs-editor-undo-bar-close-button = + .title = Close +pdfjs-editor-undo-bar-close-button-label = Close diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index daf2c80977edd..ca73dc7c7ff79 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al agregar una imagen pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarse de que todas las imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-close-button = Cerrar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado +pdfjs-editor-undo-bar-message-freetext = Texto eliminado +pdfjs-editor-undo-bar-message-ink = Dibujo eliminado +pdfjs-editor-undo-bar-message-stamp = Imagen eliminado +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotación eliminada + *[other] { $count } anotaciones eliminadas + } +pdfjs-editor-undo-bar-undo-button = + .title = Deshacer +pdfjs-editor-undo-bar-undo-button-label = Deshacer +pdfjs-editor-undo-bar-close-button = + .title = Cerrar +pdfjs-editor-undo-bar-close-button-label = Cerrar diff --git a/l10n/fa/viewer.ftl b/l10n/fa/viewer.ftl index f367e3c6479b9..4969209e131cc 100644 --- a/l10n/fa/viewer.ftl +++ b/l10n/fa/viewer.ftl @@ -39,7 +39,18 @@ pdfjs-open-file-button-label = باز کردن pdfjs-print-button = .title = چاپ pdfjs-print-button-label = چاپ +pdfjs-save-button = + .title = ذخیره pdfjs-save-button-label = ذخیره +# Used in Firefox for Android as a tooltip for the download button (“download” is a verb). +pdfjs-download-button = + .title = دریافت +# Used in Firefox for Android as a label for the download button (“download” is a verb). +# Length of the translation matters since we are in a mobile context, with limited screen estate. +pdfjs-download-button-label = دریافت +pdfjs-bookmark-button = + .title = صفحه فعلی (مشاهده نشانی اینترنتی از صفحه فعلی) +pdfjs-bookmark-button-label = صفحه فعلی ## Secondary toolbar and context menu @@ -64,21 +75,35 @@ pdfjs-cursor-text-select-tool-button-label = ابزارِ انتخابِ متن pdfjs-cursor-hand-tool-button = .title = فعال کردن ابزارِ دست pdfjs-cursor-hand-tool-button-label = ابزار دست +pdfjs-scroll-page-button = + .title = استفاده از پیمایش صفحه +pdfjs-scroll-page-button-label = پیمایش صفحه pdfjs-scroll-vertical-button = .title = استفاده از پیمایش عمودی pdfjs-scroll-vertical-button-label = پیمایش عمودی pdfjs-scroll-horizontal-button = .title = استفاده از پیمایش افقی pdfjs-scroll-horizontal-button-label = پیمایش افقی +pdfjs-spread-none-button = + .title = صفحات پیوسته را یکی نکنید +pdfjs-spread-none-button-label = بدون صفحات پیوسته ## Document properties dialog pdfjs-document-properties-button = .title = خصوصیات سند... pdfjs-document-properties-button-label = خصوصیات سند... -pdfjs-document-properties-file-name = نام فایل: +pdfjs-document-properties-file-name = نام پرونده: pdfjs-document-properties-file-size = حجم پرونده: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } کیلوبایت ({ $b } بایت) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } مگابایت ({ $b } بایت) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } کیلوبایت ({ $size_b } بایت) @@ -93,6 +118,9 @@ pdfjs-document-properties-keywords = کلیدواژه‌ها: pdfjs-document-properties-creation-date = تاریخ ایجاد: pdfjs-document-properties-modification-date = تاریخ ویرایش: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }، { $time } @@ -209,6 +237,10 @@ pdfjs-rendering-error = هنگام بارگیری صفحه خطایی رخ دا ## Annotations +# Variables: +# $date (Date) - the modification date of the annotation +# $time (Time) - the modification time of the annotation +pdfjs-annotation-date-string = { $date }، { $time } # .alt: This is used as a tooltip. # Variables: # $type (String) - an annotation type from a list defined in the PDF spec @@ -216,6 +248,9 @@ pdfjs-rendering-error = هنگام بارگیری صفحه خطایی رخ دا # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [{ $type } Annotation] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -233,14 +268,81 @@ pdfjs-editor-free-text-button-label = متن pdfjs-editor-ink-button = .title = کشیدن pdfjs-editor-ink-button-label = کشیدن +pdfjs-editor-stamp-button = + .title = افزودن یا ویرایش تصاویر +pdfjs-editor-stamp-button-label = افزودن یا ویرایش تصاویر +pdfjs-editor-highlight-button = + .title = برجسته کردن +pdfjs-editor-highlight-button-label = برجسته کردن +pdfjs-highlight-floating-button1 = + .title = برجسته کردن + .aria-label = برجسته کردن +pdfjs-highlight-floating-button-label = برجسته کردن + +## Remove button for the various kind of editor. + + +## + # Editor Parameters pdfjs-editor-free-text-color-input = رنگ pdfjs-editor-free-text-size-input = اندازه pdfjs-editor-ink-color-input = رنگ +pdfjs-editor-stamp-add-image-button = + .title = افزودن تصویر +pdfjs-editor-stamp-add-image-button-label = افزودن تصویر +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = ویرایشگر متن + .default-content = شروع به نوشتن کنید… +pdfjs-free-text = + .aria-label = ویرایشگر متن +pdfjs-free-text-default-content = شروع به نوشتن کنید… ## Alt-text dialog +pdfjs-editor-alt-text-add-description-label = افزودن توضیحات +pdfjs-editor-alt-text-cancel-button = انصراف +pdfjs-editor-alt-text-save-button = ذخیره ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + +pdfjs-editor-colorpicker-button = + .title = تغییر رنگ +pdfjs-editor-colorpicker-dropdown = + .aria-label = انتخاب رنگ +pdfjs-editor-colorpicker-yellow = + .title = زرد +pdfjs-editor-colorpicker-green = + .title = سبز +pdfjs-editor-colorpicker-blue = + .title = آبی +pdfjs-editor-colorpicker-pink = + .title = صورتی +pdfjs-editor-colorpicker-red = + .title = قرمز + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + +pdfjs-editor-highlight-show-all-button-label = نمایش همه +pdfjs-editor-highlight-show-all-button = + .title = نمایش همه + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = بیشتر بدانید +pdfjs-editor-new-alt-text-not-now-button = اکنون نه +pdfjs-editor-new-alt-text-error-close-button = بستن + +## Image alt-text settings + +pdfjs-editor-alt-text-settings-delete-model-button = حذف +pdfjs-editor-alt-text-settings-download-model-button = دریافت +pdfjs-editor-alt-text-settings-downloading-model-button = در حال دریافت… +pdfjs-editor-alt-text-settings-close-button = بستن diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index 3c8212dbf4d4e..c081c6f42a498 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -235,7 +235,7 @@ pdfjs-find-reached-bottom = Dosegnut kraj dokumenta, nastavak s početka # $current (Number) - the index of the currently active find result # $total (Number) - the total number of matches in the document pdfjs-find-match-count = - { NUMBER($total) -> + { $total -> [one] { $current } od { $total } rezultata [few] { $current } od { $total } rezultata *[other] { $current } od { $total } rezultata @@ -243,7 +243,7 @@ pdfjs-find-match-count = # Variables: # $limit (Number) - the maximum number of matches pdfjs-find-match-count-limit = - { NUMBER($limit) -> + { $limit -> [one] Više od { $limit } rezultat [few] Više od { $limit } rezultata *[other] Više od { $limit } rezultata diff --git a/l10n/hsb/viewer.ftl b/l10n/hsb/viewer.ftl index f4598b114b9e7..065ab8d06438d 100644 --- a/l10n/hsb/viewer.ftl +++ b/l10n/hsb/viewer.ftl @@ -497,3 +497,25 @@ pdfjs-editor-alt-text-settings-editor-title = Editor za alternatiwny tekst pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwneho teksta hnydom pokazać, hdyž so wobraz přidawa pdfjs-editor-alt-text-settings-show-dialog-description = Pomha, wam wšěm swojim wobrazam alternatiwny tekst přidać. pdfjs-editor-alt-text-settings-close-button = Začinić + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Wotstronjene wuzběhnyć +pdfjs-editor-undo-bar-message-freetext = Tekst je so wotstronił +pdfjs-editor-undo-bar-message-ink = Rysowanka je so wotstroniła +pdfjs-editor-undo-bar-message-stamp = Wobraz je so wotstronił +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } přispomnjenka je so wotstroniła + [two] { $count } přispomnjence stej so wotstroniłoj + [few] { $count } přispomnjenki su so wotstronili + *[other] { $count } přispomnjenkow je so wotstroniło + } +pdfjs-editor-undo-bar-undo-button = + .title = Cofnyć +pdfjs-editor-undo-bar-undo-button-label = Cofnyć +pdfjs-editor-undo-bar-close-button = + .title = Začinić +pdfjs-editor-undo-bar-close-button-label = Začinić diff --git a/l10n/id/viewer.ftl b/l10n/id/viewer.ftl index fee8d18bfcaf9..c985a33fee110 100644 --- a/l10n/id/viewer.ftl +++ b/l10n/id/viewer.ftl @@ -42,6 +42,12 @@ pdfjs-print-button-label = Cetak pdfjs-save-button = .title = Simpan pdfjs-save-button-label = Simpan +# Used in Firefox for Android as a tooltip for the download button (“download” is a verb). +pdfjs-download-button = + .title = Unduh +# Used in Firefox for Android as a label for the download button (“download” is a verb). +# Length of the translation matters since we are in a mobile context, with limited screen estate. +pdfjs-download-button-label = Unduh pdfjs-bookmark-button = .title = Laman Saat Ini (Lihat URL dari Laman Sekarang) pdfjs-bookmark-button-label = Laman Saat Ini @@ -99,6 +105,14 @@ pdfjs-document-properties-button-label = Properti Dokumen… pdfjs-document-properties-file-name = Nama berkas: pdfjs-document-properties-file-size = Ukuran berkas: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } byte) @@ -113,6 +127,9 @@ pdfjs-document-properties-keywords = Kata Kunci: pdfjs-document-properties-creation-date = Tanggal Dibuat: pdfjs-document-properties-modification-date = Tanggal Dimodifikasi: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } @@ -214,6 +231,13 @@ pdfjs-find-match-diacritics-checkbox-label = Pencocokan Diakritik pdfjs-find-entire-word-checkbox-label = Seluruh teks pdfjs-find-reached-top = Sampai di awal dokumen, dilanjutkan dari bawah pdfjs-find-reached-bottom = Sampai di akhir dokumen, dilanjutkan dari atas +# Variables: +# $current (Number) - the index of the currently active find result +# $total (Number) - the total number of matches in the document +pdfjs-find-match-count = { $current } dari { $total } yang cocok +# Variables: +# $limit (Number) - the maximum number of matches +pdfjs-find-match-count-limit = Lebih dari { $limit } kecocokan pdfjs-find-not-found = Frasa tidak ditemukan ## Predefined zoom values @@ -254,6 +278,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [Anotasi { $type }] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -271,12 +298,47 @@ pdfjs-editor-free-text-button-label = Teks pdfjs-editor-ink-button = .title = Gambar pdfjs-editor-ink-button-label = Gambar +pdfjs-editor-stamp-button = + .title = Tambah atau edit gambar +pdfjs-editor-stamp-button-label = Tambah atau edit gambar +pdfjs-editor-highlight-button = + .title = Sorot +pdfjs-editor-highlight-button-label = Sorot +pdfjs-highlight-floating-button1 = + .title = Sorot + .aria-label = Sorot +pdfjs-highlight-floating-button-label = Sorot + +## Remove button for the various kind of editor. + +pdfjs-editor-remove-ink-button = + .title = Hapus gambar +pdfjs-editor-remove-freetext-button = + .title = Hapus teks +pdfjs-editor-remove-stamp-button = + .title = Hapus gambar +pdfjs-editor-remove-highlight-button = + .title = Hapus sorotan + +## + # Editor Parameters pdfjs-editor-free-text-color-input = Warna pdfjs-editor-free-text-size-input = Ukuran pdfjs-editor-ink-color-input = Warna pdfjs-editor-ink-thickness-input = Ketebalan pdfjs-editor-ink-opacity-input = Opasitas +pdfjs-editor-stamp-add-image-button = + .title = Tambahkan gambar +pdfjs-editor-stamp-add-image-button-label = Tambahkan gambar +# This refers to the thickness of the line used for free highlighting (not bound to text) +pdfjs-editor-free-highlight-thickness-input = Ketebalan +pdfjs-editor-free-highlight-thickness-title = + .title = Ubah ketebalan saat menyorot item selain teks +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor Teks + .default-content = Mulai mengetik… pdfjs-free-text = .aria-label = Editor Teks pdfjs-free-text-default-content = Mulai mengetik… @@ -287,7 +349,26 @@ pdfjs-ink-canvas = ## Alt-text dialog +pdfjs-editor-alt-text-button-label = Teks alternatif +pdfjs-editor-alt-text-edit-button = + .aria-label = Edit teks alternatif +pdfjs-editor-alt-text-edit-button-label = Edit teks alternatif +pdfjs-editor-alt-text-dialog-label = Pilih opsi ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + diff --git a/l10n/is/viewer.ftl b/l10n/is/viewer.ftl index d263c2bb66272..deda510461925 100644 --- a/l10n/is/viewer.ftl +++ b/l10n/is/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Ritill fyrir alt-myndatexta pdfjs-editor-alt-text-settings-show-dialog-button-label = Sýna alt-myndatextaritil strax þegar mynd er bætt við pdfjs-editor-alt-text-settings-show-dialog-description = Hjálpar þér að tryggja að allar myndirnar þínar séu með alt-myndatexta. pdfjs-editor-alt-text-settings-close-button = Loka + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Áherslulitun fjarlægð +pdfjs-editor-undo-bar-message-freetext = Texti fjarlægður +pdfjs-editor-undo-bar-message-ink = Teikning fjarlægð +pdfjs-editor-undo-bar-message-stamp = Mynd fjarlægð +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } glósa fjarlægð + *[other] { $count } glósur fjarlægðar + } +pdfjs-editor-undo-bar-undo-button = + .title = Afturkalla +pdfjs-editor-undo-bar-undo-button-label = Afturkalla +pdfjs-editor-undo-bar-close-button = + .title = Loka +pdfjs-editor-undo-bar-close-button-label = Loka diff --git a/l10n/it/viewer.ftl b/l10n/it/viewer.ftl index c30efec56a782..d1de7e12da1f6 100644 --- a/l10n/it/viewer.ftl +++ b/l10n/it/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Modifica testo alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostra l’editor del testo alternativo non appena si aggiunge un’immagine pdfjs-editor-alt-text-settings-show-dialog-description = Ti aiuta ad assicurarti che tutte le tue immagini abbiano il testo alternativo. pdfjs-editor-alt-text-settings-close-button = Chiudi + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Evidenziazione rimossa +pdfjs-editor-undo-bar-message-freetext = Testo rimosso +pdfjs-editor-undo-bar-message-ink = Disegno rimosso +pdfjs-editor-undo-bar-message-stamp = Immagine rimossa +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotazione rimossa + *[other] { $count } annotazioni rimosse + } +pdfjs-editor-undo-bar-undo-button = + .title = Annulla +pdfjs-editor-undo-bar-undo-button-label = Annulla +pdfjs-editor-undo-bar-close-button = + .title = Chiudi +pdfjs-editor-undo-bar-close-button-label = Chiudi diff --git a/l10n/ko/viewer.ftl b/l10n/ko/viewer.ftl index 3f3cd446ef06b..a321a1108522d 100644 --- a/l10n/ko/viewer.ftl +++ b/l10n/ko/viewer.ftl @@ -485,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = 대체 텍스트 편집기 pdfjs-editor-alt-text-settings-show-dialog-button-label = 이미지 추가 시 바로 대체 텍스트 편집기 표시 pdfjs-editor-alt-text-settings-show-dialog-description = 모든 이미지에 대체 텍스트가 있는지 확인하는 데 도움이 됩니다. pdfjs-editor-alt-text-settings-close-button = 닫기 + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = 강조 표시 제거됨 +pdfjs-editor-undo-bar-message-freetext = 텍스트 제거됨 +pdfjs-editor-undo-bar-message-ink = 그리기 제거됨 +pdfjs-editor-undo-bar-message-stamp = 이미지 제거됨 +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = 주석 { $count }개 제거됨 +pdfjs-editor-undo-bar-undo-button = + .title = 실행 취소 +pdfjs-editor-undo-bar-undo-button-label = 실행 취소 +pdfjs-editor-undo-bar-close-button = + .title = 닫기 +pdfjs-editor-undo-bar-close-button-label = 닫기 diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index b1f508ab05a46..10a61124ef360 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = ਬਦਲਵੀਂ ਲਿਖਤ pdfjs-editor-alt-text-settings-show-dialog-button-label = ਜਦੋਂ ਵਿੱਚ ਚਿੱਤਰ ਜੋੜਿਆ ਜਾਵੇ ਤਾਂ ਫ਼ੌਰਨ ਬਦਲਵੀ ਲਿਖਤ ਸੰਪਾਦਕ ਵੇਖਾਓ pdfjs-editor-alt-text-settings-show-dialog-description = ਤੁਹਾਡੀ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਸਾਰੇ ਚਿੱਤਰਾਂ ਲਈ ਬਦਲਵੀਂ ਲਿਖਤ ਮੌਜੂਦ ਹੋਵੇ। pdfjs-editor-alt-text-settings-close-button = ਬੰਦ ਕਰੋ + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = ਹਾਈਲਾਈਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ +pdfjs-editor-undo-bar-message-freetext = ਲਿਖਤ ਨੂੰ ਹਟਾਇਆ ਗਿਆ +pdfjs-editor-undo-bar-message-ink = ਡਰਾਇੰਗ ਨੂੰ ਹਟਾਇਆ ਗਿਆ +pdfjs-editor-undo-bar-message-stamp = ਚਿੱਤਰ ਨੂੰ ਹਟਾਇਆ ਗਿਆ +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } ਵਿਆਖਿਆ ਨੂੰ ਹਟਾਇਆ + *[other] { $count } ਵਿਆਖਿਆਵਾਂ ਨੂੰ ਹਟਾਇਆ + } +pdfjs-editor-undo-bar-undo-button = + .title = ਵਾਪਸ +pdfjs-editor-undo-bar-undo-button-label = ਵਾਪਸ +pdfjs-editor-undo-bar-close-button = + .title = ਬੰਦ ਕਰੋ +pdfjs-editor-undo-bar-close-button-label = ਬੰਦ ਕਰੋ diff --git a/l10n/ru/viewer.ftl b/l10n/ru/viewer.ftl index 9e0b41d2472ed..81c2f41629b19 100644 --- a/l10n/ru/viewer.ftl +++ b/l10n/ru/viewer.ftl @@ -495,3 +495,24 @@ pdfjs-editor-alt-text-settings-editor-title = Редактор альтерна pdfjs-editor-alt-text-settings-show-dialog-button-label = Сразу показывать редактор альтернативного текста при добавлении изображения pdfjs-editor-alt-text-settings-show-dialog-description = Помогает вам убедиться, что все ваши изображения имеют альтернативный текст. pdfjs-editor-alt-text-settings-close-button = Закрыть + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Выделение удалено +pdfjs-editor-undo-bar-message-freetext = Текст удалён +pdfjs-editor-undo-bar-message-ink = Рисунок удалён +pdfjs-editor-undo-bar-message-stamp = Изображение удалено +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } аннотация удалена + [few] { $count } аннотации удалены + *[many] { $count } аннотаций удалены + } +pdfjs-editor-undo-bar-undo-button = + .title = Отменить +pdfjs-editor-undo-bar-undo-button-label = Отменить +pdfjs-editor-undo-bar-close-button = + .title = Закрыть +pdfjs-editor-undo-bar-close-button-label = Закрыть diff --git a/l10n/sr/viewer.ftl b/l10n/sr/viewer.ftl index 33702934727d3..e125dfb89b177 100644 --- a/l10n/sr/viewer.ftl +++ b/l10n/sr/viewer.ftl @@ -113,6 +113,9 @@ pdfjs-document-properties-keywords = Кључне речи: pdfjs-document-properties-creation-date = Датум креирања: pdfjs-document-properties-modification-date = Датум модификације: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } @@ -254,6 +257,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [{ $type } коментар] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -271,9 +277,27 @@ pdfjs-editor-free-text-button-label = Текст pdfjs-editor-ink-button = .title = Цртај pdfjs-editor-ink-button-label = Цртај +pdfjs-editor-stamp-button = + .title = Додај или уреди слике +pdfjs-editor-stamp-button-label = Додај или уреди слике +pdfjs-editor-highlight-button = + .title = Означи +pdfjs-editor-highlight-button-label = Означи +pdfjs-highlight-floating-button1 = + .title = Означи + .aria-label = Означи +pdfjs-highlight-floating-button-label = Означи ## Remove button for the various kind of editor. +pdfjs-editor-remove-ink-button = + .title = Уклони цртеж +pdfjs-editor-remove-freetext-button = + .title = Уклони текст +pdfjs-editor-remove-stamp-button = + .title = Уклони слику +pdfjs-editor-remove-highlight-button = + .title = Уклони ознаку ## @@ -283,6 +307,15 @@ pdfjs-editor-free-text-size-input = Величина pdfjs-editor-ink-color-input = Боја pdfjs-editor-ink-thickness-input = Дебљина pdfjs-editor-ink-opacity-input = Опацитет +pdfjs-editor-stamp-add-image-button = + .title = Додај слику +pdfjs-editor-stamp-add-image-button-label = Додај слику +pdfjs-editor-free-highlight-thickness-title = + .title = Промени дебљину при означавању других ставки сем текста +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Уређивач текста + .default-content = Почни куцати… pdfjs-free-text = .aria-label = Уређивач текста pdfjs-free-text-default-content = Почни куцање… @@ -293,21 +326,96 @@ pdfjs-ink-canvas = ## Alt-text dialog +pdfjs-editor-alt-text-button-label = Алтернативни текст +pdfjs-editor-alt-text-edit-button = + .aria-label = Уреди алтернативни текст +pdfjs-editor-alt-text-edit-button-label = Уреди алтернативни текст +pdfjs-editor-alt-text-dialog-label = Одабери опцију +pdfjs-editor-alt-text-dialog-description = Алтернативни текст помаже слепим и слабовидим особама или када се слика не учита. +pdfjs-editor-alt-text-add-description-label = Додај опис +pdfjs-editor-alt-text-add-description-description = Сажмите у 1-2 реченице које описују предмет, окружење или радње. +pdfjs-editor-alt-text-mark-decorative-label = Означи као украсно +pdfjs-editor-alt-text-mark-decorative-description = Ово је за украсне слике, као што су ивице или водени печати. +pdfjs-editor-alt-text-cancel-button = Откажи +pdfjs-editor-alt-text-save-button = Сачувај +pdfjs-editor-alt-text-decorative-tooltip = Означено као украсно +# .placeholder: This is a placeholder for the alt text input area +pdfjs-editor-alt-text-textarea = + .placeholder = На пример: „Младић седа за сто да једе“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Алтернативни текст ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. +pdfjs-editor-resizer-label-top-left = Горњи леви угао — промени величину +pdfjs-editor-resizer-label-top-middle = Средина горе — промени величину +pdfjs-editor-resizer-label-top-right = Горњи десни угао — промени величину +pdfjs-editor-resizer-label-middle-right = Средина десно — промени величину +pdfjs-editor-resizer-label-bottom-right = Доњи десни угао — промени величину +pdfjs-editor-resizer-label-bottom-middle = Средина доле — промени величину +pdfjs-editor-resizer-label-bottom-left = Доњи леви угао — промени величину +pdfjs-editor-resizer-label-middle-left = Средина лево — промени величину +pdfjs-editor-resizer-top-left = + .aria-label = Горњи леви угао — промени величину +pdfjs-editor-resizer-top-middle = + .aria-label = Средина горе — промени величину +pdfjs-editor-resizer-top-right = + .aria-label = Горњи десни угао — промени величину +pdfjs-editor-resizer-middle-right = + .aria-label = Средина десно — промени величину +pdfjs-editor-resizer-bottom-right = + .aria-label = Доњи десни угао — промени величину +pdfjs-editor-resizer-bottom-middle = + .aria-label = Средина доле — промени величину +pdfjs-editor-resizer-bottom-left = + .aria-label = Доњи леви угао — промени величину +pdfjs-editor-resizer-middle-left = + .aria-label = Средина лево — промени величину ## Color picker +# This means "Color used to highlight text" +pdfjs-editor-highlight-colorpicker-label = Боја означавања +pdfjs-editor-colorpicker-button = + .title = Промени боју +pdfjs-editor-colorpicker-dropdown = + .aria-label = Избор боја +pdfjs-editor-colorpicker-yellow = + .title = Жута +pdfjs-editor-colorpicker-green = + .title = Зелена +pdfjs-editor-colorpicker-blue = + .title = Плава +pdfjs-editor-colorpicker-pink = + .title = Розе +pdfjs-editor-colorpicker-red = + .title = Црвена ## Show all highlights ## This is a toggle button to show/hide all the highlights. +pdfjs-editor-highlight-show-all-button-label = Прикажи све +pdfjs-editor-highlight-show-all-button = + .title = Прикажи све ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = Уреди алтернативни текст (опис слике) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = Додај алтернативни текст (опис слике) +pdfjs-editor-new-alt-text-textarea = + .placeholder = Напиши опис овде… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Кратак опис за слепе и слабовиде људе или када се слика не успе учитати. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = Овај алтернативни текст је направљен аутоматски и може бити нетачан. +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Сазнајте више +pdfjs-editor-new-alt-text-create-automatically-button-label = Прави алтернативни текст аутоматски +pdfjs-editor-new-alt-text-not-now-button = Не сада ## Image alt-text settings diff --git a/l10n/sv-SE/viewer.ftl b/l10n/sv-SE/viewer.ftl index fd5ada0c5e237..6c4c610454e96 100644 --- a/l10n/sv-SE/viewer.ftl +++ b/l10n/sv-SE/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alternativ textredigerare pdfjs-editor-alt-text-settings-show-dialog-button-label = Visa alternativ textredigerare direkt när du lägger till en bild pdfjs-editor-alt-text-settings-show-dialog-description = Hjälper dig att se till att alla dina bilder har alternativ text. pdfjs-editor-alt-text-settings-close-button = Stäng + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Markering borttagen +pdfjs-editor-undo-bar-message-freetext = Text borttagen +pdfjs-editor-undo-bar-message-ink = Ritning borttagen +pdfjs-editor-undo-bar-message-stamp = Bild borttagen +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anteckning har tagits bort + *[other] { $count } anteckningar har tagits bort + } +pdfjs-editor-undo-bar-undo-button = + .title = Ångra +pdfjs-editor-undo-bar-undo-button-label = Ångra +pdfjs-editor-undo-bar-close-button = + .title = Stäng +pdfjs-editor-undo-bar-close-button-label = Stäng diff --git a/l10n/vi/viewer.ftl b/l10n/vi/viewer.ftl index 2b0213a1cc0e1..af1291f36fd58 100644 --- a/l10n/vi/viewer.ftl +++ b/l10n/vi/viewer.ftl @@ -485,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = Trình soạn thảo văn bản th pdfjs-editor-alt-text-settings-show-dialog-button-label = Hiển thị ngay trình soạn thảo văn bản thay thế khi thêm hình ảnh pdfjs-editor-alt-text-settings-show-dialog-description = Giúp bạn đảm bảo tất cả hình ảnh của bạn đều có văn bản thay thế. pdfjs-editor-alt-text-settings-close-button = Đóng + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Đã xóa đánh dấu +pdfjs-editor-undo-bar-message-freetext = Đã xóa văn bản +pdfjs-editor-undo-bar-message-ink = Đã xóa bản vẽ +pdfjs-editor-undo-bar-message-stamp = Đã xóa hình ảnh +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = { $count } chú thích đã bị xóa +pdfjs-editor-undo-bar-undo-button = + .title = Hoàn tác +pdfjs-editor-undo-bar-undo-button-label = Hoàn tác +pdfjs-editor-undo-bar-close-button = + .title = Đóng +pdfjs-editor-undo-bar-close-button-label = Đóng diff --git a/l10n/zh-TW/viewer.ftl b/l10n/zh-TW/viewer.ftl index 16d41797ae621..bc4b7efe1f1aa 100644 --- a/l10n/zh-TW/viewer.ftl +++ b/l10n/zh-TW/viewer.ftl @@ -485,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = 替代文字編輯器 pdfjs-editor-alt-text-settings-show-dialog-button-label = 新增圖片後立即顯示替代文字編輯器 pdfjs-editor-alt-text-settings-show-dialog-description = 幫助您確保所有圖片都有替代文字。 pdfjs-editor-alt-text-settings-close-button = 關閉 + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = 已移除強調 +pdfjs-editor-undo-bar-message-freetext = 已移除文字 +pdfjs-editor-undo-bar-message-ink = 已移除繪圖 +pdfjs-editor-undo-bar-message-stamp = 已移除圖片 +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 筆註解 +pdfjs-editor-undo-bar-undo-button = + .title = 還原 +pdfjs-editor-undo-bar-undo-button-label = 還原 +pdfjs-editor-undo-bar-close-button = + .title = 關閉 +pdfjs-editor-undo-bar-close-button-label = 關閉 From 088e5861c1f47e0c66b28a83356783c176204cad Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 7 Dec 2024 14:01:00 +0100 Subject: [PATCH 123/338] Print more warnings about potential problems in Node.js environments - Warn if the "regular" PDF.js build is used in Node.js environments, since that won't load any of the relevant polyfills. - Warn if the `require` function cannot be accessed, since currently we're just "swallowing" any errors. --- src/display/node_utils.js | 64 ++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/display/node_utils.js b/src/display/node_utils.js index 4edd7bb3a467c..d278629514bea 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -26,43 +26,45 @@ if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { ); } -if ( - typeof PDFJSDev !== "undefined" && - !PDFJSDev.test("SKIP_BABEL") && - isNodeJS -) { - let canvas; - try { - const require = process - .getBuiltinModule("module") - .createRequire(import.meta.url); - +if (isNodeJS) { + if (typeof PDFJSDev === "undefined" || PDFJSDev.test("SKIP_BABEL")) { + warn("Please use the `legacy` build in Node.js environments."); + } else { + let canvas; try { - canvas = require("@napi-rs/canvas"); + const require = process + .getBuiltinModule("module") + .createRequire(import.meta.url); + + try { + canvas = require("@napi-rs/canvas"); + } catch (ex) { + warn(`Cannot load "@napi-rs/canvas" package: "${ex}".`); + } } catch (ex) { - warn(`Cannot load "@napi-rs/canvas" package: "${ex}".`); + warn(`Cannot access the \`require\` function: "${ex}".`); } - } catch {} - if (!globalThis.DOMMatrix) { - if (canvas?.DOMMatrix) { - globalThis.DOMMatrix = canvas.DOMMatrix; - } else { - warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); + if (!globalThis.DOMMatrix) { + if (canvas?.DOMMatrix) { + globalThis.DOMMatrix = canvas.DOMMatrix; + } else { + warn("Cannot polyfill `DOMMatrix`, rendering may be broken."); + } } - } - if (!globalThis.ImageData) { - if (canvas?.ImageData) { - globalThis.ImageData = canvas.ImageData; - } else { - warn("Cannot polyfill `ImageData`, rendering may be broken."); + if (!globalThis.ImageData) { + if (canvas?.ImageData) { + globalThis.ImageData = canvas.ImageData; + } else { + warn("Cannot polyfill `ImageData`, rendering may be broken."); + } } - } - if (!globalThis.Path2D) { - if (canvas?.Path2D) { - globalThis.Path2D = canvas.Path2D; - } else { - warn("Cannot polyfill `Path2D`, rendering may be broken."); + if (!globalThis.Path2D) { + if (canvas?.Path2D) { + globalThis.Path2D = canvas.Path2D; + } else { + warn("Cannot polyfill `Path2D`, rendering may be broken."); + } } } } From 56df91f11c5406998c2738e565e25bcfb45317b5 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 7 Dec 2024 19:05:02 +0100 Subject: [PATCH 124/338] Fix intermittent issues in the `issue14307.pdf` integration tests The `must check input for US zip format` integration test fails pretty consistently in Puppeteer 23.4.0+ with `Expected '12341' to equal '12345'`. This is reproducible with the `pdf.sandbox.external.js` hack from https://github.com/mozilla/pdf.js/issues/18396#issuecomment-2211273743. Investigation uncovered two issues at play here: 1. We do two `clearInput` calls, but don't await processing of the two sandbox events that are triggered by that action. The three tests that use `issue14307.pdf` are in different `describe` blocks and therefore reload the PDF file, so we can simply remove those calls because the inputs are already empty by default. 2. We don't await processing of the sandbox events that occur after switching to another text field. This causes the expectation failure because the typing actions will happen too soon and interfere with the sandbox event processing. We solve the issue by explicitly awaiting the sandbox roundtrip. Moreover, similar to PR #19001 and #18399 we remove any remaining room for intermittent issues by directly checking for the expected value, which also results in shorter code. --- test/integration/scripting_spec.mjs | 80 +++++++++-------------------- 1 file changed, 24 insertions(+), 56 deletions(-) diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index 0a157479b0904..c8d3f0b144a0a 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -1060,38 +1060,26 @@ describe("Interaction", () => { it("must check input for US zip format", async () => { // Run the tests sequentially to avoid any focus issues between the two // browsers when an alert is displayed. - for (const [browserName, page] of pages) { + for (const [, page] of pages) { await waitForScripting(page); - await clearInput(page, getSelector("29R")); - await clearInput(page, getSelector("30R")); - await page.focus(getSelector("29R")); await typeAndWaitForSandbox(page, getSelector("29R"), "12A"); - await page.waitForFunction( - `${getQuerySelector("29R")}.value !== "12A"` - ); - - let text = await page.$eval(getSelector(`29R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("12"); + await page.waitForFunction(`${getQuerySelector("29R")}.value === "12"`); await page.focus(getSelector("29R")); await typeAndWaitForSandbox(page, getSelector("29R"), "34"); await page.click("[data-annotation-id='30R']"); - - await page.waitForFunction( - `${getQuerySelector("29R")}.value !== "1234"` - ); - - text = await page.$eval(getSelector(`29R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual(""); + await waitForSandboxTrip(page); + await page.waitForFunction(`${getQuerySelector("29R")}.value === ""`); await page.focus(getSelector("29R")); await typeAndWaitForSandbox(page, getSelector("29R"), "12345"); await page.click("[data-annotation-id='30R']"); - - text = await page.$eval(getSelector(`29R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("12345"); + await waitForSandboxTrip(page); + await page.waitForFunction( + `${getQuerySelector("29R")}.value === "12345"` + ); } }); }); @@ -1115,38 +1103,28 @@ describe("Interaction", () => { it("must check input for US phone number (long) format", async () => { // Run the tests sequentially to avoid any focus issues between the two // browsers when an alert is displayed. - for (const [browserName, page] of pages) { + for (const [, page] of pages) { await waitForScripting(page); - await clearInput(page, getSelector("29R")); - await clearInput(page, getSelector("30R")); - await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "(123) 456A"); await page.waitForFunction( - `${getQuerySelector("30R")}.value !== "(123) 456A"` + `${getQuerySelector("30R")}.value === "(123) 456"` ); - let text = await page.$eval(getSelector(`30R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("(123) 456"); - await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "-789"); await page.click("[data-annotation-id='29R']"); - - await page.waitForFunction( - `${getQuerySelector("30R")}.value !== "(123) 456-789"` - ); - - text = await page.$eval(getSelector(`30R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual(""); + await waitForSandboxTrip(page); + await page.waitForFunction(`${getQuerySelector("30R")}.value === ""`); await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "(123) 456-7890"); await page.click("[data-annotation-id='29R']"); - - text = await page.$eval(getSelector("30R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("(123) 456-7890"); + await waitForSandboxTrip(page); + await page.waitForFunction( + `${getQuerySelector("30R")}.value === "(123) 456-7890"` + ); } }); }); @@ -1170,38 +1148,28 @@ describe("Interaction", () => { it("must check input for US phone number (short) format", async () => { // Run the tests sequentially to avoid any focus issues between the two // browsers when an alert is displayed. - for (const [browserName, page] of pages) { + for (const [, page] of pages) { await waitForScripting(page); - await clearInput(page, getSelector("29R")); - await clearInput(page, getSelector("30R")); - await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "123A"); await page.waitForFunction( - `${getQuerySelector("30R")}.value !== "123A"` + `${getQuerySelector("30R")}.value === "123"` ); - let text = await page.$eval(getSelector(`30R`), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("123"); - await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "-456"); await page.click("[data-annotation-id='29R']"); - - await page.waitForFunction( - `${getQuerySelector("30R")}.value !== "123-456"` - ); - - text = await page.$eval(getSelector("30R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual(""); + await waitForSandboxTrip(page); + await page.waitForFunction(`${getQuerySelector("30R")}.value === ""`); await page.focus(getSelector("30R")); await typeAndWaitForSandbox(page, getSelector("30R"), "123-4567"); await page.click("[data-annotation-id='29R']"); - - text = await page.$eval(getSelector("30R"), el => el.value); - expect(text).withContext(`In ${browserName}`).toEqual("123-4567"); + await waitForSandboxTrip(page); + await page.waitForFunction( + `${getQuerySelector("30R")}.value === "123-4567"` + ); } }); }); From 20d92c0c5c7af9316b6a9be479f83ba8671508f0 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 8 Dec 2024 16:06:25 +0100 Subject: [PATCH 125/338] Add a ref test for setting disableFontFace to true --- test/driver.js | 2 ++ test/test_manifest.json | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/test/driver.js b/test/driver.js index 15c6c5952ceb3..34b28b22a5fb9 100644 --- a/test/driver.js +++ b/test/driver.js @@ -624,6 +624,7 @@ class Driver { } const isOffscreenCanvasSupported = task.isOffscreenCanvasSupported === false ? false : undefined; + const disableFontFace = task.disableFontFace === true; const loadingTask = getDocument({ url: new URL(task.file, window.location), @@ -637,6 +638,7 @@ class Driver { enableXfa: task.enableXfa, isOffscreenCanvasSupported, styleElement: xfaStyleElement, + disableFontFace, }); let promise = loadingTask.promise; diff --git a/test/test_manifest.json b/test/test_manifest.json index 30dffed82a0af..17dd176ed32e0 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -11208,5 +11208,13 @@ "md5": "497370ab55cbb9c60bb0ea4b5d9e4d08", "rounds": 1, "type": "eq" + }, + { + "id": "tracemonkey-disableFontFace-eq", + "file": "pdfs/tracemonkey.pdf", + "md5": "9a192d8b1a7dc652a19835f6f08098bd", + "rounds": 1, + "disableFontFace": true, + "type": "eq" } ] From 66edb9c1f0690f194e5a8ab5197fb09cff1297ab Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 8 Dec 2024 14:45:54 +0100 Subject: [PATCH 126/338] Take the `userUnit` into account in the `PageViewport` class (issue 19176) --- src/display/api.js | 1 + src/display/display_utils.js | 19 ++++++++++++++----- test/pdfs/.gitignore | 1 + test/pdfs/issue19176.pdf | Bin 0 -> 466 bytes test/test_manifest.json | 7 +++++++ test/unit/api_spec.js | 34 +++++++++++++++++++++++++++++++++- 6 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 test/pdfs/issue19176.pdf diff --git a/src/display/api.js b/src/display/api.js index 91cf928d1586a..e3cb683f7c94c 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -1408,6 +1408,7 @@ class PDFPageProxy { } = {}) { return new PageViewport({ viewBox: this.view, + userUnit: this.userUnit, scale, rotation, offsetX, diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 3a0b653b7e793..5d40e23498d83 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -83,6 +83,7 @@ async function fetchData(url, type = "text") { * @typedef {Object} PageViewportParameters * @property {Array} viewBox - The xMin, yMin, xMax and * yMax coordinates. + * @property {number} userUnit - The size of units. * @property {number} scale - The scale of the viewport. * @property {number} rotation - The rotation, in degrees, of the viewport. * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The @@ -116,6 +117,7 @@ class PageViewport { */ constructor({ viewBox, + userUnit, scale, rotation, offsetX = 0, @@ -123,11 +125,14 @@ class PageViewport { dontFlip = false, }) { this.viewBox = viewBox; + this.userUnit = userUnit; this.scale = scale; this.rotation = rotation; this.offsetX = offsetX; this.offsetY = offsetY; + scale *= userUnit; // Take the userUnit into account. + // creating transform to convert pdf coordinate system to the normal // canvas like coordinates taking in account scale and rotation const centerX = (viewBox[2] + viewBox[0]) / 2; @@ -208,12 +213,14 @@ class PageViewport { * @type {Object} */ get rawDims() { - const { viewBox } = this; + const { userUnit, viewBox } = this; + const dims = viewBox.map(x => x * userUnit); + return shadow(this, "rawDims", { - pageWidth: viewBox[2] - viewBox[0], - pageHeight: viewBox[3] - viewBox[1], - pageX: viewBox[0], - pageY: viewBox[1], + pageWidth: dims[2] - dims[0], + pageHeight: dims[3] - dims[1], + pageX: dims[0], + pageY: dims[1], }); } @@ -231,6 +238,7 @@ class PageViewport { } = {}) { return new PageViewport({ viewBox: this.viewBox.slice(), + userUnit: this.userUnit, scale, rotation, offsetX, @@ -514,6 +522,7 @@ function getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) { return new PageViewport({ viewBox, + userUnit: 1, scale, rotation, }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index fc38de944c38c..5608e0df93620 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -553,6 +553,7 @@ !poppler-67295-0.pdf !poppler-85140-0.pdf !issue15012.pdf +!issue19176.pdf !issue15150.pdf !poppler-395-0-fuzzed.pdf !issue14165.pdf diff --git a/test/pdfs/issue19176.pdf b/test/pdfs/issue19176.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7bf465aeed5bf6979da70a183b93e1d6f4beecdd GIT binary patch literal 466 zcmZ8eyH3L}6y5z5XURwtCnQj*%0QtDAgVy8s)HdnA*jU2cBR7S@FRQ{8{#@m8iY5W z>+`w}mY0i@coK==>-+OZNJP+&FJd-BxKuS+#EcXOAKu>x;aoYj)iv^5P+R(kemoH7 zde=Hggx5`Ju}0ESHv{>gH&Xq0pdRG?3-4=)b$a81tlpU?PQsb;9N{gMjk?f#tRogU zpQMnIJyw>?s%;$3V$P{s#~K!=U4+ro-v`edYHRllnff}`8B(v@Um|14DGZ_VCHp~N zcW Date: Fri, 6 Dec 2024 23:16:16 +0100 Subject: [PATCH 127/338] Improve perfs of the font renderer Some SVG paths are generated from the font and used in the main thread to render the glyphs. --- src/core/font_renderer.js | 86 ++++++++++++++++++++++---------------- src/display/canvas.js | 53 ++++++++++++++++------- src/display/font_loader.js | 85 +------------------------------------ src/shared/util.js | 13 ------ 4 files changed, 88 insertions(+), 149 deletions(-) diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 572cda50995bd..37342fc300dc9 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -16,14 +16,13 @@ import { bytesToString, FONT_IDENTITY_MATRIX, - FontRenderOps, FormatError, unreachable, + Util, warn, } from "../shared/util.js"; import { CFFParser } from "./cff_parser.js"; import { getGlyphsUnicode } from "./glyphlist.js"; -import { isNumberArray } from "./core_utils.js"; import { StandardEncoding } from "./encodings.js"; import { Stream } from "./stream.js"; @@ -182,13 +181,13 @@ function lookupCmap(ranges, unicode) { function compileGlyf(code, cmds, font) { function moveTo(x, y) { - cmds.add(FontRenderOps.MOVE_TO, [x, y]); + cmds.add("M", [x, y]); } function lineTo(x, y) { - cmds.add(FontRenderOps.LINE_TO, [x, y]); + cmds.add("L", [x, y]); } function quadraticCurveTo(xa, ya, x, y) { - cmds.add(FontRenderOps.QUADRATIC_CURVE_TO, [xa, ya, x, y]); + cmds.add("Q", [xa, ya, x, y]); } let i = 0; @@ -249,22 +248,15 @@ function compileGlyf(code, cmds, font) { if (subglyph) { // TODO: the transform should be applied only if there is a scale: // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1205 - cmds.add(FontRenderOps.SAVE); - cmds.add(FontRenderOps.TRANSFORM, [ - scaleX, - scale01, - scale10, - scaleY, - x, - y, - ]); + cmds.save(); + cmds.transform([scaleX, scale01, scale10, scaleY, x, y]); if (!(flags & 0x02)) { // TODO: we must use arg1 and arg2 to make something similar to: // https://github.com/freetype/freetype/blob/edd4fedc5427cf1cf1f4b045e53ff91eb282e9d4/src/truetype/ttgload.c#L1209 } compileGlyf(subglyph, cmds, font); - cmds.add(FontRenderOps.RESTORE); + cmds.restore(); } } while (flags & 0x20); } else { @@ -369,13 +361,13 @@ function compileGlyf(code, cmds, font) { function compileCharString(charStringCode, cmds, font, glyphId) { function moveTo(x, y) { - cmds.add(FontRenderOps.MOVE_TO, [x, y]); + cmds.add("M", [x, y]); } function lineTo(x, y) { - cmds.add(FontRenderOps.LINE_TO, [x, y]); + cmds.add("L", [x, y]); } function bezierCurveTo(x1, y1, x2, y2, x, y) { - cmds.add(FontRenderOps.BEZIER_CURVE_TO, [x1, y1, x2, y2, x, y]); + cmds.add("C", [x1, y1, x2, y2, x, y]); } const stack = []; @@ -548,8 +540,8 @@ function compileCharString(charStringCode, cmds, font, glyphId) { const bchar = stack.pop(); y = stack.pop(); x = stack.pop(); - cmds.add(FontRenderOps.SAVE); - cmds.add(FontRenderOps.TRANSLATE, [x, y]); + cmds.save(); + cmds.translate(x, y); let cmap = lookupCmap( font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]) @@ -560,7 +552,7 @@ function compileCharString(charStringCode, cmds, font, glyphId) { font, cmap.glyphId ); - cmds.add(FontRenderOps.RESTORE); + cmds.restore(); cmap = lookupCmap( font.cmap, @@ -744,27 +736,49 @@ function compileCharString(charStringCode, cmds, font, glyphId) { parse(charStringCode); } -const NOOP = []; +const NOOP = ""; class Commands { cmds = []; + transformStack = []; + + currentTransform = [1, 0, 0, 1, 0, 0]; + add(cmd, args) { if (args) { - if (!isNumberArray(args, null)) { - warn( - `Commands.add - "${cmd}" has at least one non-number arg: "${args}".` - ); - // "Fix" the wrong args by replacing them with 0. - const newArgs = args.map(arg => (typeof arg === "number" ? arg : 0)); - this.cmds.push(cmd, ...newArgs); - } else { - this.cmds.push(cmd, ...args); + const [a, b, c, d, e, f] = this.currentTransform; + for (let i = 0, ii = args.length; i < ii; i += 2) { + const x = args[i]; + const y = args[i + 1]; + args[i] = a * x + c * y + e; + args[i + 1] = b * x + d * y + f; } + this.cmds.push(`${cmd}${args.join(" ")}`); } else { this.cmds.push(cmd); } } + + transform(transf) { + this.currentTransform = Util.transform(this.currentTransform, transf); + } + + translate(x, y) { + this.transform([1, 0, 0, 1, x, y]); + } + + save() { + this.transformStack.push(this.currentTransform.slice()); + } + + restore() { + this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0]; + } + + getSVG() { + return this.cmds.join(""); + } } class CompiledFont { @@ -785,7 +799,7 @@ class CompiledFont { const { charCode, glyphId } = lookupCmap(this.cmap, unicode); let fn = this.compiledGlyphs[glyphId], compileEx; - if (!fn) { + if (fn === undefined) { try { fn = this.compileGlyph(this.glyphs[glyphId], glyphId); } catch (ex) { @@ -822,13 +836,11 @@ class CompiledFont { } const cmds = new Commands(); - cmds.add(FontRenderOps.SAVE); - cmds.add(FontRenderOps.TRANSFORM, fontMatrix.slice()); - cmds.add(FontRenderOps.SCALE); + cmds.transform(fontMatrix.slice()); this.compileGlyphImpl(code, cmds, glyphId); - cmds.add(FontRenderOps.RESTORE); + cmds.add("Z"); - return cmds.cmds; + return cmds.getSVG(); } compileGlyphImpl() { diff --git a/src/display/canvas.js b/src/display/canvas.js index debeca6a55047..ee9c4f05320f9 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -1885,15 +1885,19 @@ class CanvasGraphics { return; } - ctx.save(); - ctx.beginPath(); - for (const path of paths) { - ctx.setTransform(...path.transform); - ctx.translate(path.x, path.y); - path.addToPath(ctx, path.fontSize); + const newPath = new Path2D(); + const invTransf = ctx.getTransform().invertSelf(); + for (const { transform, x, y, fontSize, path } of paths) { + newPath.addPath( + path, + new DOMMatrix(transform) + .preMultiplySelf(invTransf) + .translate(x, y) + .scale(fontSize, -fontSize) + ); } - ctx.restore(); - ctx.clip(); + + ctx.clip(newPath); ctx.beginPath(); delete this.pendingTextPaths; } @@ -2002,6 +2006,15 @@ class CanvasGraphics { this.moveText(0, this.current.leading); } + #getScaledPath(path, currentTransform, transform) { + const newPath = new Path2D(); + newPath.addPath( + path, + new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform) + ); + return newPath; + } + paintChar(character, x, y, patternFillTransform, patternStrokeTransform) { const ctx = this.ctx; const current = this.current; @@ -2016,38 +2029,48 @@ class CanvasGraphics { const patternFill = current.patternFill && !font.missingFile; const patternStroke = current.patternStroke && !font.missingFile; - let addToPath; + let path; if ( font.disableFontFace || isAddToPathSet || patternFill || patternStroke ) { - addToPath = font.getPathGenerator(this.commonObjs, character); + path = font.getPathGenerator(this.commonObjs, character); } if (font.disableFontFace || patternFill || patternStroke) { ctx.save(); ctx.translate(x, y); - ctx.beginPath(); - addToPath(ctx, fontSize); + ctx.scale(fontSize, -fontSize); if ( fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE ) { if (patternFillTransform) { + const currentTransform = ctx.getTransform(); ctx.setTransform(...patternFillTransform); + ctx.fill( + this.#getScaledPath(path, currentTransform, patternFillTransform) + ); + } else { + ctx.fill(path); } - ctx.fill(); } if ( fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE ) { if (patternStrokeTransform) { + const currentTransform = ctx.getTransform(); ctx.setTransform(...patternStrokeTransform); + ctx.stroke( + this.#getScaledPath(path, currentTransform, patternStrokeTransform) + ); + } else { + ctx.lineWidth /= fontSize; + ctx.stroke(path); } - ctx.stroke(); } ctx.restore(); } else { @@ -2072,7 +2095,7 @@ class CanvasGraphics { x, y, fontSize, - addToPath, + path, }); } } diff --git a/src/display/font_loader.js b/src/display/font_loader.js index f0012eb358e0b..79a33ca369cb4 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -15,7 +15,6 @@ import { assert, - FontRenderOps, isNodeJS, shadow, string32, @@ -427,89 +426,7 @@ class FontFaceObject { } catch (ex) { warn(`getPathGenerator - ignoring character: "${ex}".`); } - - if (!Array.isArray(cmds) || cmds.length === 0) { - return (this.compiledGlyphs[character] = function (c, size) { - // No-op function, to allow rendering to continue. - }); - } - - const commands = []; - for (let i = 0, ii = cmds.length; i < ii; ) { - switch (cmds[i++]) { - case FontRenderOps.BEZIER_CURVE_TO: - { - const [a, b, c, d, e, f] = cmds.slice(i, i + 6); - commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f)); - i += 6; - } - break; - case FontRenderOps.MOVE_TO: - { - const [a, b] = cmds.slice(i, i + 2); - commands.push(ctx => ctx.moveTo(a, b)); - i += 2; - } - break; - case FontRenderOps.LINE_TO: - { - const [a, b] = cmds.slice(i, i + 2); - commands.push(ctx => ctx.lineTo(a, b)); - i += 2; - } - break; - case FontRenderOps.QUADRATIC_CURVE_TO: - { - const [a, b, c, d] = cmds.slice(i, i + 4); - commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d)); - i += 4; - } - break; - case FontRenderOps.RESTORE: - commands.push(ctx => ctx.restore()); - break; - case FontRenderOps.SAVE: - commands.push(ctx => ctx.save()); - break; - case FontRenderOps.SCALE: - // The scale command must be at the third position, after save and - // transform (for the font matrix) commands (see also - // font_renderer.js). - // The goal is to just scale the canvas and then run the commands loop - // without the need to pass the size parameter to each command. - assert( - commands.length === 2, - "Scale command is only valid at the third position." - ); - break; - case FontRenderOps.TRANSFORM: - { - const [a, b, c, d, e, f] = cmds.slice(i, i + 6); - commands.push(ctx => ctx.transform(a, b, c, d, e, f)); - i += 6; - } - break; - case FontRenderOps.TRANSLATE: - { - const [a, b] = cmds.slice(i, i + 2); - commands.push(ctx => ctx.translate(a, b)); - i += 2; - } - break; - } - } - // From https://learn.microsoft.com/en-us/typography/opentype/spec/cff2#paths - // All contours must be closed with a lineto operation. - commands.push(ctx => ctx.closePath()); - - return (this.compiledGlyphs[character] = function glyphDrawer(ctx, size) { - commands[0](ctx); - commands[1](ctx); - ctx.scale(size, -size); - for (let i = 2, ii = commands.length; i < ii; i++) { - commands[i](ctx); - } - }); + return (this.compiledGlyphs[character] = new Path2D(cmds || "")); } } diff --git a/src/shared/util.js b/src/shared/util.js index 1d812bf010442..e0f66716ab9ca 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1087,18 +1087,6 @@ function getUuid() { const AnnotationPrefix = "pdfjs_internal_id_"; -const FontRenderOps = { - BEZIER_CURVE_TO: 0, - MOVE_TO: 1, - LINE_TO: 2, - QUADRATIC_CURVE_TO: 3, - RESTORE: 4, - SAVE: 5, - SCALE: 6, - TRANSFORM: 7, - TRANSLATE: 8, -}; - // TODO: Remove this once `Uint8Array.prototype.toHex` is generally available. function toHexUtil(arr) { if (Uint8Array.prototype.toHex) { @@ -1158,7 +1146,6 @@ export { DocumentActionEventType, FeatureTest, FONT_IDENTITY_MATRIX, - FontRenderOps, FormatError, fromBase64Util, getModificationDate, From 588beb121eadf905e3242bafd64c45166b4e194d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 9 Dec 2024 15:03:09 +0100 Subject: [PATCH 128/338] Remove the raw path-strings after creating the actual `Path2D` glyph-objects The `Path2D` glyph-objects are cached on the `FontFaceObject`-instance, so we can save a little bit of memory by removing the raw path-strings once they're no longer needed. --- src/display/api.js | 15 +++++++++++++++ src/display/font_loader.js | 17 ++++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index e3cb683f7c94c..5f435fdd7ff49 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2839,6 +2839,7 @@ class WorkerTransport { : null; const font = new FontFaceObject(exportedData, { disableFontFace, + fontExtraProperties, inspectFont, }); @@ -3242,6 +3243,20 @@ class PDFObjects { return !!obj && obj.data !== INITIAL_DATA; } + /** + * @param {string} objId + * @returns {boolean} + */ + delete(objId) { + const obj = this.#objs[objId]; + if (!obj || obj.data === INITIAL_DATA) { + // Only allow removing the object *after* it's been resolved. + return false; + } + delete this.#objs[objId]; + return true; + } + /** * Resolves the object `objId` with optional `data`. * diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 79a33ca369cb4..8c24e6ad722d3 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -359,13 +359,17 @@ class FontLoader { } class FontFaceObject { - constructor(translatedData, { disableFontFace = false, inspectFont = null }) { + constructor( + translatedData, + { disableFontFace = false, fontExtraProperties = false, inspectFont = null } + ) { this.compiledGlyphs = Object.create(null); // importing translated data for (const i in translatedData) { this[i] = translatedData[i]; } this.disableFontFace = disableFontFace === true; + this.fontExtraProperties = fontExtraProperties === true; this._inspectFont = inspectFont; } @@ -420,13 +424,20 @@ class FontFaceObject { return this.compiledGlyphs[character]; } + const objId = this.loadedName + "_path_" + character; let cmds; try { - cmds = objs.get(this.loadedName + "_path_" + character); + cmds = objs.get(objId); } catch (ex) { warn(`getPathGenerator - ignoring character: "${ex}".`); } - return (this.compiledGlyphs[character] = new Path2D(cmds || "")); + const path = new Path2D(cmds || ""); + + if (!this.fontExtraProperties) { + // Remove the raw path-string, since we don't need it anymore. + objs.delete(objId); + } + return (this.compiledGlyphs[character] = path); } } From 80a203760668e63faf67d7dfdb35ff106b191e5f Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 9 Dec 2024 18:02:18 +0100 Subject: [PATCH 129/338] Update OpenJPEG to 2.5.3 --- external/openjpeg/openjpeg.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/openjpeg/openjpeg.js b/external/openjpeg/openjpeg.js index 52196d07941d9..fc26a60149b17 100644 --- a/external/openjpeg/openjpeg.js +++ b/external/openjpeg/openjpeg.js @@ -6,7 +6,7 @@ var OpenJPEG = (() => { function(moduleArg = {}) { var moduleRtn; -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;Module.decode=function(bytes,{numComponents:numComponents=4,isIndexedColormap:isIndexedColormap=false,smaskInData:smaskInData=false}){const size=bytes.length;const ptr=Module._malloc(size);Module.HEAPU8.set(bytes,ptr);const ret=Module._jp2_decode(ptr,size,numComponents>0?numComponents:0,!!isIndexedColormap,!!smaskInData);Module._free(ptr);if(ret){const{errorMessages:errorMessages}=Module;if(errorMessages){delete Module.errorMessages;return errorMessages}return"Unknown error"}const{imageData:imageData}=Module;Module.imageData=null;return imageData};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))}).then(onload,onerror)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);function findWasmBinary(){var f="data:application/octet-stream;base64,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A0kNAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgACADQQRrIgRLBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECUiAARAIABBACABEBUaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECUL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLIAALJwEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBAEEAEGsgA0EQaiQAC+gFAQl/IAFFBEBBAA8LAn8gAEUE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ACAEIE5BCmpBAiAFEBpBAkcEQCAFQQFBAiAAKAK4ARtBlhJBABAPIAAoArgBRSFnDAELIE5BCmogTkEMakECEBEgTigCDCIBQZD/A0YNACABQdn/A0YEQCAAQYACNgIIIABBADYCzAEMAQsgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQBEAgAEHAADYCCCAFQQJBrD9BABAPDAELQQAhZyAFQQFB7D5BABAPCyBOQRBqJAAgZwsLACAABEAgABAQCwu0AQEBfyAAKAIMRQRAIAIgACgCJCABEQMADwsCQEEIEBQiA0UNACADIAI2AgQgAyABNgIAQQgQFCIBRQRAIAMQEA8LIAEgAzYCACAAIAAoAgRB5ABsIgI2AigDQCAAKAIYIAJKDQALIAEgACgCFDYCBCAAIAE2AhQgACAAKAIYQQFqNgIYIAAoAhwiAUUNACABKAIAQQA2AgggACABKAIENgIcIAAgACgCIEEBazYCICABEBALC/oCAQR/AkAgAEUNACAAKAKsKCIBBEAgACgCqCgiAgRAQQAhAQNAIAAoAqwoIAFBA3RqKAIAIgMEQCADEBAgACgCqCghAgsgAUEBaiIBIAJJDQALIAAoAqwoIQELIABBADYCqCggARAQIABBADYCrCgLIAAoArQoIgEEQCABEBAgAEEANgK0KAsgACgC0CsiAQRAIAEQECAAQQA2AtArCyAAKALsKyIBBEAgARAQIABBADYC7CsLIAAoAugrIgEEQCABEBAgAEEANgLoKwsgACgC/CsiAQRAIAEQECAAQQA2AoQsIABCADcC/CsLIAAoAvArIgEEQCAAKAL0KyIDBH9BACECA0AgASgCDCIEBEAgBBAQIAFBADYCDCAAKAL0KyEDCyABQRRqIQEgAkEBaiICIANJDQALIAAoAvArBSABCxAQIABBADYC8CsLIAAoAuQrIgEEQCABEBAgAEEANgLkKwsgACgC3CsiAUUNACABEBAgAEIANwLcKwsLyAcCEX8BfiAAKAIQIghBIE8EQCAAKQMIpw8LAkAgACgCFCIDQQROBEAgACgCACICQQNrKAIAIQEgACADQQRrIgM2AhQgACACQQRrNgIADAELIANBAEwEQAwBCyADQQFxIQ0gACgCACECAkAgA0EBRgRAQRghBAwBCyADQf7///8HcSEJQRghBANAIAAgAkEB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IABBADYCiAEgACgCZBAQIABBADYCZCAALQC8AUECcUUEQCAAKAKoARAQCyAAQdAAakEAQfAAEBUaIAAoAsABEDIgAEEANgLAASAAKALEARAyIABBADYCwAEgACgCyAEiAQRAIAEoAhwiAgRAIAIQECABQQA2AhwLIAEoAigiAgRAIAEoAiQEQANAIAIgBUEobCIDaigCJCIEBEAgBBAQIAEoAigiAiADakEANgIkCyACIANqKAIQIgQEQCAEEBAgASgCKCICIANqQQA2AhALIAIgA2ooAhgiBARAIAQQECABKAIoIgIgA2pBADYCGAsgBUEBaiIFIAEoAiRJDQALCyACEBAgAUEANgIoCyABEBALIABBADYCyAEgACgCSBAhIABBADYCSCAAKAJMECEgAEEANgJMIAAoAtQBIgMEQAJAIAMoAghFDQAgAygCDARAIANBADYCKANAIAMoAhhBAEoNAAsLIANBATYCECADKAIAEBAgAygCHCICRQ0AA0AgAigCBCEBIAIQECADIAE2AhwgASICDQALCyADKAIkIgIEQCACKAIEIgVBAEoEQEEAIQEDQCACKAIAIAFBDGxqIgQoAggiBgRAIAQoAgQgBhECACACKAIEIQULIAFBAWoiASAFSA0ACwsgAigCABAQIAIQEAsgAxAQCyAAQQA2AtQBIAAQEAsL5gMCCH8EfiAAKAIUKAIAKAIUIAFBzABsaiIJKAIMIgggACgCGCgCGCABQTRsaiIKNQIEIhBCAX0iEiAANQI8fCAQgKciCyAIIAtJGyEMIAkoAggiCCAKNQIAIhFCAX0iEyAANQI4fCARgKciCiAIIApJGyEKIAkoAgQiCCASIAA1AjR8IBCApyILIAggC0sbIQsgCSgCACIIIBMgADUCMHwgEYCnIg0gCCANSxshDUEAIQggACgCICgC0CsgAUG4CGxqKAIUIQ4CQCAJKAIUQQAgAmtBfyACG2oiAkUEQCAKIQAgDSEIIAshAQwBCyADQQFxIAJBAWsiD3QiCSANSQRAIA0gCWutQn8gAq0iEIZCf4V8IBCIpyEIC0EAIQBBACEBIANBAXYgD3QiAyALSQRAIAsgA2utQn8gAq0iEIZCf4V8IBCIpyEBCyAJIApJBEAgCiAJa61CfyACrSIQhkJ/hXwgEIinIQALIAMgDE8EQEEAIQwMAQsgDCAD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IABBADYCPCAAQucHNwI0IABBADYCLCAAQucHNwIkIABBADYCHCAAQucHNwIUIABBADYCDCAAQucHNwIEIABBQGshACACQQRqIgIgA0cNAAsLIAFBA3EiAUUNAEEAIQIDQCAAQQA2AgwgAELnBzcCBCAAQRBqIQAgAkEBaiICIAFHDQALCwv7BQEQfyMAQYACayIIJAACf0EBQRQQEyIGRQRAIAJBAUH0MEEAEA9BAAwBCyAGIAE2AgQgBiAANgIAIAggATYCACAIIAA2AoABA0AgCCAFIg1BAWoiBUECdCIHaiABQQFqQQJtIgM2AgAgCEGAAWogB2ogAEEBakECbSIHNgIAIAQgACABbCIJaiEEIAMhASAHIQAgCUEBSw0ACyAGIAQ2AgggBEUEQCAGEBBBAAwBCyAGIARBEBATIgM2AgwgA0UEQCACQQFB2hpBABAPIAYQEEEADAELIAYgBigCCCILQQR0NgIQIAMhACANBEAgAyAGKAIEIAYoAgBsQQR0aiIEIQEDQAJAIAggDkECdCICaigCACIJQQBMDQAgCUEBayEMQQAhBwJAIAhBgAFqIAJqKAIAIgJBAEwEQEEAIQUgCUEBRwRAIAlB/v///wdxIQoDQCAFIAxGIQ8gBUECaiEFIAEgBCAPGyIEIQEgB0ECaiIHIApHDQALCyAJQQFxDQEgBCEBDAILA0AgBCEFIAIhBANAAkAgACABNgIAIARBAUYEQCAAQRBqIQAgAUEQaiEBDAELIAAgATYCECABQRBqIQEgAEEgaiEAIARBAkohECAEQQJrIQQgEA0BCwsgASAFIAJBBHRqIAcgByAMRnJBAXEiChshBCABIAUgChshASAHQQFqIgcgCUcNAAsMAQsgASAEIAJBBHRqIAUgBSAMRnJBAXEiBRshESABIAQgBRshASARIQQLIA5BAWoiDiANRw0ACwsgAEEANgIAAkAgC0UNACALQQRPBEAgC0F8cSEAQQAhAQNAIANBADYCPCADQucHNwI0IANBADYCLCADQucHNwIkIANBADYCHCADQucHNwIUIANBADYCDCADQucHNwIEIANBQGshAyABQQRqIgEgAEcNAAsLIAtBA3EiAEUNAEEAIQEDQCADQQA2AgwgA0LnBzcCBCADQRBqIQMgAUEBaiIBIABHDQALCyAGCyESIAhBgAJqJAAgEgtTAQF/An8gAC0ADEH/AUYEQCAAQoD+g4DwADcCDEEAIAAoAggiASAAKAIETw0BGiAAIAFBAWo2AgggACABLQAAQYD+A3I2AgwLIABBADYCEEEBCwt+AgF/AX4gAL0iA0I0iKdB/w9xIgJB/w9HBHwgAkUEQCABIABEAAAAAAAAAABhBH9BAAUgAEQAAAAAAADwQ6IgARBlIQAgASgCAEFAags2AgAgAA8LIAEgAkH+B2s2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLSQEBfwJAQQFBLBATIgEEQCABQQA2AhACQCAAQQBMBEAgAUEBQQgQEyIANgIkIABFDQEMAwsgAUEANgIMCyABEBALQQAhAQsgAQuRAgAgAEUEQEEADwsCfwJAIAFB/wBNDQACQEGU0AEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB/w9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTHAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsE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AyAAQRh2NgIUIAMgBDYCECADIABBCHZB/wFxNgIcIAMgAEEQdkH/AXE2AhggAkEBQc31ACADQRBqEA8MBwsgBSAITQRAIAYhBAwECyAFIQggBiAFEBciBA0DIAYQECACQQFB/w9BABAPQQAMBwsgBEECcUUEQCACQQFBwg9BABAPIAYQEEEADAcLIAAgBEH/////B3I2AmQgASAHIAVrrSINIAIgASgCKBEIACANUQ0DIAAtAGRBCHFFDQEgAkECQZIcQQAQDwsgBhAQQQEMBQsgAkEBQZIcQQAQDyAGEBBBAAwECyABIAQgBSACEBogBUcEQCACQQFBxBxBABAPIAQQEEEADAQLIAAgBCIGIAUgAiAKKAIEEQEADQALIAQQEEEADAILIAJBAUGiJUEAEA9BAAwBCyAGEBBBAAshDCADQfAAaiQAIAwL5gEBBn8gACgCCEE1IAIQJARAAkAgACgCCCIGKAIAIQMgBigCCCEFAkACQAJ/AkAgAwRAQQEhBCADQQFxIQcgA0EBRw0BQQAMAgsgBkEANgIADAILIANBfnEhAwNAAn9BACAERQ0AGkEAIAAgASACIAUoAgARAABFDQAaIAAgASACIAUoAgQRAABBAEcLIQQgBUEIaiEFIAhBAmoiCCADRw0ACyAERQshAyAHBEAgAw0CIAAgASACIAUoAgARAABBAEchBAsgBkEANgIAIARFDQILIAAoAgAaQQEPCyAGQQA2AgALC0EACwoAIAAoAgAaQQALFAAgACgCACIABEAgACABNgK4AQsLIQAgACgCACABEFMgAEEAOgB8IAAgASgCuEBBAXE2AoABCzIAIAJFBEBBAA8LIAAoAgAgASACIAMQSEUEQCADQQFBqS9BABAPQQAPCyAAIAIgAxBxC2kCAn8BfCMAQRBrIgMkACACBEADQCAAIANBCGoQRCABAn8gAysDCCIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAs2AgAgAUEEaiEBIABBCGohACAEQQFqIgQgAkcNAAsLIANBEGokAAuEAQICfwF9IwBBEGsiAyQAIAIEQANAIAMgAC0AADoADyADIAAtAAE6AA4gAyAALQACOgANIAMgAC0AAzoADCABAn8gAyoCDCIFi0MAAABPXQRAIAWoDAELQYCAgIB4CzYCACABQQRqIQEgAEEEaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC0sBAn8jAEEQayIDJAAgAgRAA0AgACADQQxqQQQQESABIAMoAgw2AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtLAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMNgIAIAFBBGohASAAQQJqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALSgECfyMAQRBrIgMkACACBEADQCAAIANBCGoQRCABIAMrAwi2OAIAIAFBBGohASAAQQhqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALaAECfyMAQRBrIgMkACACBEADQCADIAAtAAA6AA8gAyAALQABOgAOIAMgAC0AAjoADSADIAAtAAM6AAwgASADKgIMOAIAIAFBBGohASAAQQRqIQAgBEEBaiIEIAJHDQALCyADQRBqJAALTAECfyMAQRBrIgMkACACBEADQCAAIANBDGpBBBARIAEgAygCDLM4AgAgAUEEaiEBIABBBGohACAEQQFqIgQgAkcNAAsLIANBEGokAAtMAQJ/IwBBEGsiAyQAIAIEQANAIAAgA0EMakECEBEgASADKAIMszgCACABQQRqIQEgAEECaiEAIARBAWoiBCACRw0ACwsgA0EQaiQAC6oIAg1/AXsjAEEQayIIJAACfyAAKAIIQRBGBEAgACgCnAEgACgCzAFBjCxsagwBCyAAKAIMCyEJAkAgAkUEQCADQQFB8B9BABAPDAELIAAoAkghBkEBIQQgASAIQQhqQQEQESAIKAIIIgVBAk8EQCADQQJBxsgAQQAQDwwBCyACIAVBAWpHBEBBACEEIANBAkHwH0EAEA8MAQsCQCAGKAIQIgNFDQAgCSgC0CshBCADQQhPBEAgA0F4cSEGQQAhAgNAIARBADYCvEMgBEEANgKEOyAEQQA2AswyIARBADYClCogBEEANgLcISAEQQA2AqQZIARBADYC7BAgBEEANgK0CCAEQcDDAGohBCACQQhqIgIgBkcNAAsLIANBB3EiA0UNAEEAIQIDQCAEQQA2ArQIIARBuAhqIQQgAkEBaiICIANHDQALCyAJKALoKyICBH8gAhAQIAlBADYC6CsgCCgCCAUgBQtFBEBBASEEDAELA0AgAUEBaiIBIAhBDGpBARARAkAgCSgCgCxF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KT0ALgAobnVsbCkAKCVkLCVkKSAAJXN9CgAJCSB9CgBbREVWXSBEdW1wIGFuIGltYWdlX2NvbXBfaGVhZGVyIHN0cnVjdCB7CgBbREVWXSBEdW1wIGFuIGltYWdlX2hlYWRlciBzdHJ1Y3QgewoASW1hZ2UgaW5mbyB7CgAJIGRlZmF1bHQgdGlsZSB7CgAlcwkgY29tcG9uZW50ICVkIHsKAAkJIGNvbXAgJWQgewoACSBUaWxlIGluZGV4OiB7CgAJIE1hcmtlciBsaXN0OiB7CgBDb2Rlc3RyZWFtIGluZGV4IGZyb20gbWFpbiBoZWFkZXI6IHsKAENvZGVzdHJlYW0gaW5mbyBmcm9tIG1haW4gaGVhZGVyOiB7CgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveAoARm91bmQgYSBtaXNwbGFjZWQgJyVjJWMlYyVjJyBib3ggb3V0c2lkZSBqcDJoIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogZmlyc3QgYm94IG11c3QgYmUgSlBFRyAyMDAwIHNpZ25hdHVyZSBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IHNlY29uZCBib3ggbXVzdCBiZSBmaWxlIHR5cGUgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUganBlZzIwMDAgYm94CgBOb3QgZW5vdWdoIG1lbW9yeSB3aXRoIEZUWVAgQm94CgBBIG1hcmtlciBJRCB3YXMgZXhwZWN0ZWQgKDB4ZmYtLSkgaW5zdGVhZCBvZiAlLjh4CgAJCSBtY3Q9JXgKAAkJCSBjYmxrc3R5PSUjeAoACQkJIGNzdHk9JSN4CgAJCSBwcmc9JSN4CgBJbnRlZ2VyIG92ZXJmbG93CgAJIHRkeD0ldSwgdGR5PSV1CgAJIHR3PSV1LCB0aD0ldQoACSB0eDA9JXUsIHR5MD0ldQoASW52YWxpZCBjb21wb25lbnQgaW5kZXg6ICV1CgBTdHJlYW0gdG9vIHNob3J0CgBNYXJrZXIgaGFuZGxlciBmdW5jdGlvbiBmYWlsZWQgdG8gcmVhZCB0aGUgbWFya2VyIHNlZ21lbnQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjdXJyZW50IHByZWNpbmN0IGNvZGVibG9jayBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1FjZCBvciBTUWNjIGVsZW1lbnQKAEEgQlBDQyBoZWFkZXIgYm94IGlzIGF2YWlsYWJsZSBhbHRob3VnaCBCUEMgZ2l2ZW4gYnkgdGhlIElIRFIgYm94ICglZCkgaW5kaWNhdGUgY29tcG9uZW50cyBiaXQgZGVwdGggaXMgY29uc3RhbnQKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaWxsZWdhbCB0aWxlIG9mZnNldAoASW52YWxpZCBwcmVjaW5jdAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGJhbmQgcHJlY2ludHMKAEZhaWxlZCB0byBkZWNvZGUgYWxsIHVzZWQgY29tcG9uZW50cwoAU2l6ZSBvZiBjb2RlIGJsb2NrIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBTaXplIG9mIHRpbGUgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBNQ1QgbWFya2VycwoAQ29ycnVwdGVkIFBQTSBtYXJrZXJzCgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgdGlsZSByZXNvbHV0aW9ucwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGNvbGxlY3Rpb25zCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzIDAgcGFsZXR0ZSBjb2x1bW5zCgBXZSBkbyBub3Qgc3VwcG9ydCBST0kgaW4gZGVjb2RpbmcgSFQgY29kZWJsb2NrcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgdW5kZWZpbmVkIHNpemVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aG91dCBzYW1lIG51bWJlciBvZiBpbmRpeGVzCgBJbnZhbGlkIHRpbGVjLT53aW5feHh4IHZhbHVlcwoAQ2Fubm90IGhhbmRsZSBib3ggb2YgbGVzcyB0aGFuIDggYnl0ZXMKAENhbm5vdCBoYW5kbGUgWEwgYm94IG9mIGxlc3MgdGhhbiAxNiBieXRlcwoAQ29tcG9uZW50IGluZGV4ICV1IHVzZWQgc2V2ZXJhbCB0aW1lcwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAlZCBlbnRyaWVzCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUgbm9kZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtY3QgZGF0YSB3aXRoaW4gbXVsdGlwbGUgTUNUIHJlY29yZHMKAENhbm5vdCBkZWNvZGUgdGlsZSwgbWVtb3J5IGVycm9yCgBvcGpfajJrX2FwcGx5X25iX3RpbGVfcGFydHNfY29ycmVjdGlvbiBlcnJvcgoAUHJvYmxlbSB3aXRoIHNraXBwaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBQcm9ibGVtIHdpdGggcmVhZGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAVW5rbm93biBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCB0bCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBtaCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHRha2UgaW4gY2hhcmdlIFNJWiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUFQgbWFya2VyCgBFcnJvciByZWFkaW5nIFNPVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIFNPUCBtYXJrZXIKAEV4cGVjdGVkIFNPUCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNPIG1hcmtlcgoARXJyb3IgcmVhZGluZyBSR04gbWFya2VyCgBFcnJvciByZWFkaW5nIFBQTSBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBNIG1hcmtlcgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFBMTSBtYXJrZXIKAE5vdCBlbm91Z2ggc3BhY2UgZm9yIGV4cGVjdGVkIEVQSCBtYXJrZXIKAEV4cGVjdGVkIEVQSCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ1JHIG1hcmtlcgoAVW5rbm93biBwcm9ncmVzc2lvbiBvcmRlciBpbiBDT0QgbWFya2VyCgBVbmtub3duIFNjb2QgdmFsdWUgaW4gQ09EIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIFFDRCBtYXJrZXIKAENycm9yIHJlYWRpbmcgQ0JEIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQT0MgbWFya2VyCgBFcnJvciByZWFkaW5nIENPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNDIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ0MgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIE1DQyBtYXJrZXIKAHJlcXVpcmVkIFNJWiBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBDT0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoAcmVxdWlyZWQgUUNEIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBmaWxlIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBoZWFkZXIKAEVycm9yIHdpdGggSlAgU2lnbmF0dXJlIDogYmFkIG1hZ2ljIG51bWJlcgoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgcHJldmlvdXMgbnVtYmVyIG9mIHRpbGUtcGFydCAoJWQpLCBnaXZpbmcgdXAKAEluIFNPVCBtYXJrZXIsIFRQU290ICglZCkgaXMgbm90IHZhbGlkIHJlZ2FyZHMgdG8gdGhlIGN1cnJlbnQgbnVtYmVyIG9mIHRpbGUtcGFydCAoaGVhZGVyKSAoJWQpLCBnaXZpbmcgdXAKAHRpbGVzIHJlcXVpcmUgYXQgbGVhc3Qgb25lIHJlc29sdXRpb24KAE1hcmtlciBpcyBub3QgY29tcGxpYW50IHdpdGggaXRzIHBvc2l0aW9uCgBQcm9ibGVtIHdpdGggc2VlayBmdW5jdGlvbgoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LCBJbnZhbGlkIGNibGt3L2NibGtoIGNvbWJpbmF0aW9uCgBJbnZhbGlkIG11bHRpcGxlIGNvbXBvbmVudCB0cmFuc2Zvcm1hdGlvbgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIG90aGVyIHRoYW4gYXJyYXkgZGVjb3JyZWxhdGlvbgoAVG9vIGxhcmdlIHZhbHVlIGZvciBOcHBtCgBOb3QgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgTnBwbQoAYmFkIHBsYWNlZCBqcGVnIGNvZGVzdHJlYW0KAAkgTWFpbiBoZWFkZXIgc3RhcnQgcG9zaXRpb249JWxsaQoJIE1haW4gaGVhZGVyIGVuZCBwb3NpdGlvbj0lbGxpCgBNYXJrZXIgc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBUaWxlIHBhcnQgbGVuZ3RoIHNpemUgaW5jb25zaXN0ZW50IHdpdGggc3RyZWFtIGxlbmd0aAoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIGRhdGEgc3Bhbm5pbmcKAFdyb25nIGZsYWcKAEVycm9yIHdpdGggRlRZUCBzaWduYXR1cmUgQm94IHNpemUKAEVycm9yIHdpdGggSlAgc2lnbmF0dXJlIEJveCBzaXplCgBJbnZhbGlkIHByZWNpbmN0IHNpemUKAEluY29uc2lzdGVudCBtYXJrZXIgc2l6ZQoASW52YWxpZCBtYXJrZXIgc2l6ZQoARXJyb3Igd2l0aCBTSVogbWFya2VyIHNpemUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGFkZCBhIG5ldyB2YWxpZGF0aW9uIHByb2NlZHVyZQoATm90IGVub3VnaCBtZW1vcnkgdG8gZGVjb2RlIHRpbGUKAEZhaWxlZCB0byBkZWNvZGUgdGhlIGNvZGVzdHJlYW0gaW4gdGhlIEpQMiBmaWxlCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgd2l0aCBpbmRpeCBzaHVmZmxlCgBDYW5ub3QgYWxsb2NhdGUgVGllciAxIGhhbmRsZQoATm8gZGVjb2RlZCBhcmVhIHBhcmFtZXRlcnMsIHNldCB0aGUgZGVjb2RlZCBhcmVhIHRvIHRoZSB3aG9sZSBpbWFnZQoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWluaXRpYWxpemUgdGhlIHRhZyB0cmVlCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgdHJhbnNmb3JtYXRpb24gZm91bmQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudC4gVW5zdXBwb3J0ZWQgTWl4ZWQgSFQgY29kZS1ibG9jayBzdHlsZSBmb3VuZAoAVGlsZSBZIGNvb3JkaW5hdGVzIGFyZSBub3Qgc3VwcG9ydGVkCgBUaWxlIFggY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAEltYWdlIGNvb3JkaW5hdGVzIGFib3ZlIElOVF9NQVggYXJlIG5vdCBzdXBwb3J0ZWQKAEpQRUcyMDAwIEhlYWRlciBib3ggbm90IHJlYWQgeWV0LCAnJWMlYyVjJWMnIGJveCB3aWxsIGJlIGlnbm9yZWQKAG9wal9qMmtfbWVyZ2VfcHB0KCkgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgU09UIG1hcmtlci4gVGlsZSBpbmRleCBhbGxvY2F0aW9uIGZhaWxlZAoASWdub3JpbmcgaWhkciBib3guIEZpcnN0IGloZHIgYm94IGFscmVhZHkgcmVhZAoAWnBwdCAldSBhbHJlYWR5IHJlYWQKAFpwcG0gJXUgYWxyZWFkeSByZWFkCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCBzeW50aGV0aXplZCAweEZGIG1hcmtlcnMgcmVhZAoACQkJIGNibGt3PTJeJWQKAAkJCSBjYmxraD0yXiVkCgAJCQkgcW50c3R5PSVkCgAlcyBkeD0lZCwgZHk9JWQKAAkJCSByb2lzaGlmdD0lZAoACQkJIG51bWdiaXRzPSVkCgAJCSBudW1sYXllcnM9JWQKACVzIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGFjbj0lZCwgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogY249JWQsIG51bWNvbXBzPSVkCgAJCQkgbnVtcmVzb2x1dGlvbnM9JWQKAAkJIHR5cGU9JSN4LCBwb3M9JWxsaSwgbGVuPSVkCgAlcyBzZ25kPSVkCgAJCQkgcW1mYmlkPSVkCgAlcyBwcmVjPSVkCgAJCSBuYiBvZiB0aWxlLXBhcnQgaW4gdGlsZSBbJWRdPSVkCgAlcyB4MT0lZCwgeTE9JWQKACVzIHgwPSVkLCB5MD0lZAoARmFpbGVkIHRvIGRlY29kZSB0aWxlICVkLyVkCgBTZXR0aW5nIGRlY29kaW5nIGFyZWEgdG8gJWQsJWQsJWQsJWQKAEZhaWxlZCB0byBkZWNvZGUgY29tcG9uZW50ICVkCgBJbnZhbGlkIHZhbHVlIGZvciBudW1yZXNvbHV0aW9ucyA6ICVkLCBtYXggdmFsdWUgaXMgc2V0IGluIG9wZW5qcGVnLmggYXQgJWQKAEludmFsaWQgY29tcG9uZW50IG51bWJlcjogJWQsIHJlZ2FyZGluZyB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgJWQKAFRvbyBtYW55IFBPQ3MgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU3RyZWFtIGRvZXMgbm90IGVuZCB3aXRoIEVPQwoAQ2Fubm90IGhhbmRsZSBib3ggc2l6ZXMgaGlnaGVyIHRoYW4gMl4zMgoAb3BqX3BpX25leHRfbHJjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcmxjcCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfY3BybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcGNybCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3BpX25leHRfcnBjbCgpOiBpbnZhbGlkIGNvbXBubzAvY29tcG5vMQoAb3BqX3QxX2RlY29kZV9jYmxrKCk6IHVuc3VwcG9ydGVkIGJwbm9fcGx1c19vbmUgPSAlZCA+PSAzMQoARmFpbGVkIHRvIGRlY29kZSB0aWxlIDEvMQoASW5zdWZmaWNpZW50IGRhdGEgZm9yIENNQVAgYm94LgoATmVlZCB0byByZWFkIGEgUENMUiBib3ggYmVmb3JlIHRoZSBDTUFQIGJveC4KAEluc3VmZmljaWVudCBkYXRhIGZvciBDREVGIGJveC4KAE51bWJlciBvZiBjaGFubmVsIGRlc2NyaXB0aW9uIGlzIGVxdWFsIHRvIHplcm8gaW4gQ0RFRiBib3guCgBTdHJlYW0gZXJyb3Igd2hpbGUgcmVhZGluZyBKUDIgSGVhZGVyIGJveDogbm8gJ2loZHInIGJveC4KAE5vbiBjb25mb3JtYW50IGNvZGVzdHJlYW0gVFBzb3Q9PVROc290LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IGJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAQm94IGxlbmd0aCBpcyBpbmNvbnNpc3RlbnQuCgBSZXNvbHV0aW9uIGZhY3RvciBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gcmVzb2x1dGlvbiBpbiB0aGUgY29tcG9uZW50LgoAQ29tcG9uZW50IG1hcHBpbmcgc2VlbXMgd3JvbmcuIFRyeWluZyB0byBjb3JyZWN0LgoASW5jb21wbGV0ZSBjaGFubmVsIGRlZmluaXRpb25zLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW52YWxpZCBjb2RlYmxvY2sgbGVuZ3RoIHZhbHVlcy4KAFdlIGRvIG5vdCBzdXBwb3J0IG1vcmUgdGhhbiAzIGNvZGluZyBwYXNzZXMgaW4gYW4gSFQgY29kZWJsb2NrOyBUaGlzIGNvZGVibG9ja3MgaGFzICVkIHBhc3Nlcy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFRoZXJlIGFyZSAlZCB6ZXJvIGJpdHBsYW5lcyBpbiAlZCBiaXRwbGFuZXMuCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgdHJhbnNmb3JtYXRpb24gc3RhZ2VzLgoAVW5rbm93biBtYXJrZXIgaGFzIGJlZW4gZGV0ZWN0ZWQgYW5kIGdlbmVyYXRlZCBlcnJvci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfc2V0dXBfZGVjb2RlciBmdW5jdGlvbiBpcyBub3QgYSBkZWNvbXByZXNzb3IgaGFuZGxlci4KAENvZGVjIHByb3ZpZGVkIHRvIHRoZSBvcGpfcmVhZF9oZWFkZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBUaWxlcyBkb24ndCBhbGwgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb24uIFNraXAgdGhlIE1DVCBzdGVwLgoATnVtYmVyIG9mIGNvbXBvbmVudHMgKCVkKSBpcyBpbmNvbnNpc3RlbnQgd2l0aCBhIE1DVC4gU2tpcCB0aGUgTUNUIHN0ZXAuCgBKUDIgYm94IHdoaWNoIGFyZSBhZnRlciB0aGUgY29kZXN0cmVhbSB3aWxsIG5vdCBiZSByZWFkIGJ5IHRoaXMgZnVuY3Rpb24uCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBXaGVuIHRoZSBudW1iZXIgb2YgemVybyBwbGFuZXMgYml0cGxhbmVzIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YgYml0cGxhbmVzLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3MgbWFrZXMgc2Vuc2UsIGJ1dCB3ZSBoYXZlICVkIHBhc3NlcyBpbiB0aGlzIGNvZGVibG9jay4gVGhlcmVmb3JlLCBvbmx5IHRoZSBjbGVhbnVwIHBhc3Mgd2lsbCBiZSBkZWNvZGVkLiBUaGlzIG1lc3NhZ2Ugd2lsbCBub3QgYmUgZGlzcGxheWVkIGFnYWluLgoASW1hZ2UgaGFzIGxlc3MgY29tcG9uZW50cyB0aGFuIGNvZGVzdHJlYW0uCgBOZWVkIHRvIGRlY29kZSB0aGUgbWFpbiBoZWFkZXIgYmVmb3JlIGJlZ2luIHRvIGRlY29kZSB0aGUgcmVtYWluaW5nIGNvZGVzdHJlYW0uCgBQc290IHZhbHVlIG9mIHRoZSBjdXJyZW50IHRpbGUtcGFydCBpcyBlcXVhbCB0byB6ZXJvLCB3ZSBhc3N1bWluZyBpdCBpcyB0aGUgbGFzdCB0aWxlLXBhcnQgb2YgdGhlIGNvZGVzdHJlYW0uCgBBIG1hbGZvcm1lZCBjb2RlYmxvY2sgdGhhdCBoYXMgbW9yZSB0aGFuIG9uZSBjb2RpbmcgcGFzcywgYnV0IHplcm8gbGVuZ3RoIGZvciAybmQgYW5kIHBvdGVudGlhbGx5IHRoZSAzcmQgcGFzcyBpbiBhbiBIVCBjb2RlYmxvY2suCgAJCQkgdGlsZS1wYXJ0WyVkXTogc3Rhcl9wb3M9JWxsaSwgZW5kX2hlYWRlcj0lbGxpLCBlbmRfcG9zPSVsbGkuCgBUaWxlICV1IGhhcyBUUHNvdCA9PSAwIGFuZCBUTnNvdCA9PSAwLCBidXQgbm8gb3RoZXIgdGlsZS1wYXJ0cyB3ZXJlIGZvdW5kLiBFT0MgaXMgYWxzbyBtaXNzaW5nLgoAQ29tcG9uZW50ICVkIGRvZXNuJ3QgaGF2ZSBhIG1hcHBpbmcuCgBBIGNvbmZvcm1pbmcgSlAyIHJlYWRlciBzaGFsbCBpZ25vcmUgYWxsIENvbG91ciBTcGVjaWZpY2F0aW9uIGJveGVzIGFmdGVyIHRoZSBmaXJzdCwgc28gd2UgaWdub3JlIHRoaXMgb25lLgoAVGhlIHNpZ25hdHVyZSBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlICBib3ggbXVzdCBiZSB0aGUgZmlyc3QgYm94IGluIHRoZSBmaWxlLgoAVGhlIGZ0eXAgYm94IG11c3QgYmUgdGhlIHNlY29uZCBib3ggaW4gdGhlIGZpbGUuCgBGYWlsZWQgdG8gZGVjb2RlLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gSW5jb3JyZWN0IE1FTCBzZWdtZW50IHNlcXVlbmNlLgoAQ29tcG9uZW50ICVkIGlzIG1hcHBlZCB0d2ljZS4KAE9ubHkgb25lIENNQVAgYm94IGlzIGFsbG93ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQg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AAABVAAAAQAAAABQAADAUAAAAUgAAAAAAAAQUAAAsFAAAAFIAAABAAAAIFAAAMBQAAABOAAAAAAAADBQAACwUAAAATgAAAEAAABAUAAAwFAAAAEwAAAAAAAAUFAAABBRAAABMAAAAQAAAGBQAAAgUQAAASQAAAAAAABwUAAAMFEAAAEkAAABAAAAgFAAAEBRAAABHAAAAAAAAJBQAABwUQAAARwAAAEAAACgUAAAgFEAAAEWAAAAAAAAkFIAAJBRAAABFgAAAQAAAKBSAACgUQAAAVYAAAAAAADQUAAAwFAAAAFWAAABAAAA4FAAALBQAAABVAAAAAAAAPBQAACwUAAAAVQAAAEAAAAAUQAAwFAAAAFRAAAAAAAAEFEAANBQAAABUQAAAQAAACBRAADgUAAAAUgAAAAAAAAwUQAA8FAAAAFIAAABAAAAQFEAAABRAAABOAAAAAAAAFBRAAAQUQAAATgAAAEAAABgUQAAIFEAAAE0AAAAAAAAcFEAADBRAAABNAAAAQAAAIBRAABAUQAAATAAAAAAAACQUQAAUFEAAAEwAAABAAAAoFEAAGBRAAABKAAAAAAAALBRAABQUQAAASgAAAEAAADAUQAAYFEAAAEkAAAAAAAA0FEAAHBRAAABJAAAAQAAAOBRAACAUQAAASIAAAAAAADwUQAAkFEAAAEiAAABAAAAAFIAAKBRAAABHAAAAAAAABBSAACwUQAAARwAAAEAAAAgUgAAwFEAAAEYAAAAAAAAMFIAANBRAAABGAAAAQAAAEBSAADgUQAAARYAAAAAAABQUgAA8FEAAAEWAAABAAAAYFIAAABSAAABFAAAAAAAAHBSAAAQUgAAARQAAAEAAACAUgAAIFIAAAESAAAAAAAAkFIAADBSAAABEgAAAQAAAKBSAABAUgAAAREAAAAAAACwUgAAUFIAAAERAAABAAAAwFIAAGBSAADBCgAAAAAAANBSAABwUgAAwQoAAAEAAADgUgAAgFIAAMEJAAAAAAAA8FIAAJBSAADBCQAAAQAAAABTAACgUgAAoQgAAAAAAAAQUwAAsFIAAKEIAAABAAAAIFMAAMBSAAAhBQAAAAAAADBTAADQUgAAIQUAAAEAAABAUwAA4FIAAEEEAAAAAAAAUFMAAPBSAABBBAAAAQAAAGBTAAAAUwAAoQIAAAAAAABwUwAAEFMAAKECAAABAAAAgFMAACBTAAAhAgAAAAAAAJBTAAAwUwAAIQIAAAEAAACgUwAAQFMAAEEBAAAAAAAAsFMAAFBTAABBAQAAAQAAAMBTAABgUwAAEQEAAAAAAADQUwAAcFMAABEBAAABAAAA4FMAAIBTAACFAAAAAAAAAPBTAACQUwAAhQAAAAEAAAAAVAAAoFMAAEkAAAAAAAAAEFQAALBTAABJAAAAAQAAACBUAADAUwAAJQAAAAAAAAAwVAAA0FMAACUAAAABAAAAQFQAAOBTAAAVAAAAAAAAAFBUAADwUwAAFQAAAAEAAABgVAAAAFQAAAkAAAAAAAAAcFQAABBUAAAJAAAAAQAAAIBUAAAgVAAABQAAAAAAAACQVAAAMFQAAAUAAAABAAAAoFQAAEBUAAABAAAAAAAAAJBUAABQVAAAAQAAAAEAAACgVAAAYFQAAAFWAAAAAAAAsFQAALBUAAABVgAAAQAAAMBUAADAVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHZuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQZm8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB2bwBCwcBAAEAAQABAEHpvAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD/AAAMAAAAGAAAAFL/AAAUAAAAGQAAAFP/AAAUAAAAGgAAAF7/AAAUAAAAGwAAAFz/AAAUAAAAHAAAAF3/AAAUAAAAHQAAAF//AAAUAAAAHgAAAFH/AAACAAAAHwAAAFX/AAAEAAAAIAAAAFf/AAAEAAAAIQAAAFj/AAAQAAAAIgAAAGD/AAAEAAAAIwAAAGH/AAAQAAAAJAAAAJH/AEGIvwELZWP/AAAEAAAAJQAAAGT/AAAUAAAAJgAAAHT/AAAUAAAAJwAAAHj/AAAEAAAAKAAAAFD/AAAEAAAAKQAAAFn/AAAEAAAAKgAAAHX/AAAUAAAAKwAAAHf/AAAUAAAALAAAAAAAAAAUAEGAwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHAwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAPhiAEGAwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHRwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBi8IBCwEMAEGXwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABBxcIBCwEQAEHRwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABB/8IBCwESAEGLwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBwsMBCw4aAAAAGhoaAAAAAAAACQBB88MBCwEUAEH/wwELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBrcQBCwEWAEG5xAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB4MQBCwmQbAEAAAAAAAUAQfTEAQsBaQBBjMUBCwpqAAAAawAAAHhoAEGkxQELAQIAQbTFAQsI//////////8AQfjFAQsBBQBBhMYBCwFsAEGcxgELDmoAAABtAAAAiGgAAAAEAEG0xgELAQEAQcTGAQsF/////wo=";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}function instantiateSync(file,info){var module;var binary=getBinarySync(file);module=new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return[instance,module]}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["p"];updateMemoryViews();addOnInit(wasmExports["q"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();var result=instantiateSync(wasmBinaryFile,info);return receiveInstance(result[0])}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=Module; +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;Module.decode=function(bytes,{numComponents=4,isIndexedColormap=false,smaskInData=false}){const size=bytes.length;const ptr=Module._malloc(size);Module.HEAPU8.set(bytes,ptr);const ret=Module._jp2_decode(ptr,size,numComponents>0?numComponents:0,!!isIndexedColormap,!!smaskInData);Module._free(ptr);if(ret){const{errorMessages}=Module;if(errorMessages){delete Module.errorMessages;return errorMessages}return"Unknown error"}const{imageData}=Module;Module.imageData=null;return imageData};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);function findWasmBinary(){var f="data:application/octet-stream;base64,AGFzbQEAAAAB2QEcYAN/f38Bf2AEf39/fwF/YAF/AGACf38AYAF/AX9gA39/fwBgAn9/AX9gBH9/f38AYAN/fn8BfmAFf39/f38Bf2AAAGACfn8Bf2ADf35/AX9gAn5/AX5gBX9/f39/AGAHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AGf39/f39/AX9gAAF/YAZ/f39/f38AYAZ/fH9/f38Bf2ACf3wBf2AIf39/f39/f38AYAh/f39/f39/fwF/YAd/f39/f39/AGACfH8BfGACf3wAAnMTAWEBYQACAWEBYgABAWEBYwAFAWEBZAACAWEBZQAOAWEBZgAHAWEBZwADAWEBaAAHAWEBaQAFAWEBagAJAWEBawACAWEBbAAKAWEBbQAKAWEBbgAWAWEBbwAEAWEBcAAGAWEBcQAGAWEBcgAEAWEBcwADA80BywEHAgUABgQABQYEAQUEDgUXBgICAgIABhAGEQQCCwwSAgUCBAcEAhMDFAMCAgYCGAMHBQAABAMBCgkJAwAJBgEEBAUFEw8BAQMAAwYCEAQUGQIHBgMHBwEBAgAECgYaBwQEDw4DBgQABAICAgAGBgABAQEBAQEBAQAAAAAABgMCAgIDAwMDAwoKAgIbAAMVCAQEAAgDAwkECAsNAAgAAQEBAQEBAQEBDAAEBAUJDwESEQEAAAYDAwEFBQUFBQUFBQENAQEBAQEBAQEBCwQFAXABcnIFBwEBggKAgAIGCAF/AUHQ4AULByAHAXQCAAF1AEoBdgCpAQF3ABQBeAEAAXkAqAEBegCdAQnRAQEAQQELcVrdAdMBgQGBATC5Aa4BqgGYAZcBlgGVAZQBkwGSAZEBW44BjQGMAYsBK4oBiQGIAYcBhgGFAYQBgwGCAdwB2wHaAdkB2AHXAUnWAdUBSUnUAdIB0QHQAc8BzgHNAcwBywHKAcQBuAG3AbYBtQG0AbMBsgGxAbABrwGtAawBqwFSU1VbUZABXEBZjwFYTk9XMSy8AbsBvQHFAckBxgHAAboBvgG/AccByAF9wQHCAcMBWqcBpgGeAaABnwGaAaMBpAGlAaIBoQGbAZwBCsmtDssBggIBA38jAEGQBGsiBCQAAkAgAEUNAAJAAkACQAJAIAFBAWsOBAABBAIECyAAQQxqIQEMAgsgAEEQaiEBIABBBGohAAwBCyAAQRRqIQEgAEEIaiEACyABKAIAIgVFDQAgAkUNACAAKAIAIQYgBEEAQYAEEBkiASADNgKMBCMAQaABayIAJAAgACABNgKUASAAQf8DNgKYASAAQQBBkAEQGSIAQX82AkwgAEHnADYCJCAAQX82AlAgACAAQZ8BajYCLCAAIABBlAFqNgJUIAFBADoAACAAIAIgA0HoAEHpABB1IABBoAFqJAAgAUEAOgD/AyABIAYgBREDAAsgBEGQBGokAAvQAgEFfyAABEAgAEEEayIDKAIAIgQhASADIQIgAEEIaygCACIAIABBfnEiAEcEQCACIABrIgIoAgQiASACKAIIIgU2AgggBSABNgIEIAAgBGohAQsgAyAEaiIAKAIAIgMgACADakEEaygCAEcEQCAAKAIEIgQgACgCCCIANgIIIAAgBDYCBCABIANqIQELIAIgATYCACACIAFBfHFqQQRrIAFBAXI2AgAgAgJ/IAIoAgBBCGsiAEH/AE0EQCAAQQN2QQFrDAELIABnIQMgAEEdIANrdkEEcyADQQJ0a0HuAGogAEH/H00NABpBPyAAQR4gA2t2QQJzIANBAXRrQccAaiIAIABBP08bCyIBQQR0IgBB4M0BajYCBCACIABB6M0BaiIAKAIANgIIIAAgAjYCACACKAIIIAI2AgRB6NUBQejVASkDAEIBIAGthoQ3AwALC8kCAQR/IAFBADYCAAJAIAJFDQAgASACaiEDAkAgAkEQSQRAIAAhAQwBCwJAIAEgACACak8NACAAIANPDQAgACEBDAELIANBEGshBiAAIAJBcHEiBWohASADIAVrIQMDQCAGIARrIAAgBGr9AAAA/QwAAAAAAAAAAAAAAAAAAAAA/Q0PDg0MCwoJCAcGBQQDAgEA/QsAACAEQRBqIgQgBUcNAAsgAiAFRg0BCwJAIAJBA3EiBkUEQCAFIQQMAQtBACEAIAUhBANAIANBAWsiAyABLQAAOgAAIARBAWohBCABQQFqIQEgAEEBaiIAIAZHDQALCyAFIAJrQXxLDQADQCADQQFrIAEtAAA6AAAgA0ECayABLQABOgAAIANBA2sgAS0AAjoAACADQQRrIgMgAS0AAzoAACABQQRqIQEgBEEEaiIEIAJHDQALCwuCBAEDfyACQYAETwRAIAAgASACEAIgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCyADQXxxIQQCQCADQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0EEayIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECkiAARAIABBACABEBkaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECkL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASAC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CyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0HUzQFBGTYCAEF/DwsgACABOgAAQQELfgIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR/QQAFIABEAAAAAAAA8EOiIAEQcCEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC28BBX8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF/IQQgAkHMmbPmAE0EQEF/IAEgAkEKbCIFaiABIAVB/////wdzSxshBAsgACADQQFqIgU2AgAgAywAASAEIQIgBSEDQTBrIgFBCkkNAAsgAgtJAQF/AkBBAUEsEBciAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAXIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQFAtBACEBCyABC64UAhJ/An4jAEFAaiIIJAAgCCABNgI8IAhBJ2ohFyAIQShqIRICQAJAAkACQANAQQAhBwNA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KAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEBYaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEBYaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC6YFAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIQIgASkDCCEHIwBBIGsiCCQAIAdC////////P4MhBAJ+IAdCMIhC//8BgyIDpyIKQYH4AGtB/Q9NBEAgBEIEhiACQjyIhCEDIApBgPgAa60hBAJAIAJC//////////8PgyICQoGAgICAgICACFoEQCADQgF8IQMMAQsgAkKAgICAgICAgAhSDQAgA0IBgyADfCEDC0IAIAMgA0L/////////B1YiABshAiAArSAEfAwBCwJAIAIgBIRQDQAgA0L//wFSDQAgBEIEhiACQjyIhEKAgICAgICABIQhAkL/DwwBCyAKQf6HAUsEQEIAIQJC/w8MAQtBgPgAQYH4ACADUCIBGyIAIAprIglB8ABKBEBCACECQgAMAQsgAiEDIAQgBEKAgICAgIDAAIQgARsiBSEGAkBBgAEgCWsiAUHAAHEEQCACIAFBQGqthiEGQgAhAwwBCyABRQ0AIAYgAa0iBIYgA0HAACABa62IhCEGIAMgBIYhAwsgCCADNwMQIAggBjcDGAJAIAlBwABxBEAgBSAJQUBqrYghAkIAIQUMAQsgCUUNACAFQcAAIAlrrYYgAiAJrSIDiIQhAiAFIAOIIQULIAggAjcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQICQCAAIApHIAgpAxAgCCkDGIRCAFJxrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAJCgICAgICAgAiFIAIgAkL/////////B1YiABshAiAArQshAyAIQSBqJAAgB0KAgICAgICAgIB/gyADQjSGhCAChL85AwAL9BcDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASEQQboIIRQgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEEG9CCEUDAELQcAI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ACgCRCICQQN0aiIFIAQoAhQ7AQAgBSAEKAIQNgIEQQEhBSAAIAJBAWo2AkQgASAJaiECIAZBAWoiBiAKRw0ACwwCC0EBIAYgBkEBTRshByAAKAJEIQFBACEGA0AgBCABNgIUIAEgACgChAEgACgCgAFsTw0BIAIgBEEQaiAJEBUgCCAAKAJEIgpBA3RqIgUgATsBACAFIAQoAhA2AgRBASEFIAAgCkEBaiIBNgJEIAIgCWohAiAGQQFqIgYgB0cNAAsMAQsgAEEBNgJMIAQgATYCACADQQJB0jwgBBATCyAEQSBqJAAgBQsEAEEACwvLwQEhAEGACAvgmQFjYW5ub3QgYWxsb2NhdGUgb3BqX3RjZF9zZWdfZGF0YV9jaHVua190KiBhcnJheQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AFVua25vd24gZm9ybWF0AEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQAvdG1wL29wZW5qcGVnL3NyYy9iaW4vY29tbW9uL2NvbG9yLmMAQUxMX0NQVVMAT1BKX05VTV9USFJFQURTAE5BTgBPSlBfRE9fTk9UX0RJU1BMQVlfVElMRV9JTkRFWF9JRl9UTE0ASU5GAHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggPiBVSU5UX01BWCAtIE9QSl9DT01NT05fQ0JMS19EQVRBX0VYVFJBAAkJCSBwcmVjY2ludHNpemUgKHcsaCk9AAkJCSBzdGVwc2l6ZXMgKG0sZSk9AFNPVCBtYXJrZXIgZm9yIHRpbGUgJXUgZGVjbGFyZXMgbW9yZSB0aWxlLXBhcnRzIHRoYW4gZm91bmQgaW4gVExNIG1hcmtlci4AKG51bGwpACglZCwlZCkgACVzfQoACQkgfQoAW0RFVl0gRHVtcCBhbiBpbWFnZV9jb21wX2hlYWRlciBzdHJ1Y3QgewoAW0RFVl0gRHVtcCBhbiBpbWFnZV9oZWFkZXIgc3RydWN0IHsKAEltYWdlIGluZm8gewoACSBkZWZhdWx0IHRpbGUgewoAJXMJIGNvbXBvbmVudCAlZCB7CgAJCSBjb21wICVkIHsKAAkgVGlsZSBpbmRleDogewoACSBNYXJrZXIgbGlzdDogewoAQ29kZXN0cmVhbSBpbmRleCBmcm9tIG1haW4gaGVhZGVyOiB7CgBDb2Rlc3RyZWFtIGluZm8gZnJvbSBtYWluIGhlYWRlcjogewoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3gKAEZvdW5kIGEgbWlzcGxhY2VkICclYyVjJWMlYycgYm94IG91dHNpZGUganAyaCBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IGZpcnN0IGJveCBtdXN0IGJlIEpQRUcgMjAwMCBzaWduYXR1cmUgYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBzZWNvbmQgYm94IG11c3QgYmUgZmlsZSB0eXBlIGJveAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGJveAoATm90IGVub3VnaCBtZW1vcnkgd2l0aCBGVFlQIEJveAoAQSBtYXJrZXIgSUQgd2FzIGV4cGVjdGVkICgweGZmLS0pIGluc3RlYWQgb2YgJS44eAoACQkgbWN0PSV4CgAJCQkgY2Jsa3N0eT0lI3gKAAkJCSBjc3R5PSUjeAoACQkgcHJnPSUjeAoASW50ZWdlciBvdmVyZmxvdwoACSB0ZHg9JXUsIHRkeT0ldQoACSB0dz0ldSwgdGg9JXUKAAkgdHgwPSV1LCB0eTA9JXUKAEludmFsaWQgY29tcG9uZW50IGluZGV4OiAldQoAU3RyZWFtIHRvbyBzaG9ydAoATWFya2VyIGhhbmRsZXIgZnVuY3Rpb24gZmFpbGVkIHRvIHJlYWQgdGhlIG1hcmtlciBzZWdtZW50CgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgY3VycmVudCBwcmVjaW5jdCBjb2RlYmxvY2sgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNRY2Qgb3IgU1FjYyBlbGVtZW50CgBBIEJQQ0MgaGVhZGVyIGJveCBpcyBhdmFpbGFibGUgYWx0aG91Z2ggQlBDIGdpdmVuIGJ5IHRoZSBJSERSIGJveCAoJWQpIGluZGljYXRlIGNvbXBvbmVudHMgYml0IGRlcHRoIGlzIGNvbnN0YW50CgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGlsbGVnYWwgdGlsZSBvZmZzZXQKAEludmFsaWQgcHJlY2luY3QKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBiYW5kIHByZWNpbnRzCgBGYWlsZWQgdG8gZGVjb2RlIGFsbCB1c2VkIGNvbXBvbmVudHMKAFNpemUgb2YgY29kZSBibG9jayBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAU2l6ZSBvZiB0aWxlIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgTUNUIG1hcmtlcnMKAENvcnJ1cHRlZCBQUE0gbWFya2VycwoATm90IGVub3VnaCBtZW1vcnkgZm9yIHRpbGUgcmVzb2x1dGlvbnMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBjb2xsZWN0aW9ucwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAwIHBhbGV0dGUgY29sdW1ucwoAV2UgZG8gbm90IHN1cHBvcnQgUk9JIGluIGRlY29kaW5nIEhUIGNvZGVibG9ja3MKAENhbm5vdCBoYW5kbGUgYm94IG9mIHVuZGVmaW5lZCBzaXplcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGhvdXQgc2FtZSBudW1iZXIgb2YgaW5kaXhlcwoASW52YWxpZCB0aWxlYy0+d2luX3h4eCB2YWx1ZXMKAENhbm5vdCBoYW5kbGUgYm94IG9mIGxlc3MgdGhhbiA4IGJ5dGVzCgBDYW5ub3QgaGFuZGxlIFhMIGJveCBvZiBsZXNzIHRoYW4gMTYgYnl0ZXMKAENvbXBvbmVudCBpbmRleCAldSB1c2VkIHNldmVyYWwgdGltZXMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgJWQgZW50cmllcwoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlIG5vZGVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzCgBDYW5ub3QgZGVjb2RlIHRpbGUsIG1lbW9yeSBlcnJvcgoAb3BqX2oya19hcHBseV9uYl90aWxlX3BhcnRzX2NvcnJlY3Rpb24gZXJyb3IKAFByb2JsZW0gd2l0aCBza2lwcGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFVua25vd24gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGwgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgbWggbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBTT1QgbWFya2VyCgBEaWQgbm90IGdldCBleHBlY3RlZCBTT1QgbWFya2VyCgBFcnJvciByZWFkaW5nIFBMVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIHNwYWNlIGZvciBleHBlY3RlZCBTT1AgbWFya2VyCgBFeHBlY3RlZCBTT1AgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DTyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUkdOIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUE0gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgcmVxdWlyZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoAb3BqX2oya19idWlsZF90cF9pbmRleF9mcm9tX3RsbSgpOiB0aWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFNPVCBtYXJrZXIuIFRpbGUgaW5kZXggYWxsb2NhdGlvbiBmYWlsZWQKAElnbm9yaW5nIGloZHIgYm94LiBGaXJzdCBpaGRyIGJveCBhbHJlYWR5IHJlYWQKAFpwcHQgJXUgYWxyZWFkeSByZWFkCgBacHBtICV1IGFscmVhZHkgcmVhZAoAUFRFUk0gY2hlY2sgZmFpbHVyZTogJWQgc3ludGhlc2l6ZWQgMHhGRiBtYXJrZXJzIHJlYWQKAAkJCSBjYmxrdz0yXiVkCgAJCQkgY2Jsa2g9Ml4lZAoACQkJIHFudHN0eT0lZAoAJXMgZHg9JWQsIGR5PSVkCgAJCQkgcm9pc2hpZnQ9JWQKAAkJCSBudW1nYml0cz0lZAoACQkgbnVtbGF5ZXJzPSVkCgAlcyBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBhY249JWQsIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGNuPSVkLCBudW1jb21wcz0lZAoACQkJIG51bXJlc29sdXRpb25zPSVkCgAJCSB0eXBlPSUjeCwgcG9zPSVsbGksIGxlbj0lZAoAJXMgc2duZD0lZAoACQkJIHFtZmJpZD0lZAoAJXMgcHJlYz0lZAoACQkgbmIgb2YgdGlsZS1wYXJ0IGluIHRpbGUgWyVkXT0lZAoAJXMgeDE9JWQsIHkxPSVkCgAlcyB4MD0lZCwgeTA9JWQKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAlZC8lZAoAU2V0dGluZyBkZWNvZGluZyBhcmVhIHRvICVkLCVkLCVkLCVkCgBGYWlsZWQgdG8gZGVjb2RlIGNvbXBvbmVudCAlZAoASW52YWxpZCB2YWx1ZSBmb3IgbnVtcmVzb2x1dGlvbnMgOiAlZCwgbWF4IHZhbHVlIGlzIHNldCBpbiBvcGVuanBlZy5oIGF0ICVkCgBJbnZhbGlkIGNvbXBvbmVudCBudW1iZXI6ICVkLCByZWdhcmRpbmcgdGhlIG51bWJlciBvZiBjb21wb25lbnRzICVkCgBUb28gbWFueSBQT0NzICVkCgBvcGpfajJrX3JlYWRfdGxtKCk6IGludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU290IGxlbmd0aCBpcyBsZXNzIHRoYW4gbWFya2VyIHNpemUgKyBtYXJrZXIgSUQKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAG9wal9qMmtfYnVpbGRfdHBfaW5kZXhfZnJvbV90bG0oKTogdGlsZSAlZCBoYXMgbm8gcmVnaXN0ZXJlZCB0aWxlLXBhcnQgaW4gVExNIG1hcmtlciBzZWdtZW50cy4KAG9wal9qMmtfcmVhZF90bG0oKTogdG9vIG1hbnkgVExNIG1hcmtlcnMuCgBvcGpfajJrX3JlYWRfdGxtKCk6IGNhbm5vdCBhbGxvY2F0ZSBtX3RpbGVfcGFydF9pbmZvcy4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAb3BqX2oya19yZWFkX3RsbSgpOiBUTE0gbWFya2VyIG5vdCBvZiBleHBlY3RlZCBzaXplLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBvcGpfajJrX3JlYWRfdGxtKCk6IFNUID0gMyBpcyBpbnZhbGlkLgoAT25seSBvbmUgQ01BUCBib3ggaXMgYWxsb3dlZC4KAFdlIG5lZWQgYW4gaW1hZ2UgcHJldmlvdXNseSBjcmVhdGVkLgoASUhEUiBib3hfbWlzc2luZy4gUmVxdWlyZWQuCgBKUDJIIGJveCBtaXNzaW5nLiBSZXF1aXJlZC4KAE5vdCBzdXJlIGhvdyB0aGF0IGhhcHBlbmVkLgoATWFpbiBoZWFkZXIgaGFzIGJlZW4gY29ycmVjdGx5IGRlY29kZWQuCgBUaWxlICVkLyVkIGhhcyBiZWVuIGRlY29kZWQuCgBIZWFkZXIgb2YgdGlsZSAlZCAvICVkIGhhcyBiZWVuIHJlYWQuCgBFbXB0eSBTT1QgbWFya2VyIGRldGVjdGVkOiBQc290PSVkLgoARGlyZWN0IHVzZSBhdCAjJWQgaG93ZXZlciBwY29sPSVkLgoASW1wbGVtZW50YXRpb24gbGltaXRhdGlvbjogZm9yIHBhbGV0dGUgbWFwcGluZywgcGNvbFslZF0gc2hvdWxkIGJlIGVxdWFsIHRvICVkLCBidXQgaXMgZXF1YWwgdG8gJWQuCgBJbnZhbGlkIGNvbXBvbmVudC9wYWxldHRlIGluZGV4IGZvciBkaXJlY3QgbWFwcGluZyAlZC4KAEludmFsaWQgdmFsdWUgZm9yIGNtYXBbJWRdLm10eXAgPSAlZC4KAFBzb3QgdmFsdWUgaXMgbm90IGNvcnJlY3QgcmVnYXJkcyB0byB0aGUgSlBFRzIwMDAgbm9ybTogJWQuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBWTEMgY29kZSBwcm9kdWNlcyBzaWduaWZpY2FudCBzYW1wbGVzIG91dHNpZGUgdGhlIGNvZGVibG9jayBhcmVhLgoAVW5leHBlY3RlZCBPT00uCgAzMiBiaXRzIGFyZSBub3QgZW5vdWdoIHRvIGRlY29kZSB0aGlzIGNvZGVibG9jaywgc2luY2UgdGhlIG51bWJlciBvZiBiaXRwbGFuZSwgJWQsIGlzIGxhcmdlciB0aGFuIDMwLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgc2hvdWxkIGJlID4gMC4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgc2hvdWxkIGJlID4gMC4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgc2hvdWxkIGJlID49IDAuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgc2hvdWxkIGJlID49IDAuCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXI6IHBhY2tldCBoZWFkZXIgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZm91bmQgaW4gdGhlIG1haW4gaGVhZGVyIChQUE0gbWFya2VyKS4KAFN0YXJ0IHRvIHJlYWQgajJrIG1haW4gaGVhZGVyICglbGxkKS4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlPc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWE9zaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAFNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS4KAFNpemUgeSBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS5oPSVkKS4KAFRpbGUgcmVhZCwgZGVjb2RlZCBhbmQgdXBkYXRlZCBpcyBub3QgdGhlIGRlc2lyZWQgb25lICglZCB2cyAlZCkuCgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLgoAb3BqX3JlYWRfaGVhZGVyKCkgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMoKS4KAE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbWFnZS0+Y29tcHNbJWRdLmRhdGEgPT0gTlVMTCBpbiBvcGpfanAyX2FwcGx5X3BjbHIoKS4KAGludmFsaWQgYm94IHNpemUgJWQgKCV4KQoARmFpbCB0byByZWFkIHRoZSBjdXJyZW50IG1hcmtlciBzZWdtZW50ICglI3gpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IElIRFIgdygldSkgaCgldSkgdnMuIFNJWiB3KCV1KSBoKCV1KQoARXJyb3IgcmVhZGluZyBDT0MgbWFya2VyIChiYWQgbnVtYmVyIG9mIGNvbXBvbmVudHMpCgBJbnZhbGlkIG51bWJlciBvZiB0aWxlcyA6ICV1IHggJXUgKG1heGltdW0gZml4ZWQgYnkganBlZzIwMDAgbm9ybSBpcyA2NTUzNSB0aWxlcykKAEludmFsaWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGloZHIpCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgaW1hZ2UgaGVhZGVyIChpaGRyKQoAV3JvbmcgdmFsdWVzIGZvcjogdyglZCkgaCglZCkgbnVtY29tcHMoJWQpIChpaGRyKQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IGR4PSV1IGR5PSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAyNTUgYWNjb3JkaW5nIHRvIHRoZSBKUEVHMjAwMCBub3JtKQoAQmFkIGltYWdlIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbmVnYXRpdmUgb3IgemVybyBpbWFnZSBzaXplICglbGxkIHggJWxsZCkKAHNraXA6IHNlZ21lbnQgdG9vIGxvbmcgKCVkKSB3aXRoIG1heCAoJWQpIGZvciBjb2RlYmxvY2sgJWQgKHA9JWQsIGI9JWQsIHI9JWQsIGM9JWQpCgByZWFkOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoARGVzcGl0ZSBKUDIgQlBDIT0yNTUsIHByZWNpc2lvbiBhbmQvb3Igc2duZCB2YWx1ZXMgZm9yIGNvbXBbJWRdIGlzIGRpZmZlcmVudCB0aGFuIGNvbXBbMF06CiAgICAgICAgWzBdIHByZWMoJWQpIHNnbmQoJWQpIFslZF0gcHJlYyglZCkgc2duZCglZCkKAGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbnVtYmVyIG9mIGNvbXBvbmVudCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCAlZCB2cyAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaW52YWxpZCB0aWxlIHNpemUgKHRkeDogJWQsIHRkeTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChiYWQgc2l6ZTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChDSUVMYWIsIGJhZCBzaXplOiAlZCkKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHJlbWFpbmluZyBieXRlcyBpbiBjb2RlIGJsb2NrICglZCB1c2VkIC8gJWQpCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBPbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gaXMgbm90IG1ldDogMiA8PSBTY3VwIDw9IG1pbihMY3VwLCA0MDc5KQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IHByZWM9JXUgKHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDM4IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybS4gT3BlbkpwZWcgb25seSBzdXBwb3J0cyB1cCB0byAzMSkKAEludmFsaWQgYml0IG51bWJlciAlZCBpbiBvcGpfdDJfcmVhZF9wYWNrZXRfaGVhZGVyKCkKAFN0cmVhbSBlcnJvciEKAEVycm9yIG9uIHdyaXRpbmcgc3RyZWFtIQoAU3RyZWFtIHJlYWNoZWQgaXRzIGVuZCAhCgBFeHBlY3RlZCBhIFNPQyBtYXJrZXIgCgBJbnZhbGlkIGJveCBzaXplICVkIGZvciBib3ggJyVjJWMlYyVjJy4gTmVlZCAlZCBieXRlcywgJWQgYnl0ZXMgcmVtYWluaW5nIAoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gRGVjb2RpbmcgdGhpcyBjb2RlYmxvY2sgaXMgc3RvcHBlZC4gVV9xIGlzIGxhcmdlciB0aGFuIHplcm8gYml0cGxhbmVzICsgMSAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpc2xhcmdlciB0aGFuIGJpdHBsYW5lcyArIDEgCgBDT0xSIEJPWCBtZXRoIHZhbHVlIGlzIG5vdCBhIHJlZ3VsYXIgdmFsdWUgKCVkKSwgc28gd2Ugd2lsbCBpZ25vcmUgdGhlIGVudGlyZSBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3guIAoAV2hpbGUgcmVhZGluZyBDQ1BfUU5UU1RZIGVsZW1lbnQgaW5zaWRlIFFDRCBvciBRQ0MgbWFy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AAAAAFQAAKBTAAABJAAAAAAAABBUAACwUwAAASQAAAEAAAAgVAAAwFMAAAEiAAAAAAAAMFQAANBTAAABIgAAAQAAAEBUAADgUwAAARwAAAAAAABQVAAA8FMAAAEcAAABAAAAYFQAAABUAAABGAAAAAAAAHBUAAAQVAAAARgAAAEAAACAVAAAIFQAAAEWAAAAAAAAkFQAADBUAAABFgAAAQAAAKBUAABAVAAAARQAAAAAAACwVAAAUFQAAAEUAAABAAAAwFQAAGBUAAABEgAAAAAAANBUAABwVAAAARIAAAEAAADgVAAAgFQAAAERAAAAAAAA8FQAAJBUAAABEQAAAQAAAABVAACgVAAAwQoAAAAAAAAQVQAAsFQAAMEKAAABAAAAIFUAAMBUAADBCQAAAAAAADBVAADQVAAAwQkAAAEAAABAVQAA4FQAAKEIAAAAAAAAUFUAAPBUAAChCAAAAQAAAGBVAAAAVQAAIQUAAAAAAABwVQAAEFUAACEFAAABAAAAgFUAACBVAABBBAAAAAAAAJBVAAAwVQAAQQQAAAEAAACgVQAAQFUAAKECAAAAAAAAsFUAAFBVAAChAgAAAQAAAMBVAABgVQAAIQIAAAAAAADQVQAAcFUAACECAAABAAAA4FUAAIBVAABBAQAAAAAAAPBVAACQVQAAQQEAAAEAAAAAVgAAoFUAABEBAAAAAAAAEFYAALBVAAARAQAAAQAAACBWAADAVQAAhQAAAAAAAAAwVgAA0FUAAIUAAAABAAAAQFYAAOBVAABJAAAAAAAAAFBWAADwVQAASQAAAAEAAABgVgAAAFYAACUAAAAAAAAAcFYAABBWAAAlAAAAAQAAAIBWAAAgVgAAFQAAAAAAAACQVgAAMFYAABUAAAABAAAAoFYAAEBWAAAJAAAAAAAAALBWAABQVgAACQAAAAEAAADAVgAAYFYAAAUAAAAAAAAA0FYAAHBWAAAFAAAAAQAAAOBWAACAVgAAAQAAAAAAAADQVgAAkFYAAAEAAAABAAAA4FYAAKBWAAABVgAAAAAAAPBWAADwVgAAAVYAAAEAAAAAVwAAAFcAAAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAEFBgECBgYDAwcHAwMHBwABBQYBAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcFBggIBgYICAcHCAgHBwgIBQYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcCAgYGAgIGBgMDBwcDAwcHAgIGBgICBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgAAQMDAQIDAwUGBwcGBgcHAAEDAwECAwMFBgcHBgYHBwUGBwcGBgcHCAgICAgICAgFBgcHBgYHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAICAwMCAgMDBgYHBwYGBwcCAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAADAQQDBgQHAQQCBQQHBQcAAwEEAwYEBwEEAgUEBwUHAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBggHCAgICAgHCAcICAgICAYIBwgICAgIBwgHCAgICAgH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";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}function instantiateSync(file,info){var module;var binary=getBinarySync(file);module=new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return[instance,module]}function getWasmImports(){return{a:wasmImports}}function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["t"];updateMemoryViews();addOnInit(wasmExports["u"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();var result=instantiateSync(wasmBinaryFile,info);return receiveInstance(result[0])}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=Module; return moduleRtn; From b51bdb68a2a737cde52ff0f42d7ec54b0f55f942 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 9 Dec 2024 17:25:36 +0100 Subject: [PATCH 130/338] [Editor] Don't commit the current drawing while zooming --- src/display/editor/annotation_editor_layer.js | 20 +++++++++++++++++++ web/annotation_editor_layer_builder.js | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index e6610febd814c..6ca2a79ec1d63 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -76,6 +76,8 @@ class AnnotationEditorLayer { #drawingAC = null; + #focusedElement = null; + #textLayer = null; #textSelectionAC = null; @@ -811,6 +813,7 @@ class AnnotationEditorLayer { "blur", ({ relatedTarget }) => { if (relatedTarget && !this.div.contains(relatedTarget)) { + this.#focusedElement = null; this.commitOrRemove(); } }, @@ -819,6 +822,22 @@ class AnnotationEditorLayer { this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); } + pause(on) { + if (on) { + const { activeElement } = document; + if (this.div.contains(activeElement)) { + this.#focusedElement = activeElement; + } + return; + } + if (this.#focusedElement) { + setTimeout(() => { + this.#focusedElement?.focus(); + this.#focusedElement = null; + }, 0); + } + } + endDrawingSession(isAborted = false) { if (!this.#drawingAC) { return null; @@ -826,6 +845,7 @@ class AnnotationEditorLayer { this.#uiManager.setCurrentDrawingSession(null); this.#drawingAC.abort(); this.#drawingAC = null; + this.#focusedElement = null; return this.#currentEditorType.endDrawing(isAborted); } diff --git a/web/annotation_editor_layer_builder.js b/web/annotation_editor_layer_builder.js index 46082c163f838..f6240f2c47720 100644 --- a/web/annotation_editor_layer_builder.js +++ b/web/annotation_editor_layer_builder.js @@ -140,6 +140,7 @@ class AnnotationEditorLayerBuilder { if (!this.div) { return; } + this.annotationEditorLayer.pause(/* on */ true); this.div.hidden = true; } @@ -148,6 +149,7 @@ class AnnotationEditorLayerBuilder { return; } this.div.hidden = false; + this.annotationEditorLayer.pause(/* on */ false); } } From d8c0299a586c838e3b21d450d5048ddd6d2c529d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 9 Dec 2024 19:55:31 +0100 Subject: [PATCH 131/338] Make sure the canvas is always the first child of its wrapper While drawing, in zooming fast enough, it's possible, intermittently, to have the canvas after the svg which makes the svg invisible. So this patch makes sure to have the canvas at the right position. --- web/pdf_page_view.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 13b18e433c26f..83766a78ad442 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -975,6 +975,10 @@ class PDFPageView { const hasHCM = !!(pageColors?.background && pageColors?.foreground); const prevCanvas = this.canvas; + + // In HCM, a final filter is applied on the canvas which means that + // before it's applied we've normal colors. Consequently, to avoid to + // have a final flash we just display it once all the drawing is done. const updateOnFirstShow = !prevCanvas && !hasHCM; this.canvas = canvas; this.#originalViewport = viewport; @@ -984,7 +988,13 @@ class PDFPageView { // Don't add the canvas until the first draw callback, or until // drawing is complete when `!this.renderingQueue`, to prevent black // flickering. - canvasWrapper.append(canvas); + // In whatever case, the canvas must be the first child. + const { firstChild } = canvasWrapper; + if (firstChild) { + firstChild.before(canvas); + } else { + canvasWrapper.append(canvas); + } showCanvas = null; return; } @@ -996,10 +1006,12 @@ class PDFPageView { prevCanvas.replaceWith(canvas); prevCanvas.width = prevCanvas.height = 0; } else { - // In HCM, a final filter is applied on the canvas which means that - // before it's applied we've normal colors. Consequently, to avoid to - // have a final flash we just display it once all the drawing is done. - canvasWrapper.append(canvas); + const { firstChild } = canvasWrapper; + if (firstChild) { + firstChild.before(canvas); + } else { + canvasWrapper.append(canvas); + } } showCanvas = null; From 9308151c7ddad597ba5419eb74dc316c0069b913 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 9 Dec 2024 16:07:39 +0100 Subject: [PATCH 132/338] [Editor] When resizing a stamp annotation, the opposite corner must stay fixed It was due the resize observer which is removed thanks to this patch. In order to reuse the dragAndDrop function in test, this patch slighty refactors it in order to make it easier to use. --- src/display/editor/stamp.js | 109 +++++++++------------- test/integration/freetext_editor_spec.mjs | 31 +++--- test/integration/ink_editor_spec.mjs | 10 +- test/integration/stamp_editor_spec.mjs | 92 ++++++++++++------ test/integration/test_utils.mjs | 22 ++++- 5 files changed, 139 insertions(+), 125 deletions(-) diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index 972e009ca6a0b..b727a0bafcc0b 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -40,8 +40,6 @@ class StampEditor extends AnnotationEditor { #canvas = null; - #observer = null; - #resizeTimeoutId = null; #isSvg = false; @@ -305,8 +303,6 @@ class StampEditor extends AnnotationEditor { this._uiManager.imageManager.deleteId(this.#bitmapId); this.#canvas?.remove(); this.#canvas = null; - this.#observer?.disconnect(); - this.#observer = null; if (this.#resizeTimeoutId) { clearTimeout(this.#resizeTimeoutId); this.#resizeTimeoutId = null; @@ -398,9 +394,34 @@ class StampEditor extends AnnotationEditor { ); } + this._uiManager.addShouldRescale(this); + return this.div; } + /** @inheritdoc */ + _onResized() { + // We used a CSS-zoom during the resizing, but now it's resized we can + // rescale correctly the bitmap to fit the new dimensions. + this.onScaleChanging(); + } + + onScaleChanging() { + if (!this.parent) { + return; + } + if (this.#resizeTimeoutId !== null) { + clearTimeout(this.#resizeTimeoutId); + } + // The user's zooming the page, there is no need to redraw the bitmap at + // each step, hence we wait a bit before redrawing it. + const TIME_TO_WAIT = 200; + this.#resizeTimeoutId = setTimeout(() => { + this.#resizeTimeoutId = null; + this.#drawBitmap(); + }, TIME_TO_WAIT); + } + #createCanvas() { const { div } = this; let { width, height } = this.#bitmap; @@ -433,6 +454,15 @@ class StampEditor extends AnnotationEditor { canvas.setAttribute("role", "img"); this.addContainer(canvas); + this.width = width / pageWidth; + this.height = height / pageHeight; + if (this._initialOptions?.isCentered) { + this.center(); + } else { + this.fixAndSetPosition(); + } + this._initialOptions = null; + if ( !this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || @@ -440,8 +470,7 @@ class StampEditor extends AnnotationEditor { ) { div.hidden = false; } - this.#drawBitmap(width, height); - this.#createObserver(); + this.#drawBitmap(); if (!this.#hasBeenAddedInUndoStack) { this.parent.addUndoableEditor(this); this.#hasBeenAddedInUndoStack = true; @@ -584,37 +613,6 @@ class StampEditor extends AnnotationEditor { return { canvas, width, height, imageData }; } - /** - * When the dimensions of the div change the inner canvas must - * renew its dimensions, hence it must redraw its own contents. - * @param {number} width - the new width of the div - * @param {number} height - the new height of the div - * @returns - */ - #setDimensions(width, height) { - const [parentWidth, parentHeight] = this.parentDimensions; - this.width = width / parentWidth; - this.height = height / parentHeight; - if (this._initialOptions?.isCentered) { - this.center(); - } else { - this.fixAndSetPosition(); - } - this._initialOptions = null; - if (this.#resizeTimeoutId !== null) { - clearTimeout(this.#resizeTimeoutId); - } - // When the user is resizing the editor we just use CSS to scale the image - // to avoid redrawing it too often. - // And once the user stops resizing the editor we redraw the image in - // rescaling it correctly (see this.#scaleBitmap). - const TIME_TO_WAIT = 200; - this.#resizeTimeoutId = setTimeout(() => { - this.#resizeTimeoutId = null; - this.#drawBitmap(width, height); - }, TIME_TO_WAIT); - } - #scaleBitmap(width, height) { const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap; @@ -660,18 +658,21 @@ class StampEditor extends AnnotationEditor { return bitmap; } - #drawBitmap(width, height) { + #drawBitmap() { + const [parentWidth, parentHeight] = this.parentDimensions; + const { width, height } = this; const outputScale = new OutputScale(); - const scaledWidth = Math.ceil(width * outputScale.sx); - const scaledHeight = Math.ceil(height * outputScale.sy); - + const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx); + const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy); const canvas = this.#canvas; + if ( !canvas || (canvas.width === scaledWidth && canvas.height === scaledHeight) ) { return; } + canvas.width = scaledWidth; canvas.height = scaledHeight; @@ -746,32 +747,6 @@ class StampEditor extends AnnotationEditor { return structuredClone(this.#bitmap); } - /** - * Create the resize observer. - */ - #createObserver() { - if (!this._uiManager._signal) { - // This method is called after the canvas has been created but the canvas - // creation is async, so it's possible that the viewer has been closed. - return; - } - this.#observer = new ResizeObserver(entries => { - const rect = entries[0].contentRect; - if (rect.width && rect.height) { - this.#setDimensions(rect.width, rect.height); - } - }); - this.#observer.observe(this.div); - this._uiManager._signal.addEventListener( - "abort", - () => { - this.#observer?.disconnect(); - this.#observer = null; - }, - { once: true } - ); - } - /** @inheritdoc */ static async deserialize(data, parent, uiManager) { let initialData = null; diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 085c75e6a6c8e..ca47dea9fbc1c 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -19,7 +19,7 @@ import { copy, copyToClipboard, createPromise, - dragAndDropAnnotation, + dragAndDrop, firstPageOnTop, getEditors, getEditorSelector, @@ -954,19 +954,14 @@ describe("FreeText Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorRect = await getRect(page, getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + const editorRect = await getRect(page, editorSelector); // Select the annotation we want to move. await page.mouse.click(editorRect.x + 2, editorRect.y + 2); - await waitForSelectedEditor(page, getEditorSelector(0)); + await waitForSelectedEditor(page, editorSelector); - await dragAndDropAnnotation( - page, - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - 100, - 100 - ); + await dragAndDrop(page, editorSelector, [[100, 100]]); await waitForSerialized(page, 1); }) ); @@ -2335,29 +2330,29 @@ describe("FreeText Editor", () => { const allPositions = []; for (let i = 0; i < 10; i++) { + const editorSelector = getEditorSelector(i); await page.mouse.click(rect.x + 10 + 30 * i, rect.y + 100 + 5 * i); - await page.waitForSelector(getEditorSelector(i), { + await page.waitForSelector(editorSelector, { visible: true, }); await page.type( - `${getEditorSelector(i)} .internal`, + `${editorSelector} .internal`, String.fromCharCode(65 + i) ); // Commit. await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(i)} .overlay.enabled` - ); + await page.waitForSelector(`${editorSelector} .overlay.enabled`); - allPositions.push(await getRect(page, getEditorSelector(i))); + allPositions.push(await getRect(page, editorSelector)); } await selectAll(page); - await dragAndDropAnnotation(page, rect.x + 161, rect.y + 126, 39, 74); + await dragAndDrop(page, getEditorSelector(4), [[39, 74]]); for (let i = 0; i < 10; i++) { - const pos = await getRect(page, getEditorSelector(i)); + const editorSelector = getEditorSelector(i); + const pos = await getRect(page, editorSelector); const oldPos = allPositions[i]; expect(Math.abs(Math.round(pos.x - oldPos.x) - 39)) .withContext(`In ${browserName}`) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 93f7de906a5b1..9ba6254163ca2 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -17,7 +17,7 @@ import { awaitPromise, closePages, createPromise, - dragAndDropAnnotation, + dragAndDrop, getAnnotationSelector, getEditors, getEditorSelector, @@ -822,13 +822,7 @@ describe("Ink Editor", () => { await page.mouse.click(editorRect.x + 2, editorRect.y + 2); await waitForSelectedEditor(page, edgeB); - await dragAndDropAnnotation( - page, - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - 100, - 100 - ); + await dragAndDrop(page, edgeB, [[100, 100]]); await waitForSerialized(page, 1); }) ); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 6e76a45b92e34..acbc13a628fb9 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -16,11 +16,12 @@ import { applyFunctionToEditor, awaitPromise, + cleanupEditing, clearInput, closePages, copy, copyToClipboard, - dragAndDropAnnotation, + dragAndDrop, getAnnotationSelector, getEditorDimensions, getEditors, @@ -120,13 +121,7 @@ describe("Stamp Editor", () => { }); afterEach(async () => { - for (const [, page] of pages) { - await page.evaluate(() => { - window.uiManager.reset(); - }); - // Disable editing mode. - await switchToStamp(page, /* disable */ true); - } + await cleanupEditing(pages, switchToStamp); }); afterAll(async () => { @@ -216,13 +211,23 @@ describe("Stamp Editor", () => { let pages; beforeAll(async () => { - pages = await loadAndWait("empty.pdf", ".annotationEditorLayer", 50); + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer", 50, { + eventBusSetup: eventBus => { + eventBus.on("annotationeditoruimanager", ({ uiManager }) => { + window.uiManager = uiManager; + }); + }, + }); }); afterAll(async () => { await closePages(pages); }); + afterEach(async () => { + await cleanupEditing(pages, switchToStamp); + }); + it("must check that an added image stay within the page", async () => { await Promise.all( pages.map(async ([browserName, page]) => { @@ -239,14 +244,13 @@ describe("Stamp Editor", () => { await input.uploadFile( `${path.join(__dirname, "../images/firefox_logo.png")}` ); - await waitForImage(page, getEditorSelector(i)); - await page.waitForSelector(`${getEditorSelector(i)} .altText`); + const editorSelector = getEditorSelector(i); + await waitForImage(page, editorSelector); + await page.waitForSelector(`${editorSelector} .altText`); for (let j = 0; j < 4; j++) { await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(i)} .resizers.hidden` - ); + await page.waitForSelector(`${editorSelector} .resizers.hidden`); const handle = await waitForAnnotationEditorLayer(page); await page.evaluate(() => { @@ -255,10 +259,10 @@ describe("Stamp Editor", () => { await awaitPromise(handle); await page.focus(".stampEditor"); - await waitForSelectedEditor(page, getEditorSelector(i)); + await waitForSelectedEditor(page, editorSelector); await page.waitForSelector( - `${getEditorSelector(i)} .resizers:not(.hidden)` + `${editorSelector} .resizers:not(.hidden)` ); const stampRect = await getRect(page, ".stampEditor"); @@ -285,6 +289,44 @@ describe("Stamp Editor", () => { }) ); }); + + it("must check that the opposite corner doesn't move", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToStamp(page); + + await page.click("#editorStampAddImage"); + const input = await page.$("#stampEditorFileInput"); + await input.uploadFile( + `${path.join(__dirname, "../images/firefox_logo.png")}` + ); + const editorSelector = getEditorSelector(0); + await waitForImage(page, editorSelector); + await page.waitForSelector(`${editorSelector} .resizer.topLeft`); + const baseRect = await getRect(page, editorSelector); + const bRX = baseRect.x + baseRect.width; + const bRY = baseRect.y + baseRect.height; + + await dragAndDrop(page, `${editorSelector} .resizer.topLeft`, [ + [-10, -10], + [20, 20], + [-10, -10], + [20, 20], + ]); + + const newRect = await getRect(page, editorSelector); + const newBRX = newRect.x + newRect.width; + const newBRY = newRect.y + newRect.height; + + expect(Math.abs(bRX - newBRX) <= 1) + .withContext(`In ${browserName}`) + .toBeTrue(); + expect(Math.abs(bRY - newBRY) <= 1) + .withContext(`In ${browserName}`) + .toBeTrue(); + }) + ); + }); }); describe("Alt text dialog", () => { @@ -1441,7 +1483,8 @@ describe("Stamp Editor", () => { const modeChangedHandle = await waitForAnnotationModeChanged(page); await page.click(getAnnotationSelector("25R"), { count: 2 }); await awaitPromise(modeChangedHandle); - await waitForSelectedEditor(page, getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await waitForSelectedEditor(page, editorSelector); const editorIds = await getEditors(page, "stamp"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(5); @@ -1451,22 +1494,13 @@ describe("Stamp Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorRect = await page.$eval(getEditorSelector(0), el => { - const { x, y, width, height } = el.getBoundingClientRect(); - return { x, y, width, height }; - }); + const editorRect = await getRect(page, editorSelector); // Select the annotation we want to move. await page.mouse.click(editorRect.x + 2, editorRect.y + 2); - await waitForSelectedEditor(page, getEditorSelector(0)); + await waitForSelectedEditor(page, editorSelector); - await dragAndDropAnnotation( - page, - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - 100, - 100 - ); + await dragAndDrop(page, editorSelector, [[100, 100]]); await waitForSerialized(page, 1); }) ); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index c52f5257bb299..f30d81d5792af 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -522,10 +522,15 @@ async function serializeBitmapDimensions(page) { }); } -async function dragAndDropAnnotation(page, startX, startY, tX, tY) { +async function dragAndDrop(page, selector, translations) { + const rect = await getRect(page, selector); + const startX = rect.x + rect.width / 2; + const startY = rect.y + rect.height / 2; await page.mouse.move(startX, startY); await page.mouse.down(); - await page.mouse.move(startX + tX, startY + tY); + for (const [tX, tY] of translations) { + await page.mouse.move(startX + tX, startY + tY); + } await page.mouse.up(); await page.waitForSelector("#viewer:not(.noUserSelect)"); } @@ -809,16 +814,27 @@ function isCanvasWhite(page, pageNumber, rectangle) { ); } +async function cleanupEditing(pages, switcher) { + for (const [, page] of pages) { + await page.evaluate(() => { + window.uiManager.reset(); + }); + // Disable editing mode. + await switcher(page, /* disable */ true); + } +} + export { applyFunctionToEditor, awaitPromise, + cleanupEditing, clearInput, closePages, closeSinglePage, copy, copyToClipboard, createPromise, - dragAndDropAnnotation, + dragAndDrop, firstPageOnTop, getAnnotationSelector, getAnnotationStorage, From f4525b697f3ee409f1bf682eb0146f08b82cbc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Tue, 10 Dec 2024 12:00:09 +0100 Subject: [PATCH 133/338] Simplify logic to insert canvas as first element Instead of conditionally checking if the `.cavnasWrapper` already has a child element and then inserting the `canvas` before it, we can use `.prepend` which always injects the new element as the first child. --- web/pdf_page_view.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 83766a78ad442..26b3257f93ec3 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -989,12 +989,7 @@ class PDFPageView { // drawing is complete when `!this.renderingQueue`, to prevent black // flickering. // In whatever case, the canvas must be the first child. - const { firstChild } = canvasWrapper; - if (firstChild) { - firstChild.before(canvas); - } else { - canvasWrapper.append(canvas); - } + canvasWrapper.prepend(canvas); showCanvas = null; return; } @@ -1006,12 +1001,7 @@ class PDFPageView { prevCanvas.replaceWith(canvas); prevCanvas.width = prevCanvas.height = 0; } else { - const { firstChild } = canvasWrapper; - if (firstChild) { - firstChild.before(canvas); - } else { - canvasWrapper.append(canvas); - } + canvasWrapper.prepend(canvas); } showCanvas = null; From ae74cce8320fa5a37ac2ac1085ae3ff7ba39675d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 8 Dec 2024 22:16:41 +0100 Subject: [PATCH 134/338] Fix intermittent failures when moving a freetext annotation in integration tests When an editor is moved with the keyboard or in dragging it, it is moved in the DOM in order to make screen readers happy. But this move is slightly postponed thanks to a setTimeout(..., 0). The failures were very likely due to the fact that intermittently the DOM move was done in the middle of the next key sequence which was making the move on screen failing. --- src/display/editor/editor.js | 5 + test/integration/freetext_editor_spec.mjs | 126 +++++++--------------- test/integration/test_utils.mjs | 9 ++ 3 files changed, 54 insertions(+), 86 deletions(-) diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 50aff8624d838..2d61a2850fc32 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -1278,6 +1278,11 @@ class AnnotationEditor { this.#moveInDOMTimeout = setTimeout(() => { this.#moveInDOMTimeout = null; this.parent?.moveEditorInDOM(this); + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { + this._uiManager._eventBus.dispatch("editormovedindom", { + source: this, + }); + } }, 0); } diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index ca47dea9fbc1c..a4dce9fe3c3aa 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -47,6 +47,7 @@ import { switchToEditor, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, + waitForEditorMovedInDOM, waitForSelectedEditor, waitForSerialized, waitForStorageEntries, @@ -88,6 +89,17 @@ const waitForPositionChange = (page, selector, xy) => xy ); +const moveEditor = async (page, selector, n, pressKey) => { + let xy = await getXY(page, selector); + for (let i = 0; i < n; i++) { + const handle = await waitForEditorMovedInDOM(page); + await pressKey(); + await awaitPromise(handle); + await waitForPositionChange(page, selector, xy); + xy = await getXY(page, selector); + } +}; + const cancelFocusIn = async (page, selector) => { page.evaluate(sel => { const el = document.querySelector(sel); @@ -1963,12 +1975,9 @@ describe("FreeText Editor", () => { const [pageX, pageY] = await getFirstSerialized(page, x => x.rect); - let xy = await getXY(page, selectorEditor); - for (let i = 0; i < 20; i++) { - await page.keyboard.press("ArrowRight"); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 20, () => + page.keyboard.press("ArrowRight") + ); let [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -1978,11 +1987,9 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY)); - for (let i = 0; i < 20; i++) { - await page.keyboard.press("ArrowDown"); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 20, () => + page.keyboard.press("ArrowDown") + ); [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -1992,11 +1999,7 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY - 20)); - for (let i = 0; i < 2; i++) { - await kbBigMoveLeft(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page)); [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -2006,11 +2009,7 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY - 20)); - for (let i = 0; i < 2; i++) { - await kbBigMoveUp(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page)); [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -2036,12 +2035,9 @@ describe("FreeText Editor", () => { const pageWidth = page2X - page1X; const selectorEditor = getEditorSelector(0); - let xy = await getXY(page, selectorEditor); - for (let i = 0; i < 5; i++) { - await page.keyboard.press("ArrowRight"); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 5, () => + page.keyboard.press("ArrowRight") + ); const [new1X, , new2X] = await getFirstSerialized(page, x => x.rect); const newWidth = new2X - new1X; @@ -2088,42 +2084,21 @@ describe("FreeText Editor", () => { visible: true, }); - let xy = await getXY(page, selectorEditor); - for (let i = 0; i < 20; i++) { - await page.keyboard.press("ArrowRight"); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 20, () => + page.keyboard.press("ArrowRight") + ); - for (let i = 0; i < 2; i++) { - await kbBigMoveDown(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveDown(page)); - for (let i = 0; i < 20; i++) { - await page.keyboard.press("ArrowLeft"); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 20, () => + page.keyboard.press("ArrowLeft") + ); - for (let i = 0; i < 2; i++) { - await kbBigMoveUp(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page)); - for (let i = 0; i < 2; i++) { - await kbBigMoveRight(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveRight(page)); - for (let i = 0; i < 2; i++) { - await kbBigMoveLeft(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page)); await page.type(`${selectorEditor} .internal`, data); await page.keyboard.press("Escape"); @@ -2287,11 +2262,8 @@ describe("FreeText Editor", () => { const { y: y0, height } = await getRect(page, getEditorSelector(0)); const selectorEditor = getEditorSelector(1); - let xy = await getXY(page, selectorEditor); while ((await getRect(page, selectorEditor)).y > y0 - height) { - await kbBigMoveUp(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); + await moveEditor(page, selectorEditor, 1, () => kbBigMoveUp(page)); } // The editor must be moved in the DOM and potentially the focus @@ -2727,12 +2699,7 @@ describe("FreeText Editor", () => { visible: true, }); - let xy = await getXY(page, selectorEditor); - for (let i = 0; i < 5; i++) { - await kbBigMoveUp(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 5, () => kbBigMoveUp(page)); const data = "Hello PDF.js World !!"; await page.type(`${selectorEditor} .internal`, data); @@ -2757,12 +2724,7 @@ describe("FreeText Editor", () => { visible: true, }); - xy = await getXY(page, selectorEditor); - for (let i = 0; i < 5; i++) { - await kbBigMoveDown(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 5, () => kbBigMoveDown(page)); await page.type(`${selectorEditor} .internal`, data); @@ -2792,12 +2754,7 @@ describe("FreeText Editor", () => { visible: true, }); - let xy = await getXY(page, selectorEditor); - for (let i = 0; i < 10; i++) { - await kbBigMoveLeft(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 10, () => kbBigMoveLeft(page)); const data = "Hello PDF.js World !!"; await page.type(`${selectorEditor} .internal`, data); @@ -2822,12 +2779,9 @@ describe("FreeText Editor", () => { visible: true, }); - xy = await getXY(page, selectorEditor); - for (let i = 0; i < 10; i++) { - await kbBigMoveRight(page); - await waitForPositionChange(page, selectorEditor, xy); - xy = await getXY(page, selectorEditor); - } + await moveEditor(page, selectorEditor, 10, () => + kbBigMoveRight(page) + ); await page.type(`${selectorEditor} .internal`, data); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index f30d81d5792af..0c4abcd3f7642 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -563,6 +563,14 @@ function waitForPageRendered(page) { }); } +function waitForEditorMovedInDOM(page) { + return createPromise(page, resolve => { + window.PDFViewerApplication.eventBus.on("editormovedindom", resolve, { + once: true, + }); + }); +} + async function scrollIntoView(page, selector) { const handle = await page.evaluateHandle( sel => [ @@ -878,6 +886,7 @@ export { waitAndClick, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, + waitForEditorMovedInDOM, waitForEntryInStorage, waitForEvent, waitForNoElement, From 1d316ea5aa7ebc2551d51d70455d21132aa86352 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 10 Dec 2024 18:21:05 +0100 Subject: [PATCH 135/338] Update Puppeteer to version 23.10.2 --- package-lock.json | 211 +++++++++++++++------------------------------- package.json | 2 +- 2 files changed, 70 insertions(+), 143 deletions(-) diff --git a/package-lock.json b/package-lock.json index f5b57e561874d..1013a280dd203 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "23.3.1", + "puppeteer": "^23.10.2", "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", @@ -2580,16 +2580,16 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.4.0.tgz", - "integrity": "sha512-x8J1csfIygOwf6D6qUAZ0ASk3z63zPb7wkNeHRerCMh82qWKUrOgkuP005AJC8lDL6/evtXETGEJVcwykKT4/g==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.0.tgz", + "integrity": "sha512-jESwj3APl78YUWHf28s2EjL0OIxcvl1uLU6Ge68KQ9ZXNsekUcbdr9dCi6vEO8naXS18lWXCV56shVkPStzXSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "debug": "^4.3.6", + "debug": "^4.4.0", "extract-zip": "^2.0.1", "progress": "^2.0.3", - "proxy-agent": "^6.4.0", + "proxy-agent": "^6.5.0", "semver": "^7.6.3", "tar-fs": "^3.0.6", "unbzip2-stream": "^1.4.3", @@ -3105,6 +3105,16 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -3709,14 +3719,13 @@ } }, "node_modules/bare-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.3.0.tgz", - "integrity": "sha512-pVRWciewGUeCyKEuRxwv06M079r+fRjAQjBEK2P6OYGrO43O+Z0LrPZZEjlc4mB6C2RpZ9AxJ1s7NLEtOHO6eA==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", + "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "b4a": "^1.6.6", "streamx": "^2.20.0" } }, @@ -4083,9 +4092,9 @@ } }, "node_modules/chromium-bidi": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.5.tgz", - "integrity": "sha512-RuLrmzYrxSb0s9SgpB+QN5jJucPduZQ/9SIe76MDxYJuecPW5mxMdacJ1f4EtgiV+R0p3sCkznTMvH0MPGFqjA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.8.0.tgz", + "integrity": "sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4713,9 +4722,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -4901,9 +4910,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1330662", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1330662.tgz", - "integrity": "sha512-pzh6YQ8zZfz3iKlCvgzVCu22NdpZ8hNmwU6WnQjNVquh0A9iVosPtNLWDwaWVGyrntQlltPFztTMK5Cg6lfCuw==", + "version": "0.0.1367902", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", + "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", "dev": true, "license": "BSD-3-Clause" }, @@ -6519,21 +6528,6 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -6687,16 +6681,15 @@ } }, "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", "dev": true, "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" + "debug": "^4.3.4" }, "engines": { "node": ">= 14" @@ -7545,14 +7538,15 @@ "node": ">= 14" } }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { "node": ">= 14" @@ -9986,47 +9980,20 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", - "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", + "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", "dev": true, "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "get-uri": "^6.0.1", "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.5", + "https-proxy-agent": "^7.0.6", "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -10833,47 +10800,20 @@ } }, "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "^4.3.4", "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", + "https-proxy-agent": "^7.0.6", "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", + "pac-proxy-agent": "^7.1.0", "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "socks-proxy-agent": "^8.0.5" }, "engines": { "node": ">= 14" @@ -10931,18 +10871,18 @@ } }, "node_modules/puppeteer": { - "version": "23.3.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.3.1.tgz", - "integrity": "sha512-BxkuJyCv46ZKW8KEHiVMHgHEC89jKK9FffReWjbw1IfBUmNx+6JIZyqOtaJeSwyolTdVqqb5fiPiXflKeH3dKQ==", + "version": "23.10.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.2.tgz", + "integrity": "sha512-Iii2ZwdukXzEGeCxs2/GG8G+dbVCylnlBrTxZnMxLW/7w/ftoGq4VB2Bt1vwrbMIn1XwFqxYEWNEkZpIkcVfwg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.0", - "chromium-bidi": "0.6.5", + "@puppeteer/browsers": "2.6.0", + "chromium-bidi": "0.8.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1330662", - "puppeteer-core": "23.3.1", + "devtools-protocol": "0.0.1367902", + "puppeteer-core": "23.10.2", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10953,16 +10893,16 @@ } }, "node_modules/puppeteer-core": { - "version": "23.3.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.3.1.tgz", - "integrity": "sha512-m5gTpITEqqpSgAvPUI/Ch9igh5sNJV+BVVbqQMzqirRDVHDCkLGHaydEQZx2NZvSXdwCFrIV///cpSlX/uD0Sg==", + "version": "23.10.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.2.tgz", + "integrity": "sha512-SEPjEbhPxRlzjGRCs8skwfnzFQj6XrZZmoMz0JIQbanj0fBpQ5HOGgyQTyh4YOW33q+461plJc5GfsQ+ErVBgQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.4.0", - "chromium-bidi": "0.6.5", - "debug": "^4.3.7", - "devtools-protocol": "0.0.1330662", + "@puppeteer/browsers": "2.6.0", + "chromium-bidi": "0.8.0", + "debug": "^4.4.0", + "devtools-protocol": "0.0.1367902", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" }, @@ -11866,13 +11806,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -11880,19 +11820,6 @@ "node": ">= 14" } }, - "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", diff --git a/package.json b/package.json index 6ef9cc9cfb97f..56c44eaddce84 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "23.3.1", + "puppeteer": "^23.10.2", "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", From 85270b17e096e4305889c9306a0a4fac55f5e98d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 10 Dec 2024 19:59:54 +0100 Subject: [PATCH 136/338] Update Puppeteer to version 23.10.3 --- package-lock.json | 26 +++++++++++++------------- package.json | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1013a280dd203..0b1ee58b6b7fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,7 +50,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.10.2", + "puppeteer": "^23.10.3", "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", @@ -2580,9 +2580,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.0.tgz", - "integrity": "sha512-jESwj3APl78YUWHf28s2EjL0OIxcvl1uLU6Ge68KQ9ZXNsekUcbdr9dCi6vEO8naXS18lWXCV56shVkPStzXSQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz", + "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10871,18 +10871,18 @@ } }, "node_modules/puppeteer": { - "version": "23.10.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.2.tgz", - "integrity": "sha512-Iii2ZwdukXzEGeCxs2/GG8G+dbVCylnlBrTxZnMxLW/7w/ftoGq4VB2Bt1vwrbMIn1XwFqxYEWNEkZpIkcVfwg==", + "version": "23.10.3", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.3.tgz", + "integrity": "sha512-ODG+L9vCSPkQ1j+yDtNDdkSsWt2NXNrQO5C8MlwkYgE2hYnXdqVRbBpsHnoP7+EULJJKbWyR2Q4BdfohjQor3A==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.6.0", + "@puppeteer/browsers": "2.6.1", "chromium-bidi": "0.8.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1367902", - "puppeteer-core": "23.10.2", + "puppeteer-core": "23.10.3", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10893,13 +10893,13 @@ } }, "node_modules/puppeteer-core": { - "version": "23.10.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.2.tgz", - "integrity": "sha512-SEPjEbhPxRlzjGRCs8skwfnzFQj6XrZZmoMz0JIQbanj0fBpQ5HOGgyQTyh4YOW33q+461plJc5GfsQ+ErVBgQ==", + "version": "23.10.3", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.3.tgz", + "integrity": "sha512-7JG8klL2qHLyH8t2pOmM9zgykhaulUf7cxnmmqupjdwGfNMiGaYehQka20iUB9R/fwVyG8mFMZcsmw1FHrgKVw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.6.0", + "@puppeteer/browsers": "2.6.1", "chromium-bidi": "0.8.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1367902", diff --git a/package.json b/package.json index 56c44eaddce84..ba24d866db7ae 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.10.2", + "puppeteer": "^23.10.3", "stylelint": "^16.11.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", From 845ac82c0941d5720d3372bbe7a8cae17f289796 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 28 Nov 2024 17:42:13 +0100 Subject: [PATCH 137/338] [Editor] Improve drawing on a touch screen. - it's now possible to start a drawing with a pen and use fingers to zoom or scroll without interacting with the current drawing; - it's now possible to draw with a finger and them zoom with two fingers. --- src/display/editor/annotation_editor_layer.js | 6 +- src/display/editor/draw.js | 194 ++++++++++++++---- src/display/editor/drawers/inkdraw.js | 6 + web/annotation_editor_layer_builder.css | 1 - 4 files changed, 162 insertions(+), 45 deletions(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 6ca2a79ec1d63..8a775a940f93f 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -422,9 +422,9 @@ class AnnotationEditorLayer { this.div.addEventListener("pointerdown", this.pointerdown.bind(this), { signal, }); - this.div.addEventListener("pointerup", this.pointerup.bind(this), { - signal, - }); + const pointerup = this.pointerup.bind(this); + this.div.addEventListener("pointerup", pointerup, { signal }); + this.div.addEventListener("pointercancel", pointerup, { signal }); } disableClick() { diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index d5f1c4bb02835..e2fed072a0310 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -69,11 +69,21 @@ class DrawingEditor extends AnnotationEditor { static _currentDrawId = -1; - static _currentDraw = null; + static _currentParent = null; - static _currentDrawingOptions = null; + static #currentDraw = null; - static _currentParent = null; + static #currentDrawingAC = null; + + static #currentDrawingOptions = null; + + static #currentPointerId = NaN; + + static #currentPointerType = null; + + static #currentPointerIds = null; + + static #currentMoveTimestamp = NaN; static _INNER_MARGIN = 3; @@ -168,7 +178,7 @@ class DrawingEditor extends AnnotationEditor { this._defaultDrawingOptions.updateProperty(propertyName, value); } if (this._currentParent) { - this._currentDraw.updateProperty(propertyName, value); + DrawingEditor.#currentDraw.updateProperty(propertyName, value); this._currentParent.drawLayer.updateProperties( this._currentDrawId, this._defaultDrawingOptions.toSVGProperties() @@ -639,32 +649,81 @@ class DrawingEditor extends AnnotationEditor { unreachable("Not implemented"); } - static startDrawing( - parent, - uiManager, - _isLTR, - { target, offsetX: x, offsetY: y } - ) { + static startDrawing(parent, uiManager, _isLTR, event) { + // The _currentPointerType is set when the user starts an empty drawing + // session. If, in the same drawing session, the user starts using a + // different type of pointer (e.g. a pen and then a finger), we just return. + // + // The _currentPointerId and _currentPointerIds are used to keep track of + // the pointers with a same type (e.g. two fingers). If the user starts to + // draw with a finger and then uses a second finger, we just stop the + // current drawing and let the user zoom the document. + + const { target, offsetX: x, offsetY: y, pointerId, pointerType } = event; + if ( + DrawingEditor.#currentPointerType && + DrawingEditor.#currentPointerType !== pointerType + ) { + return; + } + const { viewport: { rotation }, } = parent; const { width: parentWidth, height: parentHeight } = target.getBoundingClientRect(); - const ac = new AbortController(); + + const ac = (DrawingEditor.#currentDrawingAC = new AbortController()); const signal = parent.combinedSignal(ac); + DrawingEditor.#currentPointerId ||= pointerId; + DrawingEditor.#currentPointerType ??= pointerType; + window.addEventListener( "pointerup", e => { - ac.abort(); - parent.toggleDrawing(true); - this._endDraw(e); + if (DrawingEditor.#currentPointerId === e.pointerId) { + this._endDraw(e); + } else { + DrawingEditor.#currentPointerIds?.delete(e.pointerId); + } + }, + { signal } + ); + window.addEventListener( + "pointercancel", + e => { + if (DrawingEditor.#currentPointerId === e.pointerId) { + this._currentParent.endDrawingSession(); + } else { + DrawingEditor.#currentPointerIds?.delete(e.pointerId); + } }, { signal } ); window.addEventListener( "pointerdown", - stopEvent /* Avoid to have undesired clicks during drawing. */, + e => { + if (DrawingEditor.#currentPointerType !== e.pointerType) { + // For example, we started with a pen and the user + // is now using a finger. + return; + } + + // For example, the user is using a second finger. + (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId); + + // The first finger created a first point and a second finger just + // started, so we stop the drawing and remove this only point. + if (DrawingEditor.#currentDraw.isCancellable()) { + DrawingEditor.#currentDraw.removeLastElement(); + if (DrawingEditor.#currentDraw.isEmpty()) { + this._currentParent.endDrawingSession(/* isAborted = */ true); + } else { + this._endDraw(null); + } + } + }, { capture: true, passive: false, @@ -675,54 +734,114 @@ class DrawingEditor extends AnnotationEditor { target.addEventListener("pointermove", this._drawMove.bind(this), { signal, }); + target.addEventListener( + "touchmove", + e => { + if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) { + // This move event is used to draw so we don't want to scroll. + stopEvent(e); + } + }, + { signal } + ); parent.toggleDrawing(); uiManager._editorUndoBar?.hide(); - if (this._currentDraw) { + if (DrawingEditor.#currentDraw) { parent.drawLayer.updateProperties( this._currentDrawId, - this._currentDraw.startNew(x, y, parentWidth, parentHeight, rotation) + DrawingEditor.#currentDraw.startNew( + x, + y, + parentWidth, + parentHeight, + rotation + ) ); return; } uiManager.updateUIForDefaultProperties(this); - this._currentDraw = this.createDrawerInstance( + DrawingEditor.#currentDraw = this.createDrawerInstance( x, y, parentWidth, parentHeight, rotation ); - this._currentDrawingOptions = this.getDefaultDrawingOptions(); + DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions(); this._currentParent = parent; ({ id: this._currentDrawId } = parent.drawLayer.draw( this._mergeSVGProperties( - this._currentDrawingOptions.toSVGProperties(), - this._currentDraw.defaultSVGProperties + DrawingEditor.#currentDrawingOptions.toSVGProperties(), + DrawingEditor.#currentDraw.defaultSVGProperties ), /* isPathUpdatable = */ true, /* hasClip = */ false )); } - static _drawMove({ offsetX, offsetY }) { + static _drawMove(event) { + DrawingEditor.#currentMoveTimestamp = -1; + if (!DrawingEditor.#currentDraw) { + return; + } + const { offsetX, offsetY, pointerId } = event; + + if (DrawingEditor.#currentPointerId !== pointerId) { + return; + } + if (DrawingEditor.#currentPointerIds?.size >= 1) { + // The user is using multiple fingers and the first one is moving. + this._endDraw(event); + return; + } this._currentParent.drawLayer.updateProperties( this._currentDrawId, - this._currentDraw.add(offsetX, offsetY) + DrawingEditor.#currentDraw.add(offsetX, offsetY) ); + // We track the timestamp to know if the touchmove event is used to draw. + DrawingEditor.#currentMoveTimestamp = event.timeStamp; + stopEvent(event); + } + + static _cleanup(all) { + if (all) { + this._currentDrawId = -1; + this._currentParent = null; + DrawingEditor.#currentDraw = null; + DrawingEditor.#currentDrawingOptions = null; + DrawingEditor.#currentPointerType = null; + DrawingEditor.#currentMoveTimestamp = NaN; + } + + if (DrawingEditor.#currentDrawingAC) { + DrawingEditor.#currentDrawingAC.abort(); + DrawingEditor.#currentDrawingAC = null; + DrawingEditor.#currentPointerId = NaN; + DrawingEditor.#currentPointerIds = null; + } } - static _endDraw({ offsetX, offsetY }) { + static _endDraw(event) { const parent = this._currentParent; - parent.drawLayer.updateProperties( - this._currentDrawId, - this._currentDraw.end(offsetX, offsetY) - ); + if (!parent) { + return; + } + + parent.toggleDrawing(true); + this._cleanup(false); + + if (event) { + parent.drawLayer.updateProperties( + this._currentDrawId, + DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY) + ); + } if (this.supportMultipleDrawings) { - const draw = this._currentDraw; + const draw = DrawingEditor.#currentDraw; const drawId = this._currentDrawId; const lastElement = draw.getLastElement(); parent.addCommands({ @@ -753,7 +872,7 @@ class DrawingEditor extends AnnotationEditor { parent.toggleDrawing(true); parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP); - if (!this._currentDraw.isEmpty()) { + if (!DrawingEditor.#currentDraw.isEmpty()) { const { pageDimensions: [pageWidth, pageHeight], scale, @@ -764,32 +883,25 @@ class DrawingEditor extends AnnotationEditor { false, { drawId: this._currentDrawId, - drawOutlines: this._currentDraw.getOutlines( + drawOutlines: DrawingEditor.#currentDraw.getOutlines( pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN ), - drawingOptions: this._currentDrawingOptions, + drawingOptions: DrawingEditor.#currentDrawingOptions, mustBeCommitted: !isAborted, } ); - this._cleanup(); + this._cleanup(true); return editor; } parent.drawLayer.remove(this._currentDrawId); - this._cleanup(); + this._cleanup(true); return null; } - static _cleanup() { - this._currentDrawId = -1; - this._currentDraw = null; - this._currentDrawingOptions = null; - this._currentParent = null; - } - /** * Create the drawing options. * @param {Object} _data diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index 8e0314c7576c7..b746f1a536cc4 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -74,6 +74,12 @@ class InkDrawOutliner { return !this.#lines || this.#lines.length === 0; } + isCancellable() { + // The user a second finger after drawing 5 points: it's small enough + // to not be a real drawing. + return this.#points.length <= 10; + } + add(x, y) { // The point is in canvas coordinates which means that there is no rotation. // It's the same as parent coordinates. diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index 5edf1639b43ad..d778c7e83d2d8 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -156,7 +156,6 @@ .annotationEditorLayer.inkEditing { cursor: var(--editorInk-editing-cursor); - touch-action: none; } .annotationEditorLayer .draw { From bd8b80f44362b4e49515273a5f39ef04d0145184 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 11 Dec 2024 13:49:48 +0100 Subject: [PATCH 138/338] [Editor] Avoid to focus an existing editor when enabling the layer It fixes #18911. --- src/display/editor/annotation_editor_layer.js | 7 ++- src/display/editor/draw.js | 4 +- src/display/editor/editor.js | 3 +- src/display/editor/freetext.js | 6 +- src/display/editor/highlight.js | 6 +- src/display/editor/stamp.js | 6 +- test/integration/highlight_editor_spec.mjs | 56 ++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue18911.pdf | Bin 0 -> 1018050 bytes 9 files changed, 79 insertions(+), 10 deletions(-) create mode 100755 test/pdfs/issue18911.pdf diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 8a775a940f93f..7d718f7e53ce8 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -74,6 +74,8 @@ class AnnotationEditorLayer { #isDisabling = false; + #isEnabling = false; + #drawingAC = null; #focusedElement = null; @@ -229,6 +231,7 @@ class AnnotationEditorLayer { * editor creation. */ async enable() { + this.#isEnabling = true; this.div.tabIndex = 0; this.togglePointerEvents(true); const annotationElementIds = new Set(); @@ -242,6 +245,7 @@ class AnnotationEditorLayer { } if (!this.#annotationLayer) { + this.#isEnabling = false; return; } @@ -262,6 +266,7 @@ class AnnotationEditorLayer { this.addOrRebuild(editor); editor.enableEditing(); } + this.#isEnabling = false; } /** @@ -508,7 +513,7 @@ class AnnotationEditorLayer { // The editor will be correctly moved into the DOM (see fixAndSetPosition). editor.fixAndSetPosition(); - editor.onceAdded(); + editor.onceAdded(/* focus = */ !this.#isEnabling); this.#uiManager.addToAnnotationStorage(editor); editor._reportTelemetry(editor.telemetryInitialData); } diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index e2fed072a0310..a2f5c1de91da4 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -345,7 +345,7 @@ class DrawingEditor extends AnnotationEditor { } /** @inheritdoc */ - onceAdded() { + onceAdded(focus) { if (!this.annotationElementId) { this.parent.addUndoableEditor(this); } @@ -354,7 +354,7 @@ class DrawingEditor extends AnnotationEditor { this.#mustBeCommitted = false; this.commit(); this.parent.setSelected(this); - if (this.isOnScreen) { + if (focus && this.isOnScreen) { this.div.focus(); } } diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 2d61a2850fc32..aa5d6b175487b 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -1367,8 +1367,9 @@ class AnnotationEditor { /** * Executed once this editor has been rendered. + * @param {boolean} focus - true if the editor should be focused. */ - onceAdded() {} + onceAdded(focus) {} /** * Check if the editor contains something. diff --git a/src/display/editor/freetext.js b/src/display/editor/freetext.js index 0e1f1d435f63c..1b31fbd8a6785 100644 --- a/src/display/editor/freetext.js +++ b/src/display/editor/freetext.js @@ -363,13 +363,15 @@ class FreeTextEditor extends AnnotationEditor { } /** @inheritdoc */ - onceAdded() { + onceAdded(focus) { if (this.width) { // The editor was created in using ctrl+c. return; } this.enableEditMode(); - this.editorDiv.focus(); + if (focus) { + this.editorDiv.focus(); + } if (this._initialOptions?.isCentered) { this.center(); } diff --git a/src/display/editor/highlight.js b/src/display/editor/highlight.js index 52b139d2a2fd9..c361313a7a422 100644 --- a/src/display/editor/highlight.js +++ b/src/display/editor/highlight.js @@ -439,11 +439,13 @@ class HighlightEditor extends AnnotationEditor { } /** @inheritdoc */ - onceAdded() { + onceAdded(focus) { if (!this.annotationElementId) { this.parent.addUndoableEditor(this); } - this.div.focus(); + if (focus) { + this.div.focus(); + } } /** @inheritdoc */ diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index b727a0bafcc0b..d646da22fac75 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -338,9 +338,11 @@ class StampEditor extends AnnotationEditor { } /** @inheritdoc */ - onceAdded() { + onceAdded(focus) { this._isDraggable = true; - this.div.focus(); + if (focus) { + this.div.focus(); + } } /** @inheritdoc */ diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 19bcf30ca45c0..1584accb38150 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -37,6 +37,7 @@ import { waitForAnnotationModeChanged, waitForSelectedEditor, waitForSerialized, + waitForTimeout, } from "./test_utils.mjs"; import { fileURLToPath } from "url"; import fs from "fs"; @@ -2613,4 +2614,59 @@ describe("Highlight Editor", () => { ); }); }); + + describe("Highlight mustn't trigger a scroll when edited", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue18911.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that there is no scroll because of focus", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToHighlight(page); + + const page4Selector = ".page[data-page-number = '4']"; + const page5Selector = ".page[data-page-number = '5']"; + await scrollIntoView(page, page4Selector); + await page.waitForSelector(`${page5Selector} .annotationEditorLayer`); + + // When moving to page 4, the highlight editor mustn't be focused (it + // was causing a scroll to page 5). + // So here we're waiting a bit and checking that the page is still 4. + // eslint-disable-next-line no-restricted-syntax + await waitForTimeout(100); + + // Get the length of the intersection between two ranges. + const inter = ([a, b], [c, d]) => + d < a || b < c ? 0 : Math.min(b, d) - Math.max(a, c); + + const page4Rect = await getRect(page, page4Selector); + const page5Rect = await getRect(page, page5Selector); + const viewportRect = await getRect(page, "#viewerContainer"); + const viewportRange = [ + viewportRect.y, + viewportRect.y + viewportRect.height, + ]; + + const interPage4 = inter( + [page4Rect.y, page4Rect.y + page4Rect.height], + viewportRange + ); + const interPage5 = inter( + [page5Rect.y, page5Rect.y + page5Rect.height], + viewportRange + ); + expect(interPage4) + .withContext(`In ${browserName}`) + .toBeGreaterThan(0.5 * interPage5); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 5608e0df93620..fd2cc91dc036e 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -689,3 +689,4 @@ !inks.pdf !inks_basic.pdf !issue19182.pdf +!issue18911.pdf diff --git a/test/pdfs/issue18911.pdf b/test/pdfs/issue18911.pdf new file mode 100755 index 0000000000000000000000000000000000000000..9e3aec3a856eb8d691498b028e96e489c4f4e427 GIT binary patch literal 1018050 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�v_)@^!rDg3@1D%o#Hk5G-tYeQE;I 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

v7R`Taz^CF$7 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%0Dbq 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

!H1ZAV|(6is8=)Ne!ez0@sCsIv8hxM`v%I^cdj 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 z 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%0D8bGnWEX=&1U%Q%cSAF* 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

tnorth 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

%hSe#a|9It3t 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 literal 0 HcmV?d00001 From 8a35caaf3d9baa9ae03404dbd27a330f92b11013 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 11 Dec 2024 16:41:35 +0100 Subject: [PATCH 139/338] Move the pinch stuff in its own file in order to use for editors --- src/display/touch_manager.js | 192 +++++++++++++++++++++++++++++++++++ src/pdf.js | 2 + test/unit/pdf_spec.js | 2 + web/app.js | 158 +++++++--------------------- web/pdfjs.js | 2 + 5 files changed, 233 insertions(+), 123 deletions(-) create mode 100644 src/display/touch_manager.js diff --git a/src/display/touch_manager.js b/src/display/touch_manager.js new file mode 100644 index 0000000000000..00b717c5bdd9f --- /dev/null +++ b/src/display/touch_manager.js @@ -0,0 +1,192 @@ +/* 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. + */ + +import { shadow } from "../shared/util.js"; + +class TouchManager { + #container; + + #isPinching = false; + + #isPinchingStopped = null; + + #isPinchingDisabled; + + #onPinching; + + #onPinchEnd; + + #signal; + + #touchInfo = null; + + #touchManagerAC; + + #touchMoveAC = null; + + constructor({ + container, + isPinchingDisabled = null, + isPinchingStopped = null, + onPinching = null, + onPinchEnd = null, + signal, + }) { + this.#container = container; + this.#isPinchingStopped = isPinchingStopped; + this.#isPinchingDisabled = isPinchingDisabled; + this.#onPinching = onPinching; + this.#onPinchEnd = onPinchEnd; + this.#touchManagerAC = new AbortController(); + this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]); + + container.addEventListener("touchstart", this.#onTouchStart.bind(this), { + passive: false, + signal: this.#signal, + }); + } + + get MIN_TOUCH_DISTANCE_TO_PINCH() { + // The 35 is coming from: + // https://searchfox.org/mozilla-central/source/gfx/layers/apz/src/GestureEventListener.cpp#36 + // + // The properties TouchEvent::screenX/Y are in screen CSS pixels: + // https://developer.mozilla.org/en-US/docs/Web/API/Touch/screenX#examples + // MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels. + return shadow( + this, + "MIN_TOUCH_DISTANCE_TO_PINCH", + 35 / (window.devicePixelRatio || 1) + ); + } + + #onTouchStart(evt) { + if (this.#isPinchingDisabled?.() || evt.touches.length < 2) { + return; + } + + if (!this.#touchMoveAC) { + this.#touchMoveAC = new AbortController(); + const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]); + const container = this.#container; + const opt = { signal, passive: false }; + container.addEventListener( + "touchmove", + this.#onTouchMove.bind(this), + opt + ); + container.addEventListener("touchend", this.#onTouchEnd.bind(this), opt); + container.addEventListener( + "touchcancel", + this.#onTouchEnd.bind(this), + opt + ); + } + + evt.preventDefault(); + + if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) { + this.#touchInfo = null; + return; + } + + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + this.#touchInfo = { + touch0X: touch0.screenX, + touch0Y: touch0.screenY, + touch1X: touch1.screenX, + touch1Y: touch1.screenY, + }; + } + + #onTouchMove(evt) { + if (!this.#touchInfo || evt.touches.length !== 2) { + return; + } + + let [touch0, touch1] = evt.touches; + if (touch0.identifier > touch1.identifier) { + [touch0, touch1] = [touch1, touch0]; + } + const { screenX: screen0X, screenY: screen0Y } = touch0; + const { screenX: screen1X, screenY: screen1Y } = touch1; + const touchInfo = this.#touchInfo; + const { + touch0X: pTouch0X, + touch0Y: pTouch0Y, + touch1X: pTouch1X, + touch1Y: pTouch1Y, + } = touchInfo; + + const prevGapX = pTouch1X - pTouch0X; + const prevGapY = pTouch1Y - pTouch0Y; + const currGapX = screen1X - screen0X; + const currGapY = screen1Y - screen0Y; + + const distance = Math.hypot(currGapX, currGapY) || 1; + const pDistance = Math.hypot(prevGapX, prevGapY) || 1; + if ( + !this.#isPinching && + Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH + ) { + return; + } + + touchInfo.touch0X = screen0X; + touchInfo.touch0Y = screen0Y; + touchInfo.touch1X = screen1X; + touchInfo.touch1Y = screen1Y; + + evt.preventDefault(); + + if (!this.#isPinching) { + // Start pinching. + this.#isPinching = true; + + // We return here else the first pinch is a bit too much + return; + } + + const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2]; + this.#onPinching?.(origin, pDistance, distance); + } + + #onTouchEnd(evt) { + this.#touchMoveAC.abort(); + this.#touchMoveAC = null; + + if (!this.#touchInfo) { + return; + } + + if (this.#isPinching) { + this.#onPinchEnd?.(); + this.#isPinching = false; + } + + evt.preventDefault(); + this.#touchInfo = null; + } + + destroy() { + this.#touchManagerAC?.abort(); + this.#touchManagerAC = null; + } +} + +export { TouchManager }; diff --git a/src/pdf.js b/src/pdf.js index b94e30193af62..94d7547f0f832 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -72,6 +72,7 @@ import { DrawLayer } from "./display/draw_layer.js"; import { GlobalWorkerOptions } from "./display/worker_options.js"; import { HighlightOutliner } from "./display/editor/drawers/highlight.js"; import { TextLayer } from "./display/text_layer.js"; +import { TouchManager } from "./display/touch_manager.js"; import { XfaLayer } from "./display/xfa_layer.js"; /* eslint-disable-next-line no-unused-vars */ @@ -127,6 +128,7 @@ export { shadow, stopEvent, TextLayer, + TouchManager, UnexpectedResponseException, Util, VerbosityLevel, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 35681a52bdcca..d4a32c48a22ce 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -63,6 +63,7 @@ import { DOMSVGFactory } from "../../src/display/svg_factory.js"; import { DrawLayer } from "../../src/display/draw_layer.js"; import { GlobalWorkerOptions } from "../../src/display/worker_options.js"; import { TextLayer } from "../../src/display/text_layer.js"; +import { TouchManager } from "../../src/display/touch_manager.js"; import { XfaLayer } from "../../src/display/xfa_layer.js"; const expectedAPI = Object.freeze({ @@ -105,6 +106,7 @@ const expectedAPI = Object.freeze({ shadow, stopEvent, TextLayer, + TouchManager, UnexpectedResponseException, Util, VerbosityLevel, diff --git a/web/app.js b/web/app.js index d7ed30ef7ad2d..0e8ebaee0de4b 100644 --- a/web/app.js +++ b/web/app.js @@ -54,6 +54,7 @@ import { PDFWorker, shadow, stopEvent, + TouchManager, UnexpectedResponseException, version, } from "pdfjs-lib"; @@ -94,14 +95,6 @@ import { ViewHistory } from "./view_history.js"; const FORCE_PAGES_LOADED_TIMEOUT = 10000; // ms -// The 35 is coming from: -// https://searchfox.org/mozilla-central/source/gfx/layers/apz/src/GestureEventListener.cpp#36 -// -// The properties TouchEvent::screenX/Y are in screen CSS pixels: -// https://developer.mozilla.org/en-US/docs/Web/API/Touch/screenX#examples -// MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels. -const MIN_TOUCH_DISTANCE_TO_PINCH = 35 / (window.devicePixelRatio || 1); - const ViewOnLoad = { UNKNOWN: -1, PREVIOUS: 0, // Default value. @@ -182,14 +175,13 @@ const PDFViewerApplication = { _saveInProgress: false, _wheelUnusedTicks: 0, _wheelUnusedFactor: 1, + _touchManager: null, _touchUnusedTicks: 0, _touchUnusedFactor: 1, _PDFBug: null, _hasAnnotationEditors: false, _title: document.title, _printAnnotationStoragePromise: null, - _touchInfo: null, - _isPinching: false, _isCtrlKeyDown: false, _caretBrowsing: null, _isScrolling: false, @@ -827,6 +819,29 @@ const PDFViewerApplication = { this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE; }, + touchPinchCallback(origin, prevDistance, distance) { + if (this.supportsPinchToZoom) { + const newScaleFactor = this._accumulateFactor( + this.pdfViewer.currentScale, + distance / prevDistance, + "_touchUnusedFactor" + ); + this.updateZoom(null, newScaleFactor, origin); + } else { + const PIXELS_PER_LINE_SCALE = 30; + const ticks = this._accumulateTicks( + (distance - prevDistance) / PIXELS_PER_LINE_SCALE, + "_touchUnusedTicks" + ); + this.updateZoom(ticks, null, origin); + } + }, + + touchPinchEndCallback() { + this._touchUnusedTicks = 0; + this._touchUnusedFactor = 1; + }, + get pagesCount() { return this.pdfDocument ? this.pdfDocument.numPages : 0; }, @@ -2045,6 +2060,15 @@ const PDFViewerApplication = { _windowAbortController: { signal }, } = this; + this._touchManager = new TouchManager({ + container: window, + isPinchingDisabled: () => this.pdfViewer.isInPresentationMode, + isPinchingStopped: () => this.overlayManager?.active, + onPinching: this.touchPinchCallback.bind(this), + onPinchEnd: this.touchPinchEndCallback.bind(this), + signal, + }); + function addWindowResolutionChange(evt = null) { if (evt) { pdfViewer.refresh(); @@ -2063,18 +2087,6 @@ const PDFViewerApplication = { passive: false, signal, }); - window.addEventListener("touchstart", onTouchStart.bind(this), { - passive: false, - signal, - }); - window.addEventListener("touchmove", onTouchMove.bind(this), { - passive: false, - signal, - }); - window.addEventListener("touchend", onTouchEnd.bind(this), { - passive: false, - signal, - }); window.addEventListener("click", onClick.bind(this), { signal }); window.addEventListener("keydown", onKeyDown.bind(this), { signal }); window.addEventListener("keyup", onKeyUp.bind(this), { signal }); @@ -2173,6 +2185,7 @@ const PDFViewerApplication = { unbindWindowEvents() { this._windowAbortController?.abort(); this._windowAbortController = null; + this._touchManager = null; }, /** @@ -2653,107 +2666,6 @@ function onWheel(evt) { } } -function onTouchStart(evt) { - if (this.pdfViewer.isInPresentationMode || evt.touches.length < 2) { - return; - } - evt.preventDefault(); - - if (evt.touches.length !== 2 || this.overlayManager.active) { - this._touchInfo = null; - return; - } - - let [touch0, touch1] = evt.touches; - if (touch0.identifier > touch1.identifier) { - [touch0, touch1] = [touch1, touch0]; - } - this._touchInfo = { - touch0X: touch0.screenX, - touch0Y: touch0.screenY, - touch1X: touch1.screenX, - touch1Y: touch1.screenY, - }; -} - -function onTouchMove(evt) { - if (!this._touchInfo || evt.touches.length !== 2) { - return; - } - - const { pdfViewer, _touchInfo, supportsPinchToZoom } = this; - let [touch0, touch1] = evt.touches; - if (touch0.identifier > touch1.identifier) { - [touch0, touch1] = [touch1, touch0]; - } - const { screenX: screen0X, screenY: screen0Y } = touch0; - const { screenX: screen1X, screenY: screen1Y } = touch1; - const { - touch0X: pTouch0X, - touch0Y: pTouch0Y, - touch1X: pTouch1X, - touch1Y: pTouch1Y, - } = _touchInfo; - - const prevGapX = pTouch1X - pTouch0X; - const prevGapY = pTouch1Y - pTouch0Y; - const currGapX = screen1X - screen0X; - const currGapY = screen1Y - screen0Y; - - const distance = Math.hypot(currGapX, currGapY) || 1; - const pDistance = Math.hypot(prevGapX, prevGapY) || 1; - if ( - !this._isPinching && - Math.abs(pDistance - distance) <= MIN_TOUCH_DISTANCE_TO_PINCH - ) { - return; - } - - _touchInfo.touch0X = screen0X; - _touchInfo.touch0Y = screen0Y; - _touchInfo.touch1X = screen1X; - _touchInfo.touch1Y = screen1Y; - - evt.preventDefault(); - - if (!this._isPinching) { - // Start pinching. - this._isPinching = true; - - // We return here else the first pinch is a bit too much - return; - } - - const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2]; - if (supportsPinchToZoom) { - const newScaleFactor = this._accumulateFactor( - pdfViewer.currentScale, - distance / pDistance, - "_touchUnusedFactor" - ); - this.updateZoom(null, newScaleFactor, origin); - } else { - const PIXELS_PER_LINE_SCALE = 30; - const ticks = this._accumulateTicks( - (distance - pDistance) / PIXELS_PER_LINE_SCALE, - "_touchUnusedTicks" - ); - this.updateZoom(ticks, null, origin); - } -} - -function onTouchEnd(evt) { - if (!this._touchInfo) { - return; - } - - evt.preventDefault(); - this._touchInfo = null; - this._touchUnusedTicks = 0; - this._touchUnusedFactor = 1; - this._isPinching = false; -} - function closeSecondaryToolbar(evt) { if (!this.secondaryToolbar?.isOpen) { return; diff --git a/web/pdfjs.js b/web/pdfjs.js index 2203abc42498c..a9fe6ca9ac4a2 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -53,6 +53,7 @@ const { shadow, stopEvent, TextLayer, + TouchManager, UnexpectedResponseException, Util, VerbosityLevel, @@ -100,6 +101,7 @@ export { shadow, stopEvent, TextLayer, + TouchManager, UnexpectedResponseException, Util, VerbosityLevel, From 97f024a2e013251a53a0be3fe8998a91848bf184 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 12 Dec 2024 15:05:22 +0100 Subject: [PATCH 140/338] [Editor] Add the ability to resize an editor in using a pinch gesture --- src/display/editor/editor.js | 124 +++++++++++++++++++++++++++++++---- src/display/editor/tools.js | 4 +- src/display/touch_manager.js | 15 +++-- web/app.js | 1 + web/pdf_viewer.js | 8 ++- 5 files changed, 130 insertions(+), 22 deletions(-) diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index aa5d6b175487b..54703a4d08c5d 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -26,6 +26,7 @@ import { FeatureTest, shadow, unreachable } from "../../shared/util.js"; import { noContextMenu, stopEvent } from "../display_utils.js"; import { AltText } from "./alt_text.js"; import { EditorToolbar } from "./toolbar.js"; +import { TouchManager } from "../touch_manager.js"; /** * @typedef {Object} AnnotationEditorParameters @@ -82,6 +83,8 @@ class AnnotationEditor { #telemetryTimeouts = null; + #touchManager = null; + _editToolbar = null; _initialOptions = Object.create(null); @@ -864,6 +867,13 @@ class AnnotationEditor { }); } + static _round(x) { + // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition. + // Without rounding, the positions of the corners other than the top left + // one can be slightly wrong. + return Math.round(x * 10000) / 10000; + } + #resizerPointermove(name, event) { const [parentWidth, parentHeight] = this.parentDimensions; const savedX = this.x; @@ -873,10 +883,6 @@ class AnnotationEditor { const minWidth = AnnotationEditor.MIN_SIZE / parentWidth; const minHeight = AnnotationEditor.MIN_SIZE / parentHeight; - // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition. - // Without rounding, the positions of the corners other than the top left - // one can be slightly wrong. - const round = x => Math.round(x * 10000) / 10000; const rotationMatrix = this.#getRotationMatrix(this.rotation); const transf = (x, y) => [ rotationMatrix[0] * x + rotationMatrix[2] * y, @@ -936,8 +942,8 @@ class AnnotationEditor { const point = getPoint(savedWidth, savedHeight); const oppositePoint = getOpposite(savedWidth, savedHeight); let transfOppositePoint = transf(...oppositePoint); - const oppositeX = round(savedX + transfOppositePoint[0]); - const oppositeY = round(savedY + transfOppositePoint[1]); + const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]); + const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]); let ratioX = 1; let ratioY = 1; @@ -990,8 +996,8 @@ class AnnotationEditor { ) / savedHeight; } - const newWidth = round(savedWidth * ratioX); - const newHeight = round(savedHeight * ratioY); + const newWidth = AnnotationEditor._round(savedWidth * ratioX); + const newHeight = AnnotationEditor._round(savedHeight * ratioY); transfOppositePoint = transf(...getOpposite(newWidth, newHeight)); const newX = oppositeX - transfOppositePoint[0]; const newY = oppositeY - transfOppositePoint[1]; @@ -1142,11 +1148,92 @@ class AnnotationEditor { bindEvents(this, this.div, ["pointerdown"]); + if (this.isResizable && this._uiManager._supportsPinchToZoom) { + this.#touchManager ||= new TouchManager({ + container: this.div, + isPinchingDisabled: () => !this.isSelected, + onPinchStart: this.#touchPinchStartCallback.bind(this), + onPinching: this.#touchPinchCallback.bind(this), + onPinchEnd: this.#touchPinchEndCallback.bind(this), + signal: this._uiManager._signal, + }); + } + this._uiManager._editorUndoBar?.hide(); return this.div; } + #touchPinchStartCallback() { + this.#savedDimensions = { + savedX: this.x, + savedY: this.y, + savedWidth: this.width, + savedHeight: this.height, + }; + this.#altText?.toggle(false); + this.parent.togglePointerEvents(false); + } + + #touchPinchCallback(_origin, prevDistance, distance) { + // Slightly slow down the zooming because the editor could be small and the + // user could have difficulties to rescale it as they want. + const slowDownFactor = 0.7; + let factor = + slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor; + if (factor === 1) { + return; + } + + const rotationMatrix = this.#getRotationMatrix(this.rotation); + const transf = (x, y) => [ + rotationMatrix[0] * x + rotationMatrix[2] * y, + rotationMatrix[1] * x + rotationMatrix[3] * y, + ]; + + // The center of the editor is the fixed point. + const [parentWidth, parentHeight] = this.parentDimensions; + const savedX = this.x; + const savedY = this.y; + const savedWidth = this.width; + const savedHeight = this.height; + + const minWidth = AnnotationEditor.MIN_SIZE / parentWidth; + const minHeight = AnnotationEditor.MIN_SIZE / parentHeight; + factor = Math.max( + Math.min(factor, 1 / savedWidth, 1 / savedHeight), + minWidth / savedWidth, + minHeight / savedHeight + ); + const newWidth = AnnotationEditor._round(savedWidth * factor); + const newHeight = AnnotationEditor._round(savedHeight * factor); + if (newWidth === savedWidth && newHeight === savedHeight) { + return; + } + + this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight]; + const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2); + const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]); + const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]); + const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2); + + this.x = centerX - newTransfCenterPoint[0]; + this.y = centerY - newTransfCenterPoint[1]; + this.width = newWidth; + this.height = newHeight; + + this.setDims(parentWidth * newWidth, parentHeight * newHeight); + this.fixAndSetPosition(); + + this._onResizing(); + } + + #touchPinchEndCallback() { + this.#altText?.toggle(true); + this.parent.togglePointerEvents(true); + this.#addResizeToUndoStack(); + } + /** * Onpointerdown callback. * @param {PointerEvent} event @@ -1158,7 +1245,6 @@ class AnnotationEditor { event.preventDefault(); return; } - this.#hasBeenClicked = true; if (this._isDraggable) { @@ -1189,6 +1275,7 @@ class AnnotationEditor { #setUpDragSession(event) { const { isSelected } = this; this._uiManager.setUpDragSession(); + let hasDraggingStarted = false; const ac = new AbortController(); const signal = this._uiManager.combinedSignal(ac); @@ -1201,6 +1288,9 @@ class AnnotationEditor { if (!this._uiManager.endDragSession()) { this.#selectOnPointerEvent(e); } + if (hasDraggingStarted) { + this._onStopDragging(); + } }; if (isSelected) { @@ -1211,6 +1301,10 @@ class AnnotationEditor { window.addEventListener( "pointermove", e => { + if (!hasDraggingStarted) { + hasDraggingStarted = true; + this._onStartDragging(); + } const { clientX: x, clientY: y, pointerId } = e; if (pointerId !== this.#dragPointerId) { stopEvent(e); @@ -1235,11 +1329,14 @@ class AnnotationEditor { "pointerdown", // If the user drags with one finger and then clicks with another. e => { - if (e.isPrimary && e.pointerType === this.#dragPointerType) { + if (e.pointerType === this.#dragPointerType) { + // We've a pinch to zoom session. // We cannot have two primaries at the same time. // It's possible to be in this state with Firefox and Gnome when // trying to drag with three fingers (see bug 1933716). - cancelDrag(e); + if (this.#touchManager || e.isPrimary) { + cancelDrag(e); + } } stopEvent(e); }, @@ -1247,12 +1344,9 @@ class AnnotationEditor { ); } - this._onStartDragging(); - const pointerUpCallback = e => { if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) { cancelDrag(e); - this._onStopDragging(); return; } stopEvent(e); @@ -1557,6 +1651,8 @@ class AnnotationEditor { this.#telemetryTimeouts = null; } this.parent = null; + this.#touchManager?.destroy(); + this.#touchManager = null; } /** diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index f4a22e5604cb0..d005a5d2bc32a 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -834,7 +834,8 @@ class AnnotationEditorUIManager { enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, - editorUndoBar + editorUndoBar, + supportsPinchToZoom ) { const signal = (this._signal = this.#abortController.signal); this.#container = container; @@ -870,6 +871,7 @@ class AnnotationEditorUIManager { }; this.isShiftKeyDown = false; this._editorUndoBar = editorUndoBar || null; + this._supportsPinchToZoom = supportsPinchToZoom !== false; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { Object.defineProperty(this, "reset", { diff --git a/src/display/touch_manager.js b/src/display/touch_manager.js index 00b717c5bdd9f..2d5db615d5ca7 100644 --- a/src/display/touch_manager.js +++ b/src/display/touch_manager.js @@ -14,6 +14,7 @@ */ import { shadow } from "../shared/util.js"; +import { stopEvent } from "./display_utils.js"; class TouchManager { #container; @@ -24,6 +25,8 @@ class TouchManager { #isPinchingDisabled; + #onPinchStart; + #onPinching; #onPinchEnd; @@ -40,6 +43,7 @@ class TouchManager { container, isPinchingDisabled = null, isPinchingStopped = null, + onPinchStart = null, onPinching = null, onPinchEnd = null, signal, @@ -47,6 +51,7 @@ class TouchManager { this.#container = container; this.#isPinchingStopped = isPinchingStopped; this.#isPinchingDisabled = isPinchingDisabled; + this.#onPinchStart = onPinchStart; this.#onPinching = onPinching; this.#onPinchEnd = onPinchEnd; this.#touchManagerAC = new AbortController(); @@ -93,9 +98,10 @@ class TouchManager { this.#onTouchEnd.bind(this), opt ); + this.#onPinchStart?.(); } - evt.preventDefault(); + stopEvent(evt); if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) { this.#touchInfo = null; @@ -169,18 +175,15 @@ class TouchManager { #onTouchEnd(evt) { this.#touchMoveAC.abort(); this.#touchMoveAC = null; + this.#onPinchEnd?.(); if (!this.#touchInfo) { return; } - if (this.#isPinching) { - this.#onPinchEnd?.(); - this.#isPinching = false; - } - evt.preventDefault(); this.#touchInfo = null; + this.#isPinching = false; } destroy() { diff --git a/web/app.js b/web/app.js index 0e8ebaee0de4b..52c76bf86a523 100644 --- a/web/app.js +++ b/web/app.js @@ -492,6 +492,7 @@ const PDFViewerApplication = { mlManager: this.mlManager, abortSignal: this._globalAbortController.signal, enableHWA, + supportsPinchToZoom: this.supportsPinchToZoom, }); this.pdfViewer = pdfViewer; diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index e968db3f14810..59621ba5e9e9f 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -126,6 +126,8 @@ function isValidAnnotationEditorMode(mode) { * mode. * @property {boolean} [enableHWA] - Enables hardware acceleration for * rendering. The default value is `false`. + * @property {boolean} [supportsPinchToZoom] - Enable zooming on pinch gesture. + * The default value is `true`. */ class PDFPageViewBuffer { @@ -248,6 +250,8 @@ class PDFViewer { #scaleTimeoutId = null; + #supportsPinchToZoom = true; + #textLayerMode = TextLayerMode.ENABLE; /** @@ -316,6 +320,7 @@ class PDFViewer { this.pageColors = options.pageColors || null; this.#mlManager = options.mlManager || null; this.#enableHWA = options.enableHWA || false; + this.#supportsPinchToZoom = options.supportsPinchToZoom !== false; this.defaultRenderingQueue = !options.renderingQueue; if ( @@ -911,7 +916,8 @@ class PDFViewer { this.#enableUpdatedAddImage, this.#enableNewAltTextWhenAddingImage, this.#mlManager, - this.#editorUndoBar + this.#editorUndoBar, + this.#supportsPinchToZoom ); eventBus.dispatch("annotationeditoruimanager", { source: this, From 030a479051386886ba2c5e3af6fb053f1c4532df Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 11 Dec 2024 12:03:54 +0100 Subject: [PATCH 141/338] Don't remove trailing regular spaces from the "raw" response headers (issue 19205) This bug only seems to reproduce in Google Chrome, since browsers apparently sort response headers differently. When the issue occurs the "raw" response headers string looks like this: ``` content-length: 525404\r\ncontent-type: \r\n ``` and since we trim *any* leading/trailing white-space characters the "content-type" header isn't detected correctly, which thus leads to `new Headers(...)` throwing. Hence we'll keep regular spaces at the end of the "raw" response headers string, while still removing all other kinds of trailing white-space characters. *Note:* The response headers parsing was based on https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders#examples --- src/display/network.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/display/network.js b/src/display/network.js index 930c2d39639a5..f46fcad7cac17 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -288,7 +288,8 @@ class PDFNetworkStreamFullRequestReader { const responseHeaders = new Headers( rawResponseHeaders ? rawResponseHeaders - .trim() + .trimStart() + .replace(/[^\S ]+$/, "") // Not `trimEnd`, to keep regular spaces. .split(/[\r\n]+/) .map(x => { const [key, ...val] = x.split(": "); From aefe5f290a3882ce6d56f8bf827cf84be2fb3ff0 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 15 Dec 2024 14:13:44 +0100 Subject: [PATCH 142/338] [api-minor] Remove deprecated `getDocument` options (PR 18776 follow-up) --- src/display/api.js | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 5f435fdd7ff49..1594d7cb2bfd1 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -43,15 +43,14 @@ import { PrintAnnotationStorage, SerializableEmpty, } from "./annotation_storage.js"; +import { FontFaceObject, FontLoader } from "./font_loader.js"; import { - deprecated, isDataScheme, isValidFetchUrl, PageViewport, RenderingCancelledException, StatTimer, } from "./display_utils.js"; -import { FontFaceObject, FontLoader } from "./font_loader.js"; import { NodeCanvasFactory, NodeCMapReaderFactory, @@ -339,19 +338,6 @@ function getDocument(src = {}) { isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI)); - if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { - if (src.canvasFactory) { - deprecated( - "`canvasFactory`-instance option, please use `CanvasFactory` instead." - ); - } - if (src.filterFactory) { - deprecated( - "`filterFactory`-instance option, please use `FilterFactory` instead." - ); - } - } - // Parameters only intended for development/testing purposes. const styleElement = typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING") From a23b182b63bc341b45ae495aee7aee77d21953de Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 15 Dec 2024 16:30:31 +0100 Subject: [PATCH 143/338] Bump library version to `4.10` --- pdfjs.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdfjs.config b/pdfjs.config index 9de4ef4d9c795..959a7bf19fc28 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { "stableVersion": "4.9.155", - "baseVersion": "cefd1ebcd239d906758d0f7a601238a1980d5631", - "versionPrefix": "4.9." + "baseVersion": "ac81de6ab479ea001c4359302d062157ade0a14c", + "versionPrefix": "4.10." } From 30fe0701920fdca53a37efb18c847d5a171a5a96 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 15 Dec 2024 18:11:11 +0100 Subject: [PATCH 144/338] Disable touch-zooming, in the viewer, if `AbortSignal.any` is unsupported (PR 19216 follow-up) This way loading of the *entire* viewer won't break in older browsers that lack `AbortSignal.any` support; see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/any_static#browser_compatibility --- web/app.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/web/app.js b/web/app.js index 52c76bf86a523..ecc272c8310bc 100644 --- a/web/app.js +++ b/web/app.js @@ -2061,14 +2061,19 @@ const PDFViewerApplication = { _windowAbortController: { signal }, } = this; - this._touchManager = new TouchManager({ - container: window, - isPinchingDisabled: () => this.pdfViewer.isInPresentationMode, - isPinchingStopped: () => this.overlayManager?.active, - onPinching: this.touchPinchCallback.bind(this), - onPinchEnd: this.touchPinchEndCallback.bind(this), - signal, - }); + if ( + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || + typeof AbortSignal.any === "function" + ) { + this._touchManager = new TouchManager({ + container: window, + isPinchingDisabled: () => pdfViewer.isInPresentationMode, + isPinchingStopped: () => this.overlayManager?.active, + onPinching: this.touchPinchCallback.bind(this), + onPinchEnd: this.touchPinchEndCallback.bind(this), + signal, + }); + } function addWindowResolutionChange(evt = null) { if (evt) { From b6da259580c10c2bf06df601a3b4075cd85f911b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 18 Dec 2024 09:36:19 +0100 Subject: [PATCH 145/338] Add basic support for non-embedded HelveticaLTStd-Bold fonts (issue 19234) --- src/core/standard_fonts.js | 1 + test/pdfs/issue19234.pdf.link | 1 + test/test_manifest.json | 9 +++++++++ 3 files changed, 11 insertions(+) create mode 100644 test/pdfs/issue19234.pdf.link diff --git a/src/core/standard_fonts.js b/src/core/standard_fonts.js index 56212b9019716..9e7cea5091b9b 100644 --- a/src/core/standard_fonts.js +++ b/src/core/standard_fonts.js @@ -77,6 +77,7 @@ const getStdFontMap = getLookupTableFactory(function (t) { t.CourierNewPSMT = "Courier"; t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique"; t["Helvetica-Italic"] = "Helvetica-Oblique"; + t["HelveticaLTStd-Bold"] = "Helvetica-Bold"; t["Symbol-Bold"] = "Symbol"; t["Symbol-BoldItalic"] = "Symbol"; t["Symbol-Italic"] = "Symbol"; diff --git a/test/pdfs/issue19234.pdf.link b/test/pdfs/issue19234.pdf.link new file mode 100644 index 0000000000000..00576c280b665 --- /dev/null +++ b/test/pdfs/issue19234.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18172261/Tax3921.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 1440d836f0b98..966f9f183b420 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -11223,5 +11223,14 @@ "rounds": 1, "disableFontFace": true, "type": "eq" + }, + { + "id": "issue19234", + "file": "pdfs/issue19234.pdf", + "md5": "2b57e3c43fa0ae4a606c13df007c202f", + "rounds": 1, + "link": true, + "disableFontFace": true, + "type": "eq" } ] From e1c272cba9c8471f9e1c44f3f4ae2432e9d2c7be Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 18 Dec 2024 17:00:45 +0100 Subject: [PATCH 146/338] Take the absolute value of the font size when the annotation contents is in xhtml (bug 1938087) --- src/core/xfa/xhtml.js | 3 ++- test/unit/xfa_tohtml_spec.js | 41 ++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/core/xfa/xhtml.js b/src/core/xfa/xhtml.js index 3e9847c7beb88..1c1eab989cfd5 100644 --- a/src/core/xfa/xhtml.js +++ b/src/core/xfa/xhtml.js @@ -94,7 +94,8 @@ const StyleMapping = new Map([ [ "font-size", (value, original) => { - value = original.fontSize = getMeasurement(value); + // The font size must be positive. + value = original.fontSize = Math.abs(getMeasurement(value)); return measureToString(0.99 * value); }, ], diff --git a/test/unit/xfa_tohtml_spec.js b/test/unit/xfa_tohtml_spec.js index e4284963926b0..615ba3c123d75 100644 --- a/test/unit/xfa_tohtml_spec.js +++ b/test/unit/xfa_tohtml_spec.js @@ -642,4 +642,45 @@ describe("XFAFactory", function () { expect(a.attributes.href).toEqual("https://github.com/allizom/pdf.js"); expect(a.attributes.newWindow).toEqual(false); }); + + it("should take the absolute value of the font size", async () => { + const xml = ` + + + + + + + + + `; + const factory = new XFAFactory({ "xdp:xdp": xml }); + + expect(await factory.getNumPages()).toEqual(1); + + const pages = await factory.getPages(); + const p = searchHtmlNode(pages, "name", "p"); + expect(p.attributes.style.fontSize).toEqual("13.86px"); + }); }); From 081c738b27d91dc3cf97364d37bc0c29db5c14fe Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 18 Dec 2024 10:09:56 +0100 Subject: [PATCH 147/338] Disable the `handle reading ranges with missing/invalid "Content-Range" header` unit-test in Google Chrome (PR 19114 follow-up) Note that PR 19212 tried to change the test-server to fix the intermittent failure in Google Chrome, however that unfortunately caused *other* unit-tests to start failing. As long as this unit-test still runs successfully in Mozilla Firefox that should be enough, and it doesn't seem like a good use of our time to hunt down a bug that only happens in Google Chrome. --- test/unit/network_spec.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/unit/network_spec.js b/test/unit/network_spec.js index ebcb1a89103ac..0cdc5dbe5eafb 100644 --- a/test/unit/network_spec.js +++ b/test/unit/network_spec.js @@ -122,6 +122,10 @@ describe("network", function () { }); it(`handle reading ranges with missing/invalid "Content-Range" header`, async function () { + if (globalThis.chrome) { + pending("Fails intermittently in Google Chrome."); + } + async function readRanges(mode) { const rangeSize = 32768; const stream = new PDFNetworkStream({ From 4a4a8f80c813ba05a50bbcd5f258ecb04f1eba1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 16 Dec 2024 16:01:08 +0100 Subject: [PATCH 148/338] Fix left offset when scrolling to search result When computing the left offset of the highlighted text, we cannot use .offsetLeft because the text might have been scaled through CSS, and it needs to be taken into account. Use `.getClientRects()`/`.getBoundingClientRect()` instead, which will return measurements scaled appropriately. --- test/integration/find_spec.mjs | 27 +++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19207.pdf | Bin 0 -> 5113 bytes web/text_highlighter.js | 9 ++++++++- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19207.pdf diff --git a/test/integration/find_spec.mjs b/test/integration/find_spec.mjs index b73f499aee2cc..e6f05072e6f70 100644 --- a/test/integration/find_spec.mjs +++ b/test/integration/find_spec.mjs @@ -126,4 +126,31 @@ describe("find bar", () => { ); }); }); + + describe("issue19207.pdf", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19207.pdf", ".textLayer", 200); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must scroll to the search result text", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + // Search for "40" + await page.click("#viewFindButton"); + await page.waitForSelector("#viewFindButton", { hidden: false }); + await page.type("#findInput", "40"); + + const highlight = await page.waitForSelector(".textLayer .highlight"); + + expect(await highlight.isIntersectingViewport()).toBeTrue(); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index fd2cc91dc036e..e619579ba44ec 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -690,3 +690,4 @@ !inks_basic.pdf !issue19182.pdf !issue18911.pdf +!issue19207.pdf diff --git a/test/pdfs/issue19207.pdf b/test/pdfs/issue19207.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4c9d01ffc77454ee011a1296070f1cdd2f58a9dd GIT binary patch literal 5113 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 Date: Thu, 19 Dec 2024 21:07:23 +0100 Subject: [PATCH 149/338] Update dependencies to the most recent versions --- package-lock.json | 880 ++++++++++------------------------------------ package.json | 18 +- 2 files changed, 203 insertions(+), 695 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0b1ee58b6b7fe..9bc2a159af54e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,27 +16,27 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.1", + "@types/node": "^22.10.2", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001687", + "caniuse-lite": "^1.0.30001690", "core-js": "^3.39.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.2.0", + "eslint-plugin-perfectionist": "^4.3.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", - "globals": "^15.13.0", + "globals": "^15.14.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", "gulp-zip": "^6.0.0", - "highlight.js": "^11.10.0", + "highlight.js": "^11.11.0", "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", @@ -50,11 +50,11 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.10.3", - "stylelint": "^16.11.0", + "puppeteer": "^23.11.1", + "stylelint": "^16.12.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", "typescript": "^5.7.2", @@ -1887,9 +1887,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", + "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", "dev": true, "license": "MIT", "engines": { @@ -2256,13 +2256,14 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -2705,9 +2706,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2742,14 +2743,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", - "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", + "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0" + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2760,9 +2761,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", - "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", + "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", "dev": true, "license": "MIT", "engines": { @@ -2774,14 +2775,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", - "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", + "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/visitor-keys": "8.18.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2796,10 +2797,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -2842,16 +2841,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", - "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", + "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0" + "@typescript-eslint/scope-manager": "8.18.1", + "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/typescript-estree": "8.18.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2861,22 +2860,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", - "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", + "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/types": "8.18.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3231,12 +3226,29 @@ } }, "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/ansi-wrap": { @@ -3480,6 +3492,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3719,14 +3732,14 @@ } }, "node_modules/bare-stream": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", - "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.1.tgz", + "integrity": "sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "streamx": "^2.20.0" + "streamx": "^2.21.0" } }, "node_modules/base64-js": { @@ -3994,9 +4007,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001690", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", + "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", "dev": true, "funding": [ { @@ -4092,14 +4105,13 @@ } }, "node_modules/chromium-bidi": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.8.0.tgz", - "integrity": "sha512-uJydbGdTw0DEUjhoogGveneJVWX/9YuqkWePzMmkBYwtdAqo5d3J/ovNKFr+/2hWXYmYCr6it8mSSTIj6SS6Ug==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", "dev": true, "license": "Apache-2.0", "dependencies": { "mitt": "3.0.1", - "urlpattern-polyfill": "10.0.0", "zod": "3.23.8" }, "peerDependencies": { @@ -4210,15 +4222,6 @@ "node": ">= 14.15.0" } }, - "node_modules/cmake-js/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cmake-js/node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -4265,15 +4268,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cmake-js/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cmake-js/node_modules/npmlog": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", @@ -4318,32 +4312,6 @@ "node": ">=10" } }, - "node_modules/cmake-js/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cmake-js/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cmake-js/node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4366,20 +4334,25 @@ "dev": true, "license": "MIT" }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/color-support": { "version": "1.1.3", @@ -4408,6 +4381,13 @@ "node": ">= 0.8" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -4532,9 +4512,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -5351,9 +5331,9 @@ } }, "node_modules/eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "version": "9.17.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", + "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", "dev": true, "license": "MIT", "dependencies": { @@ -5362,7 +5342,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.9.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", + "@eslint/js": "9.17.0", "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -5371,7 +5351,7 @@ "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -5572,14 +5552,14 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.2.0.tgz", - "integrity": "sha512-hEMFx5xfSc/0OLZXJhSaLUKkFxATuRf4yL2iVfxEcxkkb17DfoLZY9eH960dPSw5uB7o+4avqP3rtkNp1Vwo7w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.3.0.tgz", + "integrity": "sha512-8tQ/wn1dFelul2WoXL/NQOEwvWO8H4Vjmsqpt3fDQrfgybr8kQ5Vgb9BQyVRB33ywQqjUApsiwi5Ci7grMPPRA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.17.0", - "@typescript-eslint/utils": "^8.17.0", + "@typescript-eslint/types": "^8.18.0", + "@typescript-eslint/utils": "^8.18.0", "natural-orderby": "^5.0.0" }, "engines": { @@ -5740,21 +5720,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5771,18 +5736,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -6232,6 +6185,13 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/fast-xml-parser": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", @@ -6931,9 +6891,9 @@ } }, "node_modules/globals": { - "version": "15.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", - "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "license": "MIT", "engines": { @@ -7076,30 +7036,6 @@ "node": ">=10.13.0" } }, - "node_modules/gulp-cli/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/gulp-cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7127,18 +7063,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/gulp-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, "node_modules/gulp-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -7148,41 +7072,6 @@ "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gulp-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -7448,9 +7337,9 @@ } }, "node_modules/highlight.js": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.10.0.tgz", - "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.0.tgz", + "integrity": "sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7851,15 +7740,13 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-glob": { @@ -8965,7 +8852,8 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-update": { "version": "5.0.1", @@ -9762,15 +9650,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -10871,18 +10750,18 @@ } }, "node_modules/puppeteer": { - "version": "23.10.3", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.10.3.tgz", - "integrity": "sha512-ODG+L9vCSPkQ1j+yDtNDdkSsWt2NXNrQO5C8MlwkYgE2hYnXdqVRbBpsHnoP7+EULJJKbWyR2Q4BdfohjQor3A==", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.11.1.tgz", + "integrity": "sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.6.1", - "chromium-bidi": "0.8.0", + "chromium-bidi": "0.11.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1367902", - "puppeteer-core": "23.10.3", + "puppeteer-core": "23.11.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10893,14 +10772,14 @@ } }, "node_modules/puppeteer-core": { - "version": "23.10.3", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.10.3.tgz", - "integrity": "sha512-7JG8klL2qHLyH8t2pOmM9zgykhaulUf7cxnmmqupjdwGfNMiGaYehQka20iUB9R/fwVyG8mFMZcsmw1FHrgKVw==", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz", + "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", "dev": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.6.1", - "chromium-bidi": "0.8.0", + "chromium-bidi": "0.11.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1367902", "typed-query-selector": "^2.12.0", @@ -11523,18 +11402,19 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", + "ajv": "^8.9.0", "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -11731,6 +11611,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -11743,42 +11624,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -11924,9 +11769,9 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "version": "2.21.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.1.tgz", + "integrity": "sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==", "dev": true, "license": "MIT", "dependencies": { @@ -11948,17 +11793,18 @@ } }, "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/string-width-cjs": { @@ -11976,36 +11822,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -12059,15 +11875,16 @@ } }, "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/strip-ansi-cjs": { @@ -12083,15 +11900,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", @@ -12133,9 +11941,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.11.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz", - "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==", + "version": "16.12.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", + "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", "dev": true, "funding": [ { @@ -12185,7 +11993,7 @@ "string-width": "^4.2.3", "supports-hyperlinks": "^3.1.0", "svg-tags": "^1.0.0", - "table": "^6.8.2", + "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { @@ -12304,15 +12112,6 @@ "node": ">= 4" } }, - "node_modules/stylelint/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/stylelint/node_modules/is-plain-object": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", @@ -12354,41 +12153,6 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/stylelint/node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/summary": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/summary/-/summary-2.1.0.tgz", @@ -12834,10 +12598,11 @@ } }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -12850,70 +12615,28 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/tapable": { "version": "2.2.1", @@ -13015,10 +12738,11 @@ } }, "node_modules/terser": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.1.tgz", - "integrity": "sha512-29wAr6UU/oQpnTw5HoadwjUZnFQXGdOfj0LjZ4sVxzqwHh/QVkvr7m8y9WoR4iN3FRitVduTc6KdjcW38Npsug==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -13033,16 +12757,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -13066,30 +12791,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/text-decoder": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.0.tgz", @@ -13691,13 +13392,6 @@ "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", "dev": true }, - "node_modules/urlpattern-polyfill": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", - "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true, - "license": "MIT" - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -14211,148 +13905,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-fn": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz", @@ -14473,15 +14025,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -14496,41 +14039,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index ba24d866db7ae..e7676e289617d 100644 --- a/package.json +++ b/package.json @@ -11,27 +11,27 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.1", + "@types/node": "^22.10.2", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001687", + "caniuse-lite": "^1.0.30001690", "core-js": "^3.39.0", - "eslint": "^9.16.0", + "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.2.0", + "eslint-plugin-perfectionist": "^4.3.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", - "globals": "^15.13.0", + "globals": "^15.14.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", "gulp-zip": "^6.0.0", - "highlight.js": "^11.10.0", + "highlight.js": "^11.11.0", "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", @@ -45,11 +45,11 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.10.3", - "stylelint": "^16.11.0", + "puppeteer": "^23.11.1", + "stylelint": "^16.12.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", "typescript": "^5.7.2", From 494a164ae0fc3b54f5750dc147aaf75cf1da2bb7 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Thu, 19 Dec 2024 21:14:29 +0100 Subject: [PATCH 150/338] Fix vulnerability in the `nanoid` dependency This patch is generated with `npm audit fix` and fixes GHSA-mwcw-c2x4-8c55. --- package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9bc2a159af54e..3f8c01b63d3fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9502,9 +9502,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -9512,6 +9512,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, From 1334dddcaac13241df7c2fa0e591b89a93baca80 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Thu, 19 Dec 2024 21:17:35 +0100 Subject: [PATCH 151/338] Update translations to the most recent versions --- l10n/be/viewer.ftl | 21 +++++++ l10n/cs/viewer.ftl | 13 +++++ l10n/cy/viewer.ftl | 26 ++++++++- l10n/da/viewer.ftl | 20 +++++++ l10n/de/viewer.ftl | 20 +++++++ l10n/el/viewer.ftl | 20 +++++++ l10n/en-CA/viewer.ftl | 20 +++++++ l10n/eo/viewer.ftl | 38 ++++++++++++- l10n/es-CL/viewer.ftl | 20 +++++++ l10n/es-ES/viewer.ftl | 20 +++++++ l10n/fi/viewer.ftl | 20 +++++++ l10n/fr/viewer.ftl | 20 +++++++ l10n/fy-NL/viewer.ftl | 20 +++++++ l10n/gn/viewer.ftl | 20 +++++++ l10n/he/viewer.ftl | 26 ++++++++- l10n/hu/viewer.ftl | 20 +++++++ l10n/ia/viewer.ftl | 20 +++++++ l10n/ja/viewer.ftl | 17 +++++- l10n/ka/viewer.ftl | 125 +++++++++++++++++++++++++++++++++++++++--- l10n/kk/viewer.ftl | 9 +++ l10n/nl/viewer.ftl | 20 +++++++ l10n/nn-NO/viewer.ftl | 17 ++++++ l10n/oc/viewer.ftl | 50 ++++++++++++++++- l10n/pl/viewer.ftl | 21 +++++++ l10n/pt-BR/viewer.ftl | 20 +++++++ l10n/pt-PT/viewer.ftl | 32 ++++++++++- l10n/rm/viewer.ftl | 20 +++++++ l10n/sk/viewer.ftl | 22 ++++++++ l10n/skr/viewer.ftl | 19 ++++++- l10n/sl/viewer.ftl | 22 ++++++++ l10n/sq/viewer.ftl | 20 +++++++ l10n/tg/viewer.ftl | 20 +++++++ l10n/th/viewer.ftl | 16 ++++++ l10n/tr/viewer.ftl | 20 +++++++ l10n/uk/viewer.ftl | 21 +++++++ l10n/zh-CN/viewer.ftl | 16 ++++++ 36 files changed, 853 insertions(+), 18 deletions(-) diff --git a/l10n/be/viewer.ftl b/l10n/be/viewer.ftl index 8dfd471af53c1..3f029d93381cf 100644 --- a/l10n/be/viewer.ftl +++ b/l10n/be/viewer.ftl @@ -495,3 +495,24 @@ pdfjs-editor-alt-text-settings-editor-title = Рэдактар тэксту дл pdfjs-editor-alt-text-settings-show-dialog-button-label = Адразу паказваць рэдактар тэксту для атрыбута alt пры даданні выявы pdfjs-editor-alt-text-settings-show-dialog-description = Дапамагае пераканацца, што ўсе вашы выявы маюць альтэрнатыўны тэкст. pdfjs-editor-alt-text-settings-close-button = Закрыць + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Падсвятленне выдалена +pdfjs-editor-undo-bar-message-freetext = Тэкст выдалены +pdfjs-editor-undo-bar-message-ink = Малюнак выдалены +pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } анатацыя выдалена + [few] { $count } анатацыі выдалена + *[many] { $count } анатацый выдалена + } +pdfjs-editor-undo-bar-undo-button = + .title = Адмяніць +pdfjs-editor-undo-bar-undo-button-label = Адмяніць +pdfjs-editor-undo-bar-close-button = + .title = Закрыць +pdfjs-editor-undo-bar-close-button-label = Закрыць diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index e34e418a984ac..696fe300ebbef 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -500,6 +500,19 @@ pdfjs-editor-alt-text-settings-close-button = Zavřít ## "Annotations removed" bar +pdfjs-editor-undo-bar-message-highlight = Zvýraznění odebráno +pdfjs-editor-undo-bar-message-freetext = Text odstraněn +pdfjs-editor-undo-bar-message-ink = Kresba odstraněna +pdfjs-editor-undo-bar-message-stamp = Obrázek odebrán +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotace odebrána + [few] { $count } anotace odebrány + [many] { $count } anotací odebráno + *[other] { $count } anotací odebráno + } pdfjs-editor-undo-bar-undo-button = .title = Zpět pdfjs-editor-undo-bar-undo-button-label = Zpět diff --git a/l10n/cy/viewer.ftl b/l10n/cy/viewer.ftl index 6b89b5614d663..836383511159c 100644 --- a/l10n/cy/viewer.ftl +++ b/l10n/cy/viewer.ftl @@ -452,7 +452,7 @@ pdfjs-editor-new-alt-text-textarea = pdfjs-editor-new-alt-text-description = Disgrifiad byr ar gyfer pobl sydd ddim yn gallu gweld y ddelwedd neu pan nad yw'r ddelwedd yn llwytho. # This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. pdfjs-editor-new-alt-text-disclaimer1 = Cafodd y testun amgen hwn ei greu'n awtomatig a gall fod yn anghywir. -pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Dysgu rhagor +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Rhagor pdfjs-editor-new-alt-text-create-automatically-button-label = Creu testun amgen yn awtomatig pdfjs-editor-new-alt-text-not-now-button = Nid nawr pdfjs-editor-new-alt-text-error-title = Methu â chreu testun amgen yn awtomatig @@ -501,3 +501,27 @@ pdfjs-editor-alt-text-settings-editor-title = Golygydd testun amgen pdfjs-editor-alt-text-settings-show-dialog-button-label = Dangoswch y golygydd testun amgen yn syth wrth ychwanegu delwedd pdfjs-editor-alt-text-settings-show-dialog-description = Yn eich helpu i wneud yn siŵr bod gan eich holl ddelweddau destun amgen. pdfjs-editor-alt-text-settings-close-button = Cau + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Tynnwyd yr amlygu +pdfjs-editor-undo-bar-message-freetext = Tynnwyd y testun +pdfjs-editor-undo-bar-message-ink = Tynnwyd y lluniad +pdfjs-editor-undo-bar-message-stamp = Tynnwyd y ddelwedd +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [zero] { $count } anodiad wedi'u tynnu + [one] { $count } anodiad wedi'i dynnu + [two] { $count } anodiad wedi'u tynnu + [few] { $count } anodiad wedi'u tynnu + [many] { $count } anodiad wedi'u tynnu + *[other] { $count } anodiad wedi'u tynnu + } +pdfjs-editor-undo-bar-undo-button = + .title = Dadwneud +pdfjs-editor-undo-bar-undo-button-label = Dadwneud +pdfjs-editor-undo-bar-close-button = + .title = Cau +pdfjs-editor-undo-bar-close-button-label = Cau diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index ba8b4eff50546..224eac170da7c 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Redigering af alternativ tekst pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis redigering af alternativ tekst med det samme, når et billede tilføjes pdfjs-editor-alt-text-settings-show-dialog-description = Hjælper dig med at sikre, at alle dine billeder har alternativ tekst. pdfjs-editor-alt-text-settings-close-button = Luk + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Fremhævning fjernet +pdfjs-editor-undo-bar-message-freetext = Tekst fjernet +pdfjs-editor-undo-bar-message-ink = Tegning fjernet +pdfjs-editor-undo-bar-message-stamp = Billede fjernet +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } kommentar fjernet + *[other] { $count } kommentarer fjernet + } +pdfjs-editor-undo-bar-undo-button = + .title = Fortryd +pdfjs-editor-undo-bar-undo-button-label = Fortryd +pdfjs-editor-undo-bar-close-button = + .title = Luk +pdfjs-editor-undo-bar-close-button-label = Luk diff --git a/l10n/de/viewer.ftl b/l10n/de/viewer.ftl index 9df4c0791b6c1..ee26455097ebb 100644 --- a/l10n/de/viewer.ftl +++ b/l10n/de/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alternativ-Texteditor pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternativ-Texteditor beim Hinzufügen einer Grafik anzeigen pdfjs-editor-alt-text-settings-show-dialog-description = Hilft Ihnen, sicherzustellen, dass alle Ihre Grafiken Alternativ-Text haben. pdfjs-editor-alt-text-settings-close-button = Schließen + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Hervorhebung entfernt +pdfjs-editor-undo-bar-message-freetext = Text entfernt +pdfjs-editor-undo-bar-message-ink = Zeichnung entfernt +pdfjs-editor-undo-bar-message-stamp = Grafik entfernt +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } Anmerkung entfernt + *[other] { $count } Anmerkungen entfernt + } +pdfjs-editor-undo-bar-undo-button = + .title = Rückgängig +pdfjs-editor-undo-bar-undo-button-label = Rückgängig +pdfjs-editor-undo-bar-close-button = + .title = Schließen +pdfjs-editor-undo-bar-close-button-label = Schließen diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index 22cb27b3df6c5..5a04bd8a35987 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Επεξεργασία εναλλ pdfjs-editor-alt-text-settings-show-dialog-button-label = Άμεση εμφάνιση της επεξεργασίας εναλλακτικού κειμένου κατά την προσθήκη εικόνας pdfjs-editor-alt-text-settings-show-dialog-description = Σας βοηθά να βεβαιωθείτε ότι όλες οι εικόνες σας έχουν εναλλακτικό κείμενο. pdfjs-editor-alt-text-settings-close-button = Κλείσιμο + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Η επισήμανση αφαιρέθηκε +pdfjs-editor-undo-bar-message-freetext = Το κείμενο αφαιρέθηκε +pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε +pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] Αφαιρέθηκε { $count } σχολιασμός + *[other] Αφαιρέθηκαν { $count } σχολιασμοί + } +pdfjs-editor-undo-bar-undo-button = + .title = Αναίρεση +pdfjs-editor-undo-bar-undo-button-label = Αναίρεση +pdfjs-editor-undo-bar-close-button = + .title = Κλείσιμο +pdfjs-editor-undo-bar-close-button-label = Κλείσιμο diff --git a/l10n/en-CA/viewer.ftl b/l10n/en-CA/viewer.ftl index 349ff6ec0ce9f..346e6e8d8fcee 100644 --- a/l10n/en-CA/viewer.ftl +++ b/l10n/en-CA/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alt text editor pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text. pdfjs-editor-alt-text-settings-close-button = Close + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Highlight removed +pdfjs-editor-undo-bar-message-freetext = Text removed +pdfjs-editor-undo-bar-message-ink = Drawing removed +pdfjs-editor-undo-bar-message-stamp = Image removed +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotation removed + *[other] { $count } annotations removed + } +pdfjs-editor-undo-bar-undo-button = + .title = Undo +pdfjs-editor-undo-bar-undo-button-label = Undo +pdfjs-editor-undo-bar-close-button = + .title = Close +pdfjs-editor-undo-bar-close-button-label = Close diff --git a/l10n/eo/viewer.ftl b/l10n/eo/viewer.ftl index bb68201cab1c3..ce45ebfe64c10 100644 --- a/l10n/eo/viewer.ftl +++ b/l10n/eo/viewer.ftl @@ -343,8 +343,12 @@ pdfjs-editor-stamp-add-image-button-label = Aldoni bildon pdfjs-editor-free-highlight-thickness-input = Dikeco pdfjs-editor-free-highlight-thickness-title = .title = Ŝanĝi dikecon dum elstarigo de netekstaj elementoj +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Teksta redaktilo + .default-content = Komencu tajpi… pdfjs-free-text = - .aria-label = Tekstan redaktilon + .aria-label = Teksta redaktilo pdfjs-free-text-default-content = Ektajpi… pdfjs-ink = .aria-label = Desegnan redaktilon @@ -353,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alternativa teksto +pdfjs-editor-alt-text-edit-button = + .aria-label = Redakti alternativan tekston pdfjs-editor-alt-text-edit-button-label = Redakti alternativan tekston pdfjs-editor-alt-text-dialog-label = Elektu eblon pdfjs-editor-alt-text-dialog-description = Alternativa teksto helpas personojn, en la okazoj kiam ili ne povas vidi aŭ ŝargi la bildon. @@ -368,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Markita kiel ornama # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Ekzemple: “Juna persono sidiĝas ĉetable por ekmanĝi” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativa teksto ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Fermi pdfjs-editor-new-alt-text-ai-model-downloading-progress = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO) .aria-valuetext = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativa teksto aldonita pdfjs-editor-new-alt-text-added-button-label = Alternativa teksto aldonita # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Mankas alternativa teksto pdfjs-editor-new-alt-text-missing-button-label = Mankas alternativa teksto # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Kontroli alternativan tekston pdfjs-editor-new-alt-text-to-review-button-label = Kontroli alternativan tekston # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -479,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Redaktilo de alternativa teksto pdfjs-editor-alt-text-settings-show-dialog-button-label = Montri redaktilon de alternativa teksto tuj post aldono de bildo pdfjs-editor-alt-text-settings-show-dialog-description = Tio ĉi helpas vin kontroli ĉu ĉiuj bildoj havas alternativan tekston. pdfjs-editor-alt-text-settings-close-button = Fermi + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Elstaraĵo forigita +pdfjs-editor-undo-bar-message-freetext = Teksto forigita +pdfjs-editor-undo-bar-message-ink = Desegno forigita +pdfjs-editor-undo-bar-message-stamp = Bildo forigita +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] unu prinoto forigita + *[other] { $count } prinotoj forigitaj + } +pdfjs-editor-undo-bar-undo-button = + .title = Malfari +pdfjs-editor-undo-bar-undo-button-label = Malfari +pdfjs-editor-undo-bar-close-button = + .title = Fermi +pdfjs-editor-undo-bar-close-button-label = Fermi diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index f83c16efe5324..c711d62a0346a 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-close-button = Cerrar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado +pdfjs-editor-undo-bar-message-freetext = Texto eliminado +pdfjs-editor-undo-bar-message-ink = Dibujo eliminado +pdfjs-editor-undo-bar-message-stamp = Imagen eliminada +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotación eliminada + *[other] { $count } anotaciones eliminadas + } +pdfjs-editor-undo-bar-undo-button = + .title = Deshacer +pdfjs-editor-undo-bar-undo-button-label = Deshacer +pdfjs-editor-undo-bar-close-button = + .title = Cerrar +pdfjs-editor-undo-bar-close-button-label = Cerrar diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index f7045af937e30..f610a179b674f 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen pdfjs-editor-alt-text-settings-show-dialog-description = Le ayuda a asegurarse de que todas sus imágenes tengan texto alternativo. pdfjs-editor-alt-text-settings-close-button = Cerrar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado +pdfjs-editor-undo-bar-message-freetext = Texto eliminado +pdfjs-editor-undo-bar-message-ink = Dibujo eliminado +pdfjs-editor-undo-bar-message-stamp = Imagen eliminada +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotación eliminada + *[other] { $count } anotaciones eliminadas + } +pdfjs-editor-undo-bar-undo-button = + .title = Deshacer +pdfjs-editor-undo-bar-undo-button-label = Deshacer +pdfjs-editor-undo-bar-close-button = + .title = Cerrar +pdfjs-editor-undo-bar-close-button-label = Cerrar diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 1c148b02053f5..0819d0ea8d2aa 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Vaihtoehtoisen tekstin muokkain pdfjs-editor-alt-text-settings-show-dialog-button-label = Näytä vaihtoehtoisen tekstin muokkain heti, kun lisäät kuvan pdfjs-editor-alt-text-settings-show-dialog-description = Auttaa varmistamaan, että kaikissa kuvissasi on vaihtoehtoinen teksti. pdfjs-editor-alt-text-settings-close-button = Sulje + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Korostus poistettu +pdfjs-editor-undo-bar-message-freetext = Teksti poistettu +pdfjs-editor-undo-bar-message-ink = Piirustus poistettu +pdfjs-editor-undo-bar-message-stamp = Kuva poistettu +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } merkintä poistettu + *[other] { $count } merkintää poistettu + } +pdfjs-editor-undo-bar-undo-button = + .title = Kumoa +pdfjs-editor-undo-bar-undo-button-label = Kumoa +pdfjs-editor-undo-bar-close-button = + .title = Sulje +pdfjs-editor-undo-bar-close-button-label = Sulje diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index fe367f5e7d295..d0a778f884390 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -489,3 +489,23 @@ pdfjs-editor-alt-text-settings-editor-title = Éditeur de texte alternatif pdfjs-editor-alt-text-settings-show-dialog-button-label = Afficher l’éditeur de texte alternatif immédiatement lors de l’ajout d’une image pdfjs-editor-alt-text-settings-show-dialog-description = Vous aide à vous assurer que toutes vos images ont du texte alternatif. pdfjs-editor-alt-text-settings-close-button = Fermer + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Surlignage supprimé +pdfjs-editor-undo-bar-message-freetext = Texte supprimé +pdfjs-editor-undo-bar-message-ink = Dessin supprimé +pdfjs-editor-undo-bar-message-stamp = Image supprimée +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotation supprimée + *[other] { $count } annotations supprimées + } +pdfjs-editor-undo-bar-undo-button = + .title = Annuler +pdfjs-editor-undo-bar-undo-button-label = Annuler +pdfjs-editor-undo-bar-close-button = + .title = Fermer +pdfjs-editor-undo-bar-close-button-label = Fermer diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index d53b05906eb0f..15850b4cd570e 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alternative-tekstbewurker pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternative-tekstbewurker daliks toane by tafoegjen fan in ôfbylding pdfjs-editor-alt-text-settings-show-dialog-description = Helpt jo derfoar te soargjen dat al jo ôfbyldingen alternative tekst hawwe. pdfjs-editor-alt-text-settings-close-button = Slute + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Markearring fuortsmiten +pdfjs-editor-undo-bar-message-freetext = Tekst fuortsmiten +pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten +pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotaasje fuortsmiten + *[other] { $count } annotaasjes fuortsmiten + } +pdfjs-editor-undo-bar-undo-button = + .title = Ungedien meitsje +pdfjs-editor-undo-bar-undo-button-label = Ungedien meitsje +pdfjs-editor-undo-bar-close-button = + .title = Slute +pdfjs-editor-undo-bar-close-button-label = Slute diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index 0ea1a42a2a991..6402c6f91feed 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Moñe’ẽrã mokõiha mbosako’ pdfjs-editor-alt-text-settings-show-dialog-button-label = Ehechauka moñe’ẽrã mokõiha mbosako’iha embojuajúvo ta’ãnga pdfjs-editor-alt-text-settings-show-dialog-description = Nepytyvõta ta’ãngakuéra orekotaha moñe’ẽrã mokõiha. pdfjs-editor-alt-text-settings-close-button = Mboty + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Mbosa’ýva mboguete +pdfjs-editor-undo-bar-message-freetext = Moñe’ẽrã mboguepyre +pdfjs-editor-undo-bar-message-ink = Ta’ãnga mboguepyre +pdfjs-editor-undo-bar-message-stamp = Ta’ãnga mboguepyre +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } jehaikue mboguepyre + *[other] { $count } jehaikue mboguepyre + } +pdfjs-editor-undo-bar-undo-button = + .title = Mboguevi +pdfjs-editor-undo-bar-undo-button-label = Mboguevi +pdfjs-editor-undo-bar-close-button = + .title = Mboty +pdfjs-editor-undo-bar-close-button-label = Mboty diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index 073ec0d19b9a4..08308c0be4e47 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -326,7 +326,7 @@ pdfjs-editor-remove-freetext-button = pdfjs-editor-remove-stamp-button = .title = הסרת תמונה pdfjs-editor-remove-highlight-button = - .title = הסרת הדגשה + .title = הסרת סימון ## @@ -342,7 +342,7 @@ pdfjs-editor-stamp-add-image-button-label = הוספת תמונה # This refers to the thickness of the line used for free highlighting (not bound to text) pdfjs-editor-free-highlight-thickness-input = עובי pdfjs-editor-free-highlight-thickness-title = - .title = שינוי עובי בעת הדגשת פריטים שאינם טקסט + .title = שינוי עובי בעת סימון פריטים שאינם טקסט # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = עורך טקסט @@ -408,7 +408,7 @@ pdfjs-editor-resizer-middle-left = ## Color picker # This means "Color used to highlight text" -pdfjs-editor-highlight-colorpicker-label = צבע הדגשה +pdfjs-editor-highlight-colorpicker-label = צבע סימון pdfjs-editor-colorpicker-button = .title = שינוי צבע pdfjs-editor-colorpicker-dropdown = @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = עורך טקסט חלופי pdfjs-editor-alt-text-settings-show-dialog-button-label = הצגת עורך טקסט חלופי מיד בעת הוספת תמונה pdfjs-editor-alt-text-settings-show-dialog-description = מסייע לך לוודא שלכל התמונות שלך יש טקסט חלופי. pdfjs-editor-alt-text-settings-close-button = סגירה + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = הסימון הוסר +pdfjs-editor-undo-bar-message-freetext = הטקסט הוסר +pdfjs-editor-undo-bar-message-ink = הציור הוסר +pdfjs-editor-undo-bar-message-stamp = התמונה הוסרה +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] הערה אחת הוסרה + *[other] { $count } הערות הוסרו + } +pdfjs-editor-undo-bar-undo-button = + .title = ביטול פעולה +pdfjs-editor-undo-bar-undo-button-label = ביטול פעלה +pdfjs-editor-undo-bar-close-button = + .title = סגירה +pdfjs-editor-undo-bar-close-button-label = סגירה diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index e617f923231d4..76307a2254356 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alternatív szöveg szerkesztője pdfjs-editor-alt-text-settings-show-dialog-button-label = Az alternatív szöveg szerkesztőjének azonnali megjelenítése egy kép hozzáadásakor pdfjs-editor-alt-text-settings-show-dialog-description = Segít elérni, hogy az összes képén legyen alternatív szöveg. pdfjs-editor-alt-text-settings-close-button = Bezárás + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Kiemelés eltávolítva +pdfjs-editor-undo-bar-message-freetext = Szöveg eltávolítva +pdfjs-editor-undo-bar-message-ink = Rajz eltávolítva +pdfjs-editor-undo-bar-message-stamp = Kép eltávolítva +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } kommentár eltávolítva + *[other] { $count } kommentár eltávolítva + } +pdfjs-editor-undo-bar-undo-button = + .title = Visszavonás +pdfjs-editor-undo-bar-undo-button-label = Visszavonás +pdfjs-editor-undo-bar-close-button = + .title = Bezárás +pdfjs-editor-undo-bar-close-button-label = Bezárás diff --git a/l10n/ia/viewer.ftl b/l10n/ia/viewer.ftl index fec5130f949b9..91fbaf98fee36 100644 --- a/l10n/ia/viewer.ftl +++ b/l10n/ia/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Rediger texto alternative pdfjs-editor-alt-text-settings-show-dialog-button-label = Monstrar le redactor de texto alternative a pena on adde un imagine pdfjs-editor-alt-text-settings-show-dialog-description = Te adjuta a verifica que tote tu imagines ha un texto alternative. pdfjs-editor-alt-text-settings-close-button = Clauder + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Evidentiation removite +pdfjs-editor-undo-bar-message-freetext = Texto removite +pdfjs-editor-undo-bar-message-ink = Designo removite +pdfjs-editor-undo-bar-message-stamp = Imagine removite +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotation removite + *[other] { $count } annotationes removite + } +pdfjs-editor-undo-bar-undo-button = + .title = Disfacer +pdfjs-editor-undo-bar-undo-button-label = Disfacer +pdfjs-editor-undo-bar-close-button = + .title = Clauder +pdfjs-editor-undo-bar-close-button-label = Clauder diff --git a/l10n/ja/viewer.ftl b/l10n/ja/viewer.ftl index 0eb7fe5f7f375..0f37f2a177bbf 100644 --- a/l10n/ja/viewer.ftl +++ b/l10n/ja/viewer.ftl @@ -349,7 +349,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = 代替テキスト pdfjs-editor-alt-text-edit-button = .aria-label = 代替テキストを編集 @@ -486,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = 代替テキストエディター pdfjs-editor-alt-text-settings-show-dialog-button-label = 画像の追加時に代替テキストエディターを表示する pdfjs-editor-alt-text-settings-show-dialog-description = すべての画像に代替テキストを追加する助けになります。 pdfjs-editor-alt-text-settings-close-button = 閉じる + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = 強調表示が削除されました +pdfjs-editor-undo-bar-message-freetext = フリーテキスト注釈が削除されました +pdfjs-editor-undo-bar-message-ink = インク注釈が削除されました +pdfjs-editor-undo-bar-message-stamp = 画像が削除されました +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = { $count } 個の注釈が削除されました +pdfjs-editor-undo-bar-undo-button = + .title = 元に戻す +pdfjs-editor-undo-bar-undo-button-label = 元に戻す +pdfjs-editor-undo-bar-close-button = + .title = 閉じる +pdfjs-editor-undo-bar-close-button-label = 閉じる diff --git a/l10n/ka/viewer.ftl b/l10n/ka/viewer.ftl index 1a1fdb448b064..d7e30d93cc54b 100644 --- a/l10n/ka/viewer.ftl +++ b/l10n/ka/viewer.ftl @@ -105,6 +105,14 @@ pdfjs-document-properties-button-label = დოკუმენტის შე pdfjs-document-properties-file-name = ფაილის სახელი: pdfjs-document-properties-file-size = ფაილის მოცულობა: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } კბაიტი ({ $b } ბაიტი) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } მბაიტი ({ $b } ბაიტი) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } კბ ({ $size_b } ბაიტი) @@ -119,6 +127,9 @@ pdfjs-document-properties-keywords = საკვანძო სიტყვე pdfjs-document-properties-creation-date = შექმნის დრო: pdfjs-document-properties-modification-date = ჩასწორების დრო: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } @@ -170,7 +181,7 @@ pdfjs-printing-not-ready = გაფრთხილება: PDF სრულ pdfjs-toggle-sidebar-button = .title = გვერდითა ზოლის გამოჩენა/დამალვა pdfjs-toggle-sidebar-notification-button = - .title = გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს) + .title = გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/შრეებს) pdfjs-toggle-sidebar-button-label = გვერდითა ზოლის გამოჩენა/დამალვა pdfjs-document-outline-button = .title = დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა) @@ -179,8 +190,8 @@ pdfjs-attachments-button = .title = დანართების ჩვენება pdfjs-attachments-button-label = დანართები pdfjs-layers-button = - .title = ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება) -pdfjs-layers-button-label = ფენები + .title = შრეების გამოჩენა (ორმაგი წკაპით ყველა შრის ნაგულისხმევზე დაბრუნება) +pdfjs-layers-button-label = შრეები pdfjs-thumbs-button = .title = შეთვალიერება pdfjs-thumbs-button-label = ესკიზები @@ -190,7 +201,7 @@ pdfjs-current-outline-item-button-label = მიმდინარე გვე pdfjs-findbar-button = .title = პოვნა დოკუმენტში pdfjs-findbar-button-label = ძიება -pdfjs-additional-layers = დამატებითი ფენები +pdfjs-additional-layers = დამატებითი შრეები ## Thumbnails panel item (tooltip and alt text for images) @@ -209,10 +220,10 @@ pdfjs-find-input = .title = ძიება .placeholder = პოვნა დოკუმენტში… pdfjs-find-previous-button = - .title = ფრაზის წინა კონტექსტის პოვნა + .title = წინა დამთხვევის პოვნა pdfjs-find-previous-button-label = წინა pdfjs-find-next-button = - .title = ფრაზის შემდეგი კონტექსტის პოვნა + .title = მომდევნო დამთხვევის პოვნა pdfjs-find-next-button-label = შემდეგი pdfjs-find-highlight-checkbox = ყველაფრის მონიშვნა pdfjs-find-match-case-checkbox-label = მთავრულით @@ -275,6 +286,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [{ $type } შენიშვნა] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -288,7 +302,7 @@ pdfjs-web-fonts-disabled = ვებშრიფტები გამორთ pdfjs-editor-free-text-button = .title = წარწერა -pdfjs-editor-free-text-button-label = ტექსტი +pdfjs-editor-free-text-button-label = წარწერა pdfjs-editor-ink-button = .title = ხაზვა pdfjs-editor-ink-button-label = ხაზვა @@ -298,6 +312,10 @@ pdfjs-editor-stamp-button-label = სურათების დართვა pdfjs-editor-highlight-button = .title = მონიშვნა pdfjs-editor-highlight-button-label = მონიშვნა +pdfjs-highlight-floating-button1 = + .title = მონიშვნა + .aria-label = მონიშვნა +pdfjs-highlight-floating-button-label = მონიშვნა ## Remove button for the various kind of editor. @@ -321,6 +339,14 @@ pdfjs-editor-ink-opacity-input = გაუმჭვირვალობა pdfjs-editor-stamp-add-image-button = .title = სურათის დამატება pdfjs-editor-stamp-add-image-button-label = სურათის დამატება +# This refers to the thickness of the line used for free highlighting (not bound to text) +pdfjs-editor-free-highlight-thickness-input = სისქე +pdfjs-editor-free-highlight-thickness-title = + .title = სისქის შეცვლა წარწერის გარდა სხვა ნაწილების მონიშვნისას +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = ნაწერის ჩასწორება + .default-content = დაიწყეთ აკრეფა… pdfjs-free-text = .aria-label = ნაწერის ჩასწორება pdfjs-free-text-default-content = აკრიფეთ… @@ -331,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = თანდართული წარწერა +pdfjs-editor-alt-text-edit-button = + .aria-label = დართული წარწერის ჩასწორება pdfjs-editor-alt-text-edit-button-label = თანდართული წარწერის ჩასწორება pdfjs-editor-alt-text-dialog-label = არჩევა pdfjs-editor-alt-text-dialog-description = თანდართული (შემნაცვლებელი) წარწერა გამოსადეგია მათთვის, ვინც ვერ ხედავს სურათებს ან გამოისახება მაშინ, როცა სურათი ვერ ჩაიტვირთება. @@ -346,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = მოინიშნოს მორ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = მაგალითად, „ახალგაზრდა მამაკაცი მაგიდასთან ზის და სადილობს“ +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = დართული წარწერა ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -397,10 +427,89 @@ pdfjs-editor-colorpicker-red = ## Show all highlights ## This is a toggle button to show/hide all the highlights. +pdfjs-editor-highlight-show-all-button-label = ყველას ჩვენება +pdfjs-editor-highlight-show-all-button = + .title = ყველას ჩვენება ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = დართული წარწერის ჩასწორება (სურათის აღწერის) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = დართული წარწერის დამატება (სურათის აღწერის) +pdfjs-editor-new-alt-text-textarea = + .placeholder = დაწერეთ თქვენი აღწერა აქ… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = მოკლე აღწერა მათთვის, ვინც ვერ ხედავს სურათს ან ვისთანაც ვერ ჩაიტვირთება სურათი. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = ეს დართული წარწერა ავტომატურადაა შედგენილი და შესაძლოა, უმართებულო იყოს. +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = ვრცლად +pdfjs-editor-new-alt-text-create-automatically-button-label = დართული წარწერის ავტომატური შედგენა +pdfjs-editor-new-alt-text-not-now-button = ახლა არა +pdfjs-editor-new-alt-text-error-title = დართული წარწერის შედგენა ვერ მოხერხდა +pdfjs-editor-new-alt-text-error-description = გთხოვთ დაწეროთ საკუთარი დანართი და კვლავ სცადოთ მოგვიანებით. +pdfjs-editor-new-alt-text-error-close-button = დახურვა +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = ჩამოიტვირთება დართული წარწერის შესადეგი AI-მოდელი ({ $downloadedSize } ზომით { $totalSize } მბაიტი) + .aria-valuetext = ჩამოიტვირთება დართული წარწერის შესადეგი AI-მოდელი ({ $downloadedSize } ზომით { $totalSize } მბაიტი) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = დართული წარწერა დამატებულია +pdfjs-editor-new-alt-text-added-button-label = დართული წარწერა დამატებულია +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = აკლია დართული წარწერა +pdfjs-editor-new-alt-text-missing-button-label = აკლია დართული წარწერა +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = დართული წარწერის გადახედვა +pdfjs-editor-new-alt-text-to-review-button-label = დართული წარწერის გადახედვა +# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. +# Variables: +# $generatedAltText (String) - the generated alt-text. +pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = შედგენილია ავტომატურად: { $generatedAltText } ## Image alt-text settings +pdfjs-image-alt-text-settings-button = + .title = სურათის დართული წარწერის პარამეტრები +pdfjs-image-alt-text-settings-button-label = სურათის დართული წარწერის პარამეტრები +pdfjs-editor-alt-text-settings-dialog-label = სურათის დართული წარწერის პარამეტრები +pdfjs-editor-alt-text-settings-automatic-title = ავტომატურად დართული წარწერა +pdfjs-editor-alt-text-settings-create-model-button-label = დართული წარწერის ავტომატური შედგენა +pdfjs-editor-alt-text-settings-create-model-description = აღწერს სურათს მათთვის, ვინც ვერ ხედავს ან ვისთანაც ვერ ჩაიტვირთება. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = დართული წარწერის შესადგენი AI-მოდელი ({ $totalSize } მბაიტი) +pdfjs-editor-alt-text-settings-ai-model-description = ეშვება ადგილობრივად თქვენს მოწყობილობასა, ასე რომ მონაცემები დარჩება პირადი. საჭიროა წარწერის ავტომატურად დართვისთვის. +pdfjs-editor-alt-text-settings-delete-model-button = წაშლა +pdfjs-editor-alt-text-settings-download-model-button = ჩამოტვირთვა +pdfjs-editor-alt-text-settings-downloading-model-button = ჩამოიტვრითება... +pdfjs-editor-alt-text-settings-editor-title = დართული წარწერის ჩამსწორებელი +pdfjs-editor-alt-text-settings-show-dialog-button-label = გამოჩნდეს დართული წარწერის ჩამსწორებელი სურათის დამატებისთანავე +pdfjs-editor-alt-text-settings-show-dialog-description = უზრუნველყოფს, რომ თქვენს ყველა სურათს ახლდეს დართული წარწერა. +pdfjs-editor-alt-text-settings-close-button = დახურვა + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = მონიშვნა მოცილებულია +pdfjs-editor-undo-bar-message-freetext = წარწერა მოცილებულია +pdfjs-editor-undo-bar-message-ink = ნახატი მოცილებულია +pdfjs-editor-undo-bar-message-stamp = სურათი მოცილებულია +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } შენიშვნა მოცილებულია + *[other] { $count } შენიშვნა მოცილებულია + } +pdfjs-editor-undo-bar-undo-button = + .title = დაბრუნება +pdfjs-editor-undo-bar-undo-button-label = დაბრუნება +pdfjs-editor-undo-bar-close-button = + .title = დახურვა +pdfjs-editor-undo-bar-close-button-label = დახურვა diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index 78be96a5c1361..2a88c8bb6f03c 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -493,3 +493,12 @@ pdfjs-editor-alt-text-settings-editor-title = Баламалы мәтін ред pdfjs-editor-alt-text-settings-show-dialog-button-label = Суретті қосқанда балама мәтін редакторын бірден көрсету pdfjs-editor-alt-text-settings-show-dialog-description = Барлық суреттерде балама мәтін бар екеніне көз жеткізуге көмектеседі. pdfjs-editor-alt-text-settings-close-button = Жабу + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-undo-button = + .title = Болдырмау +pdfjs-editor-undo-bar-undo-button-label = Болдырмау +pdfjs-editor-undo-bar-close-button = + .title = Жабу +pdfjs-editor-undo-bar-close-button-label = Жабу diff --git a/l10n/nl/viewer.ftl b/l10n/nl/viewer.ftl index 7c681b6f4557a..fe24ce75f7bd6 100644 --- a/l10n/nl/viewer.ftl +++ b/l10n/nl/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alternatieve-tekstbewerker pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternatieve-tekstbewerker meteen tonen bij toevoegen van een afbeelding pdfjs-editor-alt-text-settings-show-dialog-description = Helpt u ervoor te zorgen dat al uw afbeeldingen alternatieve tekst hebben. pdfjs-editor-alt-text-settings-close-button = Sluiten + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Markering verwijderd +pdfjs-editor-undo-bar-message-freetext = Tekst verwijderd +pdfjs-editor-undo-bar-message-ink = Tekening verwijderd +pdfjs-editor-undo-bar-message-stamp = Afbeelding verwijderd +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotatie verwijderd + *[other] { $count } annotaties verwijderd + } +pdfjs-editor-undo-bar-undo-button = + .title = Ongedaan maken +pdfjs-editor-undo-bar-undo-button-label = Ongedaan maken +pdfjs-editor-undo-bar-close-button = + .title = Sluiten +pdfjs-editor-undo-bar-close-button-label = Sluiten diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index b70a2643781e5..d617e16afec38 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -358,6 +358,8 @@ pdfjs-ink-canvas = ## Alt-text dialog pdfjs-editor-alt-text-button-label = Alt-tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Rediger alt-tekst tekst pdfjs-editor-alt-text-edit-button-label = Rediger alt-tekst tekst pdfjs-editor-alt-text-dialog-label = Vel eit alternativ pdfjs-editor-alt-text-dialog-description = Alt-tekst (alternativ tekst) hjelper når folk ikkje kan sjå bildet eller når det ikkje vert lasta inn. @@ -371,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Merkt som dekorativ # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Til dømes, «Ein ung mann set seg ved eit bord for å ete eit måltid» +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt-tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -451,8 +456,17 @@ pdfjs-editor-new-alt-text-error-close-button = Lat att # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB) .aria-valuetext = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativ tekst lagt til pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst lagt til +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Manglande alternativ tekst pdfjs-editor-new-alt-text-missing-button-label = Manglande alternativ tekst +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Vurder alternativ tekst pdfjs-editor-new-alt-text-to-review-button-label = Vurder alternativ tekst # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -479,3 +493,6 @@ pdfjs-editor-alt-text-settings-editor-title = Alternativ tekst-redigerar pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis alternativ tekst-redigerar direkte når du legg til eit bilde pdfjs-editor-alt-text-settings-show-dialog-description = Hjelper deg med å sørgje for at alle bilda dine har alternativ tekst. pdfjs-editor-alt-text-settings-close-button = Lat att + +## "Annotations removed" bar + diff --git a/l10n/oc/viewer.ftl b/l10n/oc/viewer.ftl index 76bef4fedb5b5..b347aefce4adf 100644 --- a/l10n/oc/viewer.ftl +++ b/l10n/oc/viewer.ftl @@ -220,6 +220,21 @@ pdfjs-find-match-diacritics-checkbox-label = Respectar los diacritics pdfjs-find-entire-word-checkbox-label = Mots entièrs pdfjs-find-reached-top = Naut de la pagina atenh, perseguida del bas pdfjs-find-reached-bottom = Bas de la pagina atench, perseguida al començament +# Variables: +# $current (Number) - the index of the currently active find result +# $total (Number) - the total number of matches in the document +pdfjs-find-match-count = + { $total -> + [one] Ocurréncia { $current } de { $total } + *[other] Ocurréncia { $current } de { $total } + } +# Variables: +# $limit (Number) - the maximum number of matches +pdfjs-find-match-count-limit = + { $limit -> + [one] Mai de { $limit } ocurréncia + *[other] Mai de { $limit } ocurréncias + } pdfjs-find-not-found = Frasa pas trobada ## Predefined zoom values @@ -260,6 +275,9 @@ pdfjs-annotation-date-string = { $date } a { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [Anotacion { $type }] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -312,6 +330,10 @@ pdfjs-editor-stamp-add-image-button = pdfjs-editor-stamp-add-image-button-label = Apondre imatge # This refers to the thickness of the line used for free highlighting (not bound to text) pdfjs-editor-free-highlight-thickness-input = Espessor +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de tèxte + .default-content = Començatz de picar… pdfjs-free-text = .aria-label = Editor de tèxte pdfjs-free-text-default-content = Començatz d’escriure… @@ -322,7 +344,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Tèxt alternatiu pdfjs-editor-alt-text-edit-button-label = Modificar lo tèxt alternatiu pdfjs-editor-alt-text-dialog-label = Causir una opcion @@ -359,3 +380,30 @@ pdfjs-editor-colorpicker-red = pdfjs-editor-highlight-show-all-button-label = O afichar tot pdfjs-editor-highlight-show-all-button = .title = O afichar tot + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + +pdfjs-editor-new-alt-text-error-close-button = Tampar + +## Image alt-text settings + +pdfjs-editor-alt-text-settings-automatic-title = Tèxte alternatiu automatic +pdfjs-editor-alt-text-settings-create-model-button-label = Crear un tèxte alternatiu automaticament +pdfjs-editor-alt-text-settings-delete-model-button = Suprimir +pdfjs-editor-alt-text-settings-download-model-button = Telecargar +pdfjs-editor-alt-text-settings-downloading-model-button = Telecargament… +pdfjs-editor-alt-text-settings-editor-title = Editor de tèxte alternatiu +pdfjs-editor-alt-text-settings-close-button = Tampar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-freetext = Tèxte suprimit +pdfjs-editor-undo-bar-message-ink = Dessenh suprimit +pdfjs-editor-undo-bar-message-stamp = Imatge suprimit +pdfjs-editor-undo-bar-undo-button = + .title = Anullar +pdfjs-editor-undo-bar-undo-button-label = Anullar +pdfjs-editor-undo-bar-close-button = + .title = Tampar +pdfjs-editor-undo-bar-close-button-label = Tampar diff --git a/l10n/pl/viewer.ftl b/l10n/pl/viewer.ftl index 98c1d0919393a..07f94166656b3 100644 --- a/l10n/pl/viewer.ftl +++ b/l10n/pl/viewer.ftl @@ -495,3 +495,24 @@ pdfjs-editor-alt-text-settings-editor-title = Edytor tekstu alternatywnego pdfjs-editor-alt-text-settings-show-dialog-button-label = Wyświetlanie edytora tekstu alternatywnego od razu po dodaniu obrazu pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga upewnić się, że wszystkie obrazy mają tekst alternatywny. pdfjs-editor-alt-text-settings-close-button = Zamknij + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Usunięto wyróżnienie +pdfjs-editor-undo-bar-message-freetext = Usunięto tekst +pdfjs-editor-undo-bar-message-ink = Usunięto rysunek +pdfjs-editor-undo-bar-message-stamp = Usunięto obraz +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] Usunięto przypis + [few] Usunięto { $count } przypisy + *[many] Usunięto { $count } przypisów + } +pdfjs-editor-undo-bar-undo-button = + .title = Cofnij +pdfjs-editor-undo-bar-undo-button-label = Cofnij +pdfjs-editor-undo-bar-close-button = + .title = Zamknij +pdfjs-editor-undo-bar-close-button-label = Zamknij diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 12774cd54a4f5..7da52019a5df0 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar o editor de texto alternativo imediatamente ao adicionar uma imagem pdfjs-editor-alt-text-settings-show-dialog-description = Ajuda a assegurar que todas as suas imagens tenham texto alternativo. pdfjs-editor-alt-text-settings-close-button = Fechar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Destaque removido +pdfjs-editor-undo-bar-message-freetext = Texto removido +pdfjs-editor-undo-bar-message-ink = Desenho removido +pdfjs-editor-undo-bar-message-stamp = Imagem removida +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotação removida + *[other] { $count } anotações removidas + } +pdfjs-editor-undo-bar-undo-button = + .title = Desfazer +pdfjs-editor-undo-bar-undo-button-label = Desfazer +pdfjs-editor-undo-bar-close-button = + .title = Fechar +pdfjs-editor-undo-bar-close-button-label = Fechar diff --git a/l10n/pt-PT/viewer.ftl b/l10n/pt-PT/viewer.ftl index 1db61623bc957..1829417e165d3 100644 --- a/l10n/pt-PT/viewer.ftl +++ b/l10n/pt-PT/viewer.ftl @@ -357,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo pdfjs-editor-alt-text-dialog-label = Escolher uma opção pdfjs-editor-alt-text-dialog-description = O texto alternativo (texto alternativo) ajuda quando as pessoas não conseguem ver a imagem ou quando a mesma não é carregada. @@ -372,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcada como decorativa # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por exemplo, “Um jovem senta-se à mesa para comer uma refeição” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -453,10 +457,16 @@ pdfjs-editor-new-alt-text-error-close-button = Fechar pdfjs-editor-new-alt-text-ai-model-downloading-progress = A transferir o modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) .aria-valuetext = A transferir o modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Texto alternativo adicionado pdfjs-editor-new-alt-text-added-button-label = Texto alternativo adicionado # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Texto alternativo em falta pdfjs-editor-new-alt-text-missing-button-label = Texto alternativo em falta # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Rever texto alternativo pdfjs-editor-new-alt-text-to-review-button-label = Rever texto alternativo # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -483,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar editor de texto alternativo imediatamente ao adicionar uma imagem pdfjs-editor-alt-text-settings-show-dialog-description = Ajuda a garantir que todas as suas imagens tenham um texto alternativo. pdfjs-editor-alt-text-settings-close-button = Fechar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Destaque removido +pdfjs-editor-undo-bar-message-freetext = Texto removido +pdfjs-editor-undo-bar-message-ink = Desenho removido +pdfjs-editor-undo-bar-message-stamp = Imagem removida +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotação removida + *[other] { $count } anotações removidas + } +pdfjs-editor-undo-bar-undo-button = + .title = Anular +pdfjs-editor-undo-bar-undo-button-label = Anular +pdfjs-editor-undo-bar-close-button = + .title = Fechar +pdfjs-editor-undo-bar-close-button-label = Fechar diff --git a/l10n/rm/viewer.ftl b/l10n/rm/viewer.ftl index a4dcda8ac203d..76992dad6f361 100644 --- a/l10n/rm/viewer.ftl +++ b/l10n/rm/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Editur per text alternativ pdfjs-editor-alt-text-settings-show-dialog-button-label = Mussar l’editur per text alternativ directamain cun agiuntar in maletg pdfjs-editor-alt-text-settings-show-dialog-description = Ta gida a garantir che tut tes maletgs hajan in text alternativ. pdfjs-editor-alt-text-settings-close-button = Serrar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Allontanà la marcaziun +pdfjs-editor-undo-bar-message-freetext = Allontanà il text +pdfjs-editor-undo-bar-message-ink = Allontanà il dissegn +pdfjs-editor-undo-bar-message-stamp = Allontanà il maletg +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } annotaziun allontanada + *[other] { $count } annotaziuns allontanadas + } +pdfjs-editor-undo-bar-undo-button = + .title = Revocar +pdfjs-editor-undo-bar-undo-button-label = Revocar +pdfjs-editor-undo-bar-close-button = + .title = Serrar +pdfjs-editor-undo-bar-close-button-label = Serrar diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index 66cd84b2d5f8f..5cbbb8d26fdd1 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -497,3 +497,25 @@ pdfjs-editor-alt-text-settings-editor-title = Editor alternatívneho textu pdfjs-editor-alt-text-settings-show-dialog-button-label = Pri pridávaní obrázka ihneď zobraziť editor alternatívneho textu pdfjs-editor-alt-text-settings-show-dialog-description = Pomáha vám zabezpečiť, aby všetky vaše obrázky mali alternatívny text. pdfjs-editor-alt-text-settings-close-button = Zavrieť + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Zvýraznenie bolo odstránené +pdfjs-editor-undo-bar-message-freetext = Text bol odstránený +pdfjs-editor-undo-bar-message-ink = Kreslenie bolo odstránené +pdfjs-editor-undo-bar-message-stamp = Obrázok bol odstránený +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotácia odstránená + [few] { $count } anotácie odstránené + [many] { $count } anotácií odstránených + *[other] { $count } anotácií odstránených + } +pdfjs-editor-undo-bar-undo-button = + .title = Späť +pdfjs-editor-undo-bar-undo-button-label = Späť +pdfjs-editor-undo-bar-close-button = + .title = Zavrieť +pdfjs-editor-undo-bar-close-button-label = Zavrieť diff --git a/l10n/skr/viewer.ftl b/l10n/skr/viewer.ftl index 186f61474399c..2d0e87f3da25a 100644 --- a/l10n/skr/viewer.ftl +++ b/l10n/skr/viewer.ftl @@ -353,7 +353,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Alt متن pdfjs-editor-alt-text-edit-button-label = alt متن وِچ ترمیم کرو pdfjs-editor-alt-text-dialog-label = ہِک اختیار چُݨو @@ -368,6 +367,9 @@ pdfjs-editor-alt-text-decorative-tooltip = آرائشی دے طور تے نشا # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = مثال دے طور تے، "ہِک جؤان کھاݨاں کھاوݨ کِیتے میز اُتّے ٻیٹھا ہِے" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alt متن ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -449,10 +451,16 @@ pdfjs-editor-new-alt-text-error-close-button = بند کرو pdfjs-editor-new-alt-text-ai-model-downloading-progress = آلٹ عبارت اے آئی ماڈل({ $totalSize }ایم بی دے { $downloadedSize }) ڈاؤن لوڈ تھیندا پئے .aria-valuetext = آلٹ عبارت اے آئی ماڈل({ $totalSize }ایم بی دے { $downloadedSize }) ڈاؤن لوڈ تھیندا پئے # This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = آلٹ عبارت شامل تھی ڳئی pdfjs-editor-new-alt-text-added-button-label = آلٹ عبارت شامل تھی ڳئی # This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = متبادل عبارت غائب ہے pdfjs-editor-new-alt-text-missing-button-label = متبادل عبارت غائب ہے # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = alt متن تے نظرثانی کرو pdfjs-editor-new-alt-text-to-review-button-label = alt متن تے نظرثانی کرو # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -479,3 +487,12 @@ pdfjs-editor-alt-text-settings-editor-title = متبادل ٹیکسٹ ایڈیٹ pdfjs-editor-alt-text-settings-show-dialog-button-label = تصویر شامل کرݨ ویلے فوری طور تے آلٹ ٹیکسٹ ایڈیٹر ݙکھاؤ pdfjs-editor-alt-text-settings-show-dialog-description = ایہ تہاکوں یقینی بݨاوݨ وچ مدد کریندے جو تہاݙیاں ساریاں تصویراں وچ آلٹ عبارت ہے۔ pdfjs-editor-alt-text-settings-close-button = بند کرو + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-undo-button = + .title = کیتا اݨ کیتا +pdfjs-editor-undo-bar-undo-button-label = کیتا اݨ کیتا +pdfjs-editor-undo-bar-close-button = + .title = بند کرو +pdfjs-editor-undo-bar-close-button-label = بند کرو diff --git a/l10n/sl/viewer.ftl b/l10n/sl/viewer.ftl index f7293c702a895..4e004bdd93abd 100644 --- a/l10n/sl/viewer.ftl +++ b/l10n/sl/viewer.ftl @@ -497,3 +497,25 @@ pdfjs-editor-alt-text-settings-editor-title = Urejevalnik nadomestnega besedila pdfjs-editor-alt-text-settings-show-dialog-button-label = Ob dodajanju slike takoj prikaži urejevalnik nadomestnega besedila pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga vam zagotoviti, da imajo vse vaše slike nadomestno besedilo. pdfjs-editor-alt-text-settings-close-button = Zapri + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Označba odstranjena +pdfjs-editor-undo-bar-message-freetext = Besedilo odstranjeno +pdfjs-editor-undo-bar-message-ink = Risba odstranjena +pdfjs-editor-undo-bar-message-stamp = Slika odstranjena +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } označba odstranjena + [two] { $count } označbi odstranjeni + [few] { $count } označbe odstranjene + *[other] { $count } označb odstranjenih + } +pdfjs-editor-undo-bar-undo-button = + .title = Razveljavi +pdfjs-editor-undo-bar-undo-button-label = Razveljavi +pdfjs-editor-undo-bar-close-button = + .title = Zapri +pdfjs-editor-undo-bar-close-button-label = Zapri diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index c800ce822575a..2b1c91aae2462 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -484,3 +484,23 @@ pdfjs-editor-alt-text-settings-editor-title = Përpunues teksti alternativ pdfjs-editor-alt-text-settings-show-dialog-button-label = Shfaq menjëherë përpunues teksti alternativ, kur shtohet një figurë pdfjs-editor-alt-text-settings-show-dialog-description = Ju ndihmon të siguroheni se krejt figurat tuaja kanë tekst alternativ. pdfjs-editor-alt-text-settings-close-button = Mbylle + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = U hoq theksimi +pdfjs-editor-undo-bar-message-freetext = U hoq tekst +pdfjs-editor-undo-bar-message-ink = U hoq vizatim +pdfjs-editor-undo-bar-message-stamp = U hoq figurë +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] U hoq { $count } shënim + *[other] U hoqën { $count } shënime + } +pdfjs-editor-undo-bar-undo-button = + .title = Zhbëje +pdfjs-editor-undo-bar-undo-button-label = Zhbëje +pdfjs-editor-undo-bar-close-button = + .title = Mbylle +pdfjs-editor-undo-bar-close-button-label = Mbylle diff --git a/l10n/tg/viewer.ftl b/l10n/tg/viewer.ftl index 442b7bf1914b7..851174dd92ee1 100644 --- a/l10n/tg/viewer.ftl +++ b/l10n/tg/viewer.ftl @@ -476,3 +476,23 @@ pdfjs-editor-alt-text-settings-download-model-button = Боргирӣ карда pdfjs-editor-alt-text-settings-downloading-model-button = Дар ҳоли боргирӣ… pdfjs-editor-alt-text-settings-editor-title = Муҳаррири матни иловагӣ pdfjs-editor-alt-text-settings-close-button = Пӯшидан + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Ҷудосозӣ тоза карда шуд +pdfjs-editor-undo-bar-message-freetext = Матн тоза карда шуд +pdfjs-editor-undo-bar-message-ink = Расм тоза карда шуд +pdfjs-editor-undo-bar-message-stamp = Тасвир тоза карда шуд +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } ҳошиянависӣ тоза карда шуд + *[other] { $count } ҳошиянависӣ тоза карда шуданд + } +pdfjs-editor-undo-bar-undo-button = + .title = Бекор кардан +pdfjs-editor-undo-bar-undo-button-label = Бекор кардан +pdfjs-editor-undo-bar-close-button = + .title = Пӯшидан +pdfjs-editor-undo-bar-close-button-label = Пӯшидан diff --git a/l10n/th/viewer.ftl b/l10n/th/viewer.ftl index 5a3cc99c79b4d..cba15f90fa09c 100644 --- a/l10n/th/viewer.ftl +++ b/l10n/th/viewer.ftl @@ -485,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = ตัวแก้ไขข้อ pdfjs-editor-alt-text-settings-show-dialog-button-label = แสดงตัวแก้ไขข้อความทดแทนทันทีเมื่อเพิ่มภาพ pdfjs-editor-alt-text-settings-show-dialog-description = ช่วยให้คุณแน่ใจว่าภาพทั้งหมดของคุณมีข้อความทดแทน pdfjs-editor-alt-text-settings-close-button = ปิด + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = เอาการเน้นสีออกแล้ว +pdfjs-editor-undo-bar-message-freetext = เอาข้อความออกแล้ว +pdfjs-editor-undo-bar-message-ink = เอาภาพวาดออกแล้ว +pdfjs-editor-undo-bar-message-stamp = เอาภาพออกแล้ว +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = เอาคำอธิบายประกอบ { $count } รายการออกแล้ว +pdfjs-editor-undo-bar-undo-button = + .title = เลิกทำ +pdfjs-editor-undo-bar-undo-button-label = เลิกทำ +pdfjs-editor-undo-bar-close-button = + .title = ปิด +pdfjs-editor-undo-bar-close-button-label = ปิด diff --git a/l10n/tr/viewer.ftl b/l10n/tr/viewer.ftl index 8104fdc365f5f..b1b7cbfaa4e76 100644 --- a/l10n/tr/viewer.ftl +++ b/l10n/tr/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Alt metin düzenleyicisi pdfjs-editor-alt-text-settings-show-dialog-button-label = Resim eklerken alt metin düzenleyicisini hemen göster pdfjs-editor-alt-text-settings-show-dialog-description = Tüm resimlerinizin alt metne sahip olduğundan emin olmanızı sağlar. pdfjs-editor-alt-text-settings-close-button = Kapat + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Vurgulama silindi +pdfjs-editor-undo-bar-message-freetext = Metin silindi +pdfjs-editor-undo-bar-message-ink = Çizim silindi +pdfjs-editor-undo-bar-message-stamp = Görsel silindi +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } ek açıklama silindi + *[other] { $count } ek açıklama silindi + } +pdfjs-editor-undo-bar-undo-button = + .title = Geri al +pdfjs-editor-undo-bar-undo-button-label = Geri al +pdfjs-editor-undo-bar-close-button = + .title = Kapat +pdfjs-editor-undo-bar-close-button-label = Kapat diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index c5f1057cc391e..df85a5cf792dc 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -495,3 +495,24 @@ pdfjs-editor-alt-text-settings-editor-title = Редактор альтерна pdfjs-editor-alt-text-settings-show-dialog-button-label = Показувати редактор альтернативного тексту під час додавання зображення pdfjs-editor-alt-text-settings-show-dialog-description = Допомагає переконатися, що всі ваші зображення мають альтернативний текст. pdfjs-editor-alt-text-settings-close-button = Закрити + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Підсвічення вилучено +pdfjs-editor-undo-bar-message-freetext = Текст вилучено +pdfjs-editor-undo-bar-message-ink = Малюнок вилучено +pdfjs-editor-undo-bar-message-stamp = Зображення вилучено +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } анотацію вилучено + [few] { $count } анотації вилучено + *[many] { $count } анотацій вилучено + } +pdfjs-editor-undo-bar-undo-button = + .title = Повернути +pdfjs-editor-undo-bar-undo-button-label = Повернути +pdfjs-editor-undo-bar-close-button = + .title = Закрити +pdfjs-editor-undo-bar-close-button-label = Закрити diff --git a/l10n/zh-CN/viewer.ftl b/l10n/zh-CN/viewer.ftl index 7a79f379a8466..8fe9a6ae4dce3 100644 --- a/l10n/zh-CN/viewer.ftl +++ b/l10n/zh-CN/viewer.ftl @@ -485,3 +485,19 @@ pdfjs-editor-alt-text-settings-editor-title = 替换文字编辑器 pdfjs-editor-alt-text-settings-show-dialog-button-label = 添加图像后立即显示替换文字编辑器 pdfjs-editor-alt-text-settings-show-dialog-description = 帮助确保所有图像均拥有替换文字。 pdfjs-editor-alt-text-settings-close-button = 关闭 + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = 已移除高亮 +pdfjs-editor-undo-bar-message-freetext = 已移除文本 +pdfjs-editor-undo-bar-message-ink = 已移除绘图 +pdfjs-editor-undo-bar-message-stamp = 已移除图像 +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 条注释 +pdfjs-editor-undo-bar-undo-button = + .title = 撤销 +pdfjs-editor-undo-bar-undo-button-label = 撤销 +pdfjs-editor-undo-bar-close-button = + .title = 关闭 +pdfjs-editor-undo-bar-close-button-label = 关闭 From 2136c99aa7385d863e13ca4b2c4092bd15bb10c5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 21 Dec 2024 14:15:28 +0100 Subject: [PATCH 152/338] Add missing `startWorkerTask` calls in the "SaveDocument" handler Without these calls we'll not actually wait for saving to complete when document destruction runs; compare with other `WorkerTask`-usage in this file. While I cannot imagine that this has caused any problems for library users, the code is however not technically correct as-is. --- src/core/worker.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/worker.js b/src/core/worker.js index ecd0c52c0e7a5..7ae22ee45afdb 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -177,6 +177,7 @@ class WorkerMessageHandler { if (isPureXfa) { const task = new WorkerTask("loadXfaFonts"); startWorkerTask(task); + await Promise.all([ pdfManager .loadXfaFonts(handler, task) @@ -590,6 +591,8 @@ class WorkerMessageHandler { newAnnotationPromises.push( pdfManager.getPage(pageIndex).then(page => { const task = new WorkerTask(`Save (editor): page ${pageIndex}`); + startWorkerTask(task); + return page .saveNewAnnotations( handler, @@ -637,6 +640,8 @@ class WorkerMessageHandler { promises.push( pdfManager.getPage(pageIndex).then(function (page) { const task = new WorkerTask(`Save: page ${pageIndex}`); + startWorkerTask(task); + return page .save(handler, task, annotationStorage, changes) .finally(function () { From f4269009fc9a6adbfe039e95bca44fcfb7852e42 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 22 Dec 2024 13:30:57 +0100 Subject: [PATCH 153/338] Move the integration tests boot file to the integration tests folder This file is specific to the integration tests, so this commit moves it to bundle the integration test logic a bit better and to match the unit/font tests in terms of folder structure for consistency. --- test/{integration-boot.mjs => integration/jasmine-boot.js} | 2 ++ test/test.mjs | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) rename test/{integration-boot.mjs => integration/jasmine-boot.js} (98%) diff --git a/test/integration-boot.mjs b/test/integration/jasmine-boot.js similarity index 98% rename from test/integration-boot.mjs rename to test/integration/jasmine-boot.js index 4e04bb6f1f5d6..3dff4d9f0a389 100644 --- a/test/integration-boot.mjs +++ b/test/integration/jasmine-boot.js @@ -13,6 +13,8 @@ * limitations under the License. */ +/* eslint-disable no-console */ + import Jasmine from "jasmine"; async function runTests(results) { diff --git a/test/test.mjs b/test/test.mjs index 4d16c8ea1e656..3f031b066df80 100644 --- a/test/test.mjs +++ b/test/test.mjs @@ -806,7 +806,7 @@ async function startIntegrationTest() { onAllSessionsClosed = onAllSessionsClosedAfterTests("integration"); startServer(); - const { runTests } = await import("./integration-boot.mjs"); + const { runTests } = await import("./integration/jasmine-boot.js"); await startBrowsers({ baseUrl: null, initializeSession: session => { From 3efddc4ffb4312fb35734eb083814fa349f776db Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 22 Dec 2024 13:33:41 +0100 Subject: [PATCH 154/338] Move the reporter file to the test root folder The reporter is used in both the unit and the font tests, so this commit moves it to the test root folder to more clearly indicate that this is a shared resource and so the font tests don't have to reach into the unit tests folder to import it (which improves separation). --- test/font/jasmine-boot.js | 2 +- test/{unit/testreporter.js => reporter.js} | 0 test/unit/jasmine-boot.js | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename test/{unit/testreporter.js => reporter.js} (100%) diff --git a/test/font/jasmine-boot.js b/test/font/jasmine-boot.js index e9646db4242de..a8b81ded0964d 100644 --- a/test/font/jasmine-boot.js +++ b/test/font/jasmine-boot.js @@ -40,7 +40,7 @@ "use strict"; -import { TestReporter } from "../unit/testreporter.js"; +import { TestReporter } from "../reporter.js"; async function initializePDFJS(callback) { await Promise.all( diff --git a/test/unit/testreporter.js b/test/reporter.js similarity index 100% rename from test/unit/testreporter.js rename to test/reporter.js diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 4c0967dc4bfcc..230a8056172a5 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -42,7 +42,7 @@ import { GlobalWorkerOptions } from "pdfjs/display/worker_options.js"; import { isNodeJS } from "../../src/shared/util.js"; -import { TestReporter } from "./testreporter.js"; +import { TestReporter } from "../reporter.js"; async function initializePDFJS(callback) { await Promise.all( From 536304d7f1f7d44b933bcc3f35029819977a83c4 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 22 Dec 2024 13:35:44 +0100 Subject: [PATCH 155/338] Update the page title/favicon of the test runner HTML files This commit makes sure that the font tests are no longer reported as being unit tests and that the PDF.js logo is shown in the browser tab to make PDF.js-specific resources/tabs more easily identifyable during e.g. development. --- test/font/font_test.html | 2 +- test/resources/favicon.ico | Bin 1406 -> 32988 bytes test/unit/unit_test.html | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/font/font_test.html b/test/font/font_test.html index dd361c6990b41..c8b09b700e9c6 100644 --- a/test/font/font_test.html +++ b/test/font/font_test.html @@ -1,7 +1,7 @@ - pdf.js unit test + PDF.js font tests diff --git a/test/resources/favicon.ico b/test/resources/favicon.ico index d44438903b751f4732f5365783eb0229b0501f9a..39040bb937c9e76f1a3bf4596460739db6cda0b7 100644 GIT binary patch literal 32988 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 diff --git a/test/unit/unit_test.html b/test/unit/unit_test.html index 29c5c93e93406..15f7fcf61acb9 100644 --- a/test/unit/unit_test.html +++ b/test/unit/unit_test.html @@ -1,7 +1,7 @@ - pdf.js unit test + PDF.js unit tests From df0b3a83748787ac8718fd8c71a6071f5418946c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 26 Dec 2024 11:34:36 +0100 Subject: [PATCH 156/338] Remove mention of Bower from the README (PR 15390 follow-up) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 065e2551db119..0e9fac7833597 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ be loaded by `pdf.js`. The PDF.js files are large and should be minified for pro ## Using PDF.js in a web application To use PDF.js in a web application you can choose to use a pre-built version of the library -or to build it from source. We supply pre-built versions for usage with NPM and Bower under +or to build it from source. We supply pre-built versions for usage with NPM under the `pdfjs-dist` name. For more information and examples please refer to the [wiki page](https://github.com/mozilla/pdf.js/wiki/Setup-pdf.js-in-a-website) on this subject. From 0314110f0c6663fe9829f0ac7347db196120594d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 26 Dec 2024 18:37:25 +0100 Subject: [PATCH 157/338] Shorten some `if`-statements in the `src/core/` folder Thanks to modern JavaScript there's some existing code that can be shortened slightly. --- src/core/annotation.js | 18 +++++++----------- src/core/catalog.js | 7 ++----- src/core/ccitt.js | 2 +- src/core/decrypt_stream.js | 2 +- src/core/font_renderer.js | 2 +- src/core/xref.js | 11 ++++------- 6 files changed, 16 insertions(+), 26 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 1c6877972f473..c87f99f4b3d4f 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -1686,12 +1686,12 @@ class MarkupAnnotation extends Annotation { buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`); } - let pointsArray = this.data.quadPoints; - if (!pointsArray) { - // If there are no quadpoints, the rectangle should be used instead. - // Convert the rectangle definition to a points array similar to how the - // quadpoints are defined. - pointsArray = Float32Array.from([ + // If there are no quadpoints, the rectangle should be used instead. + // Convert the rectangle definition to a points array similar to how the + // quadpoints are defined. + const pointsArray = + this.data.quadPoints || + Float32Array.from([ this.rectangle[0], this.rectangle[3], this.rectangle[2], @@ -1701,7 +1701,6 @@ class MarkupAnnotation extends Annotation { this.rectangle[2], this.rectangle[1], ]); - } for (let i = 0, ii = pointsArray.length; i < ii; i += 8) { const [mX, MX, mY, MY] = pointsCallback( @@ -1755,11 +1754,8 @@ class MarkupAnnotation extends Annotation { } static async createNewAnnotation(xref, annotation, changes, params) { - if (!annotation.ref) { - annotation.ref = xref.getNewTemporaryRef(); - } + const annotationRef = (annotation.ref ||= xref.getNewTemporaryRef()); - const annotationRef = annotation.ref; const ap = await this.createNewAppearanceStream(annotation, xref, params); let annotationDict; diff --git a/src/core/catalog.js b/src/core/catalog.js index 00524c32ee4d9..a38be8f9a9988 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -567,10 +567,7 @@ class Catalog { const onParsed = []; if (Array.isArray(refs)) { for (const value of refs) { - if (!(value instanceof Ref)) { - continue; - } - if (groupRefCache.has(value)) { + if (value instanceof Ref && groupRefCache.has(value)) { onParsed.push(value.toString()); } } @@ -629,7 +626,7 @@ class Catalog { return null; } const nestedOrder = parseOrder(value.slice(1), nestedLevels); - if (!nestedOrder || !nestedOrder.length) { + if (!nestedOrder?.length) { return null; } return { name: stringToPDFString(nestedName), order: nestedOrder }; diff --git a/src/core/ccitt.js b/src/core/ccitt.js index ac204bd8098bc..8a57a5dbe46ed 100644 --- a/src/core/ccitt.js +++ b/src/core/ccitt.js @@ -466,7 +466,7 @@ const blackTable3 = [ */ class CCITTFaxDecoder { constructor(source, options = {}) { - if (!source || typeof source.next !== "function") { + if (typeof source?.next !== "function") { throw new Error('CCITTFaxDecoder - invalid "source" parameter.'); } this.source = source; diff --git a/src/core/decrypt_stream.js b/src/core/decrypt_stream.js index 99dfd4ffa51a6..ee2fff21f0503 100644 --- a/src/core/decrypt_stream.js +++ b/src/core/decrypt_stream.js @@ -36,7 +36,7 @@ class DecryptStream extends DecodeStream { chunk = this.str.getBytes(chunkSize); this.initialized = true; } - if (!chunk || chunk.length === 0) { + if (!chunk?.length) { this.eof = true; return; } diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 37342fc300dc9..271f7302ca0e0 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -818,7 +818,7 @@ class CompiledFont { } compileGlyph(code, glyphId) { - if (!code || code.length === 0 || code[0] === 14) { + if (!code?.length || code[0] === 14) { return NOOP; } diff --git a/src/core/xref.js b/src/core/xref.js index 75e5d1626d4e1..669af0ed82f03 100644 --- a/src/core/xref.js +++ b/src/core/xref.js @@ -310,18 +310,15 @@ class XRef { if (!("streamState" in this)) { // Stores state of the stream as we process it so we can resume // from middle of stream in case of missing data error - const streamParameters = stream.dict; - const byteWidths = streamParameters.get("W"); - let range = streamParameters.get("Index"); - if (!range) { - range = [0, streamParameters.get("Size")]; - } + const { dict, pos } = stream; + const byteWidths = dict.get("W"); + const range = dict.get("Index") || [0, dict.get("Size")]; this.streamState = { entryRanges: range, byteWidths, entryNum: 0, - streamPos: stream.pos, + streamPos: pos, }; } this.readXRefStream(stream); From 2d07e1cd03ff857d0c8f9d28534e47b1ec7d73f8 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 27 Dec 2024 14:06:14 +0100 Subject: [PATCH 158/338] Remove the unused `glyphNameMap` parameter from `Type2Compiled` As part of the changes in PR 4259, which landed over ten years ago, the `glyphNameMap` property on `Font`-instances was removed. The reason that this didn't cause any bugs is that we always fallback on `getGlyphsUnicode`, and when using that data we also rely on `StandardEncoding`, hence we should just remove the unused parameter from the `Type2Compiled` constructor. --- src/core/font_renderer.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 271f7302ca0e0..3276f6c83060a 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -870,14 +870,14 @@ class TrueTypeCompiled extends CompiledFont { } class Type2Compiled extends CompiledFont { - constructor(cffInfo, cmap, fontMatrix, glyphNameMap) { + constructor(cffInfo, cmap, fontMatrix) { super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]); this.glyphs = cffInfo.glyphs; this.gsubrs = cffInfo.gsubrs || []; this.subrs = cffInfo.subrs || []; this.cmap = cmap; - this.glyphNameMap = glyphNameMap || getGlyphsUnicode(); + this.glyphNameMap = getGlyphsUnicode(); this.gsubrsBias = getSubroutineBias(this.gsubrs); this.subrsBias = getSubroutineBias(this.subrs); @@ -931,7 +931,7 @@ class FontRendererFactory { fontMatrix ); } - return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); + return new Type2Compiled(cff, cmap, font.fontMatrix); } } From 2c19d425d72b18515d8cff0b8b70f163eb2e723a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 27 Dec 2024 11:41:49 +0100 Subject: [PATCH 159/338] Assert that the `fontMatrix` is always valid in `compileGlyph` While [bug 1893645](https://bugzilla.mozilla.org/show_bug.cgi?id=1893645) was fixed some time ago now, it still shouldn't hurt to also assert that the `fontMatrix` is always valid when invoking the `compileGlyph` method. --- src/core/font_renderer.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 3276f6c83060a..8d788dcd9b650 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -14,6 +14,7 @@ */ import { + assert, bytesToString, FONT_IDENTITY_MATRIX, FormatError, @@ -23,6 +24,7 @@ import { } from "../shared/util.js"; import { CFFParser } from "./cff_parser.js"; import { getGlyphsUnicode } from "./glyphlist.js"; +import { isNumberArray } from "./core_utils.js"; import { StandardEncoding } from "./encodings.js"; import { Stream } from "./stream.js"; @@ -834,6 +836,7 @@ class CompiledFont { warn("Invalid fd index for glyph index."); } } + assert(isNumberArray(fontMatrix, 6), "Expected a valid fontMatrix."); const cmds = new Commands(); cmds.transform(fontMatrix.slice()); From f43edb108e4e38b475a82d0742a662b972a4477d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 26 Dec 2024 12:15:06 +0100 Subject: [PATCH 160/338] Reduce duplication when handling "DocException" and "PasswordRequest" messages Rather than having to manually implement the exception-handling for the "DocException" message, we can instead re-use (and slightly extend) the existing `wrapReason` function since that one already does what we need. Furthermore, we can also simplify handling of the "PasswordRequest" message a little bit and again re-use the `wrapReason` function. Finally, the patch makes the following smaller changes: - Avoid needlessly re-creating exceptions in the `wrapReason` function. - Use a slightly shorter parameter name in the `wrapReason` function. - Remove the unused entries in the `CallbackKind`/`StreamKind` enumerations. --- src/core/worker.js | 19 +++---------- src/display/api.js | 51 +++++++++-------------------------- src/shared/message_handler.js | 39 ++++++++++++++++----------- 3 files changed, 38 insertions(+), 71 deletions(-) diff --git a/src/core/worker.js b/src/core/worker.js index 7ae22ee45afdb..f1ab5b57c6d24 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -18,14 +18,10 @@ import { assert, getVerbosityLevel, info, - InvalidPDFException, isNodeJS, - MissingPDFException, PasswordException, setVerbosityLevel, stringToPDFString, - UnexpectedResponseException, - UnknownErrorException, VerbosityLevel, warn, } from "../shared/util.js"; @@ -36,10 +32,10 @@ import { } from "./core_utils.js"; import { Dict, isDict, Ref, RefSetCache } from "./primitives.js"; import { LocalPdfManager, NetworkPdfManager } from "./pdf_manager.js"; +import { MessageHandler, wrapReason } from "../shared/message_handler.js"; import { AnnotationFactory } from "./annotation.js"; import { clearGlobalCaches } from "./cleanup_helper.js"; import { incrementalUpdate } from "./writer.js"; -import { MessageHandler } from "../shared/message_handler.js"; import { PDFWorkerStream } from "./worker_stream.js"; import { StructTreeRoot } from "./struct_tree.js"; @@ -347,18 +343,9 @@ class WorkerMessageHandler { finishWorkerTask(task); handler.send("DocException", ex); }); - } else if ( - ex instanceof InvalidPDFException || - ex instanceof MissingPDFException || - ex instanceof UnexpectedResponseException || - ex instanceof UnknownErrorException - ) { - handler.send("DocException", ex); } else { - handler.send( - "DocException", - new UnknownErrorException(ex.message, ex.toString()) - ); + // Ensure that we always fallback to `UnknownErrorException`. + handler.send("DocException", wrapReason(ex)); } } diff --git a/src/display/api.js b/src/display/api.js index 1594d7cb2bfd1..04d0d8f88dc2b 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -24,17 +24,12 @@ import { FeatureTest, getVerbosityLevel, info, - InvalidPDFException, isNodeJS, MAX_IMAGE_SIZE_TO_CACHE, - MissingPDFException, - PasswordException, RenderingIntentFlag, setVerbosityLevel, shadow, stringToBytes, - UnexpectedResponseException, - UnknownErrorException, unreachable, warn, } from "../shared/util.js"; @@ -51,6 +46,7 @@ import { RenderingCancelledException, StatTimer, } from "./display_utils.js"; +import { MessageHandler, wrapReason } from "../shared/message_handler.js"; import { NodeCanvasFactory, NodeCMapReaderFactory, @@ -63,7 +59,6 @@ import { DOMCMapReaderFactory } from "display-cmap_reader_factory"; import { DOMFilterFactory } from "./filter_factory.js"; import { DOMStandardFontDataFactory } from "display-standard_fontdata_factory"; import { GlobalWorkerOptions } from "./worker_options.js"; -import { MessageHandler } from "../shared/message_handler.js"; import { Metadata } from "./metadata.js"; import { OptionalContentConfig } from "./optional_content_config.js"; import { PDFDataTransportStream } from "./transport_stream.js"; @@ -2731,34 +2726,18 @@ class WorkerTransport { loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this)); }); - messageHandler.on("DocException", function (ex) { - let reason; - switch (ex.name) { - case "PasswordException": - reason = new PasswordException(ex.message, ex.code); - break; - case "InvalidPDFException": - reason = new InvalidPDFException(ex.message); - break; - case "MissingPDFException": - reason = new MissingPDFException(ex.message); - break; - case "UnexpectedResponseException": - reason = new UnexpectedResponseException(ex.message, ex.status); - break; - case "UnknownErrorException": - reason = new UnknownErrorException(ex.message, ex.details); - break; - default: - unreachable("DocException - expected a valid Error."); - } - loadingTask._capability.reject(reason); + messageHandler.on("DocException", ex => { + loadingTask._capability.reject(wrapReason(ex)); }); - messageHandler.on("PasswordRequest", exception => { + messageHandler.on("PasswordRequest", ex => { this.#passwordCapability = Promise.withResolvers(); - if (loadingTask.onPassword) { + try { + if (!loadingTask.onPassword) { + throw wrapReason(ex); + } + const updatePassword = password => { if (password instanceof Error) { this.#passwordCapability.reject(password); @@ -2766,15 +2745,9 @@ class WorkerTransport { this.#passwordCapability.resolve({ password }); } }; - try { - loadingTask.onPassword(updatePassword, exception.code); - } catch (ex) { - this.#passwordCapability.reject(ex); - } - } else { - this.#passwordCapability.reject( - new PasswordException(exception.message, exception.code) - ); + loadingTask.onPassword(updatePassword, ex.code); + } catch (err) { + this.#passwordCapability.reject(err); } return this.#passwordCapability.promise; }); diff --git a/src/shared/message_handler.js b/src/shared/message_handler.js index 0ed90ee5e8435..9ea0e5f79e030 100644 --- a/src/shared/message_handler.js +++ b/src/shared/message_handler.js @@ -16,6 +16,7 @@ import { AbortException, assert, + InvalidPDFException, MissingPDFException, PasswordException, UnexpectedResponseException, @@ -24,13 +25,11 @@ import { } from "./util.js"; const CallbackKind = { - UNKNOWN: 0, DATA: 1, ERROR: 2, }; const StreamKind = { - UNKNOWN: 0, CANCEL: 1, CANCEL_COMPLETE: 2, CLOSE: 3, @@ -43,31 +42,39 @@ const StreamKind = { function onFn() {} -function wrapReason(reason) { +function wrapReason(ex) { if ( - !( - reason instanceof Error || - (typeof reason === "object" && reason !== null) - ) + ex instanceof AbortException || + ex instanceof InvalidPDFException || + ex instanceof MissingPDFException || + ex instanceof PasswordException || + ex instanceof UnexpectedResponseException || + ex instanceof UnknownErrorException ) { + // Avoid re-creating the exception when its type is already correct. + return ex; + } + + if (!(ex instanceof Error || (typeof ex === "object" && ex !== null))) { unreachable( 'wrapReason: Expected "reason" to be a (possibly cloned) Error.' ); } - switch (reason.name) { + switch (ex.name) { case "AbortException": - return new AbortException(reason.message); + return new AbortException(ex.message); + case "InvalidPDFException": + return new InvalidPDFException(ex.message); case "MissingPDFException": - return new MissingPDFException(reason.message); + return new MissingPDFException(ex.message); case "PasswordException": - return new PasswordException(reason.message, reason.code); + return new PasswordException(ex.message, ex.code); case "UnexpectedResponseException": - return new UnexpectedResponseException(reason.message, reason.status); + return new UnexpectedResponseException(ex.message, ex.status); case "UnknownErrorException": - return new UnknownErrorException(reason.message, reason.details); - default: - return new UnknownErrorException(reason.message, reason.toString()); + return new UnknownErrorException(ex.message, ex.details); } + return new UnknownErrorException(ex.message, ex.toString()); } class MessageHandler { @@ -532,4 +539,4 @@ class MessageHandler { } } -export { MessageHandler }; +export { MessageHandler, wrapReason }; From ed4de2500c4663bcaade46075fb2df2a45b9f22f Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 30 Dec 2024 14:13:27 +0100 Subject: [PATCH 161/338] For images that include SMask/Mask entries, ignore an SMask defined in the current graphics state From section [11.6.4.3 Mask Shape and Opacity](https://opensource.adobe.com/dc-acrobat-sdk-docs/pdfstandards/PDF32000_2008.pdf#G10.4848628) in the PDF specification: - An image XObject may contain its own *soft-mask image* in the form of a subsidiary image XObject in the `SMask` entry of the image dictionary (see "Image Dictionaries"). This mask, if present, shall override any explicit or colour key mask specified by the image dictionary's `Mask` entry. Either form of mask in the image dictionary shall override the current soft mask in the graphics state. --- src/core/evaluator.js | 26 ++++++++++++++++---------- src/core/operator_list.js | 9 ++++++++- test/pdfs/.gitignore | 1 + test/pdfs/issue14200.pdf | Bin 0 -> 679384 bytes test/test_manifest.json | 7 +++++++ 5 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 test/pdfs/issue14200.pdf diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 84cce0b28a9a2..f22f75a8bfa02 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -175,7 +175,7 @@ function addLocallyCachedImageOps(opList, data) { if (data.objId) { opList.addDependency(data.objId); } - opList.addImageOps(data.fn, data.args, data.optionalContent); + opList.addImageOps(data.fn, data.args, data.optionalContent, data.hasMask); if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) { data.args[0].count++; @@ -730,13 +730,9 @@ class PartialEvaluator { } const SMALL_IMAGE_DIMENSIONS = 200; + const hasMask = dict.has("SMask") || dict.has("Mask"); // Inlining small images into the queue as RGB data - if ( - isInline && - w + h < SMALL_IMAGE_DIMENSIONS && - !dict.has("SMask") && - !dict.has("Mask") - ) { + if (isInline && w + h < SMALL_IMAGE_DIMENSIONS && !hasMask) { try { const imageObj = new PDFImage({ xref: this.xref, @@ -793,7 +789,12 @@ class PartialEvaluator { // Ensure that the dependency is added before the image is decoded. operatorList.addDependency(objId); args = [objId, w, h]; - operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent); + operatorList.addImageOps( + OPS.paintImageXObject, + args, + optionalContent, + hasMask + ); if (cacheGlobally) { if (this.globalImageCache.hasDecodeFailed(imageRef)) { @@ -802,6 +803,7 @@ class PartialEvaluator { fn: OPS.paintImageXObject, args, optionalContent, + hasMask, byteSize: 0, // Data is `null`, since decoding failed previously. }); @@ -812,7 +814,7 @@ class PartialEvaluator { // For large (at least 500x500) or more complex images that we'll cache // globally, check if the image is still cached locally on the main-thread // to avoid having to re-parse the image (since that can be slow). - if (w * h > 250000 || dict.has("SMask") || dict.has("Mask")) { + if (w * h > 250000 || hasMask) { const localLength = await this.handler.sendWithPromise("commonobj", [ objId, "CopyLocalImage", @@ -825,6 +827,7 @@ class PartialEvaluator { fn: OPS.paintImageXObject, args, optionalContent, + hasMask, byteSize: 0, // Temporary entry, to avoid `setData` returning early. }); this.globalImageCache.addByteSize(imageRef, localLength); @@ -872,6 +875,7 @@ class PartialEvaluator { fn: OPS.paintImageXObject, args, optionalContent, + hasMask, }; localImageCache.set(cacheKey, imageRef, cacheData); @@ -884,6 +888,7 @@ class PartialEvaluator { fn: OPS.paintImageXObject, args, optionalContent, + hasMask, byteSize: 0, // Temporary entry, note `addByteSize` above. }); } @@ -1814,7 +1819,8 @@ class PartialEvaluator { operatorList.addImageOps( globalImage.fn, globalImage.args, - globalImage.optionalContent + globalImage.optionalContent, + globalImage.hasMask ); resolveXObject(); diff --git a/src/core/operator_list.js b/src/core/operator_list.js index 2fdc1bb9179e3..1212e6e939461 100644 --- a/src/core/operator_list.js +++ b/src/core/operator_list.js @@ -636,7 +636,11 @@ class OperatorList { } } - addImageOps(fn, args, optionalContent) { + addImageOps(fn, args, optionalContent, hasMask = false) { + if (hasMask) { + this.addOp(OPS.save); + this.addOp(OPS.setGState, [[["SMask", false]]]); + } if (optionalContent !== undefined) { this.addOp(OPS.beginMarkedContentProps, ["OC", optionalContent]); } @@ -646,6 +650,9 @@ class OperatorList { if (optionalContent !== undefined) { this.addOp(OPS.endMarkedContent, []); } + if (hasMask) { + this.addOp(OPS.restore); + } } addDependency(dependency) { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index e619579ba44ec..b9b4efbd2fc69 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -232,6 +232,7 @@ !issue5954.pdf !issue6612.pdf !alphatrans.pdf +!issue14200.pdf !pattern_text_embedded_font.pdf !devicen.pdf !cmykjpeg.pdf diff --git a/test/pdfs/issue14200.pdf b/test/pdfs/issue14200.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1c8d1d6f2c0d4225657a9c91c2f57d5cdba53bf1 GIT binary patch literal 679384 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�qZ1#FGZGGt)-8)4Q9hH`o(|cVZuVjO0&h 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

I>*~WtptXypn>PszN5WtW?S>71ot@HL*H) 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

$W1VQQ_!FW8l26%ow> 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≪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®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

g8e2Lec6T^?eJP1w!T&O}Fbt=F1u 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 966f9f183b420..6dd3446ed4cfc 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -5255,6 +5255,13 @@ "link": true, "type": "eq" }, + { + "id": "issue14200", + "file": "pdfs/issue14200.pdf", + "md5": "4dba2cde1c6e65abe53e66eefc97a7f1", + "rounds": 1, + "type": "eq" + }, { "id": "jbig2_huffman_1", "file": "pdfs/jbig2_huffman_1.pdf", From 23d8f9b5e57ec30237c262f526cdccff19086de3 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 31 Dec 2024 13:51:43 +0100 Subject: [PATCH 162/338] Update l10n files Let's ensure that the l10n files are up-to-date before the next release. --- l10n/es-CL/viewer.ftl | 2 +- l10n/es-MX/viewer.ftl | 116 +++++++++++++++++++++++++++++++++++++++++- l10n/eu/viewer.ftl | 20 ++++++++ l10n/ka/viewer.ftl | 4 +- l10n/kk/viewer.ftl | 11 ++++ l10n/tg/viewer.ftl | 17 +++++++ l10n/uk/viewer.ftl | 2 +- 7 files changed, 167 insertions(+), 5 deletions(-) diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index c711d62a0346a..74389e4dd546e 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -292,7 +292,7 @@ pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", tim ## Password -pdfjs-password-label = Ingrese la contraseña para abrir este archivo PDF. +pdfjs-password-label = Ingresa la contraseña para abrir este archivo PDF. pdfjs-password-invalid = Contraseña inválida. Por favor, vuelve a intentarlo. pdfjs-password-ok-button = Aceptar pdfjs-password-cancel-button = Cancelar diff --git a/l10n/es-MX/viewer.ftl b/l10n/es-MX/viewer.ftl index 6487dcc32e00f..03afe7c0a3167 100644 --- a/l10n/es-MX/viewer.ftl +++ b/l10n/es-MX/viewer.ftl @@ -105,6 +105,14 @@ pdfjs-document-properties-button-label = Propiedades del documento… pdfjs-document-properties-file-name = Nombre del archivo: pdfjs-document-properties-file-size = Tamaño del archivo: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes) @@ -119,6 +127,9 @@ pdfjs-document-properties-keywords = Palabras claves: pdfjs-document-properties-creation-date = Fecha de creación: pdfjs-document-properties-modification-date = Fecha de modificación: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }, { $time } @@ -275,6 +286,9 @@ pdfjs-annotation-date-string = { $date }, { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [{ $type } anotación] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -329,6 +343,10 @@ pdfjs-editor-stamp-add-image-button-label = Agregar imagen pdfjs-editor-free-highlight-thickness-input = Espesor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar el grosor al resaltar elementos que no sean texto +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Editor de texto + .default-content = Comenzar a escribir… pdfjs-free-text = .aria-label = Editor de texto pdfjs-free-text-default-content = Empieza a escribir… @@ -339,8 +357,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo +pdfjs-editor-alt-text-edit-button = + .aria-label = Editar texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo pdfjs-editor-alt-text-dialog-label = Elige una opción pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga. @@ -354,6 +373,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Marcado como decorativo # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Texto alternativo ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -366,6 +388,22 @@ pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha: cambiar el t pdfjs-editor-resizer-label-bottom-middle = Abajo en el medio: cambiar el tamaño pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda: cambiar el tamaño pdfjs-editor-resizer-label-middle-left = Centro izquierda: cambiar el tamaño +pdfjs-editor-resizer-top-left = + .aria-label = Esquina superior izquierda — redimensionar +pdfjs-editor-resizer-top-middle = + .aria-label = Borde superior en el medio — redimensionar +pdfjs-editor-resizer-top-right = + .aria-label = Esquina superior derecha — redimensionar +pdfjs-editor-resizer-middle-right = + .aria-label = Borde derecho en el medio — redimensionar +pdfjs-editor-resizer-bottom-right = + .aria-label = Esquina inferior derecha — redimensionar +pdfjs-editor-resizer-bottom-middle = + .aria-label = Borde inferior en el medio — redimensionar +pdfjs-editor-resizer-bottom-left = + .aria-label = Esquina inferior izquierda — redimensionar +pdfjs-editor-resizer-middle-left = + .aria-label = Borde izquierdo en el medio — redimensionar ## Color picker @@ -396,6 +434,82 @@ pdfjs-editor-highlight-show-all-button = ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = Agregar texto alternativo (descripción de la imagen) +pdfjs-editor-new-alt-text-textarea = + .placeholder = Escribe tu descripción aquí… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Breve descripción para las personas que no pueden ver la imagen o cuando la imagen no se carga. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser inexacto. +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saber más +pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente +pdfjs-editor-new-alt-text-not-now-button = Ahora no +pdfjs-editor-new-alt-text-error-title = No se pudo crear el texto alternativo automáticamente +pdfjs-editor-new-alt-text-error-description = Escribe tu propio texto alternativo o inténtalo de nuevo más tarde. +pdfjs-editor-new-alt-text-error-close-button = Cerrar +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) + .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Se agregó el texto alternativo +pdfjs-editor-new-alt-text-added-button-label = Se agregó el texto alternativo +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Falta el texto alternativo +pdfjs-editor-new-alt-text-missing-button-label = Falta texto alternativo +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Revisar el texto alternativo +pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo +# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. +# Variables: +# $generatedAltText (String) - the generated alt-text. +pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText } ## Image alt-text settings +pdfjs-image-alt-text-settings-button = + .title = Ajustes del texto alternativo de la imagen +pdfjs-image-alt-text-settings-button-label = Ajustes del texto alternativo de la imagen +pdfjs-editor-alt-text-settings-dialog-label = Ajustes del texto alternativo de la imagen +pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático +pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente +pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB) +pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en el dispositivo para que los datos se mantengan privados. Requerido para texto alternativo automático. +pdfjs-editor-alt-text-settings-delete-model-button = Eliminar +pdfjs-editor-alt-text-settings-download-model-button = Descargar +pdfjs-editor-alt-text-settings-downloading-model-button = Descargando… +pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo +pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen +pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo. +pdfjs-editor-alt-text-settings-close-button = Cerrar + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado +pdfjs-editor-undo-bar-message-freetext = Texto eliminado +pdfjs-editor-undo-bar-message-ink = Dibujo eliminado +pdfjs-editor-undo-bar-message-stamp = Imagen eliminada +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } anotación eliminada + *[other] { $count } anotaciones eliminadas + } +pdfjs-editor-undo-bar-undo-button = + .title = Deshacer +pdfjs-editor-undo-bar-undo-button-label = Deshacer +pdfjs-editor-undo-bar-close-button = + .title = Cerrar +pdfjs-editor-undo-bar-close-button-label = Cerrar diff --git a/l10n/eu/viewer.ftl b/l10n/eu/viewer.ftl index 16c0ce5b29af6..2b2660bdc5197 100644 --- a/l10n/eu/viewer.ftl +++ b/l10n/eu/viewer.ftl @@ -493,3 +493,23 @@ pdfjs-editor-alt-text-settings-editor-title = Testu alternatiboaren editorea pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alternatiboa irudi bat gehitzean berehala pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu. pdfjs-editor-alt-text-settings-close-button = Itxi + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Nabarmentzea kenduta +pdfjs-editor-undo-bar-message-freetext = Testua kenduta +pdfjs-editor-undo-bar-message-ink = Marrazkia kenduta +pdfjs-editor-undo-bar-message-stamp = Irudia kenduta +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] Esku-ohar bat kenduta + *[other] { $count } esku-ohar kenduta + } +pdfjs-editor-undo-bar-undo-button = + .title = Desegin +pdfjs-editor-undo-bar-undo-button-label = Desegin +pdfjs-editor-undo-bar-close-button = + .title = Itxi +pdfjs-editor-undo-bar-close-button-label = Itxi diff --git a/l10n/ka/viewer.ftl b/l10n/ka/viewer.ftl index d7e30d93cc54b..d500f3e5e98ab 100644 --- a/l10n/ka/viewer.ftl +++ b/l10n/ka/viewer.ftl @@ -31,8 +31,8 @@ pdfjs-zoom-in-button-label = მოახლოება pdfjs-zoom-select = .title = ზომა pdfjs-presentation-mode-button = - .title = ჩვენების რეჟიმზე გადართვა -pdfjs-presentation-mode-button-label = ჩვენების რეჟიმი + .title = წარდგენის რეჟიმზე გადართვა +pdfjs-presentation-mode-button-label = წარდგენის რეჟიმი pdfjs-open-file-button = .title = ფაილის გახსნა pdfjs-open-file-button-label = გახსნა diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index 2a88c8bb6f03c..fb14226ef52e6 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -496,6 +496,17 @@ pdfjs-editor-alt-text-settings-close-button = Жабу ## "Annotations removed" bar +pdfjs-editor-undo-bar-message-highlight = Ерекшелеу өшірілді +pdfjs-editor-undo-bar-message-freetext = Мәтін өшірілді +pdfjs-editor-undo-bar-message-ink = Сызба өшірілді +pdfjs-editor-undo-bar-message-stamp = Сурет өшірілді +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } анимация өшірілді + *[other] { $count } анимация өшірілді + } pdfjs-editor-undo-bar-undo-button = .title = Болдырмау pdfjs-editor-undo-bar-undo-button-label = Болдырмау diff --git a/l10n/tg/viewer.ftl b/l10n/tg/viewer.ftl index 851174dd92ee1..b39fee5724f5c 100644 --- a/l10n/tg/viewer.ftl +++ b/l10n/tg/viewer.ftl @@ -440,12 +440,22 @@ pdfjs-editor-new-alt-text-dialog-edit-label = Таҳрир кардани мат pdfjs-editor-new-alt-text-dialog-add-label = Илова кардани матни иловагӣ (тафсири тасвир) pdfjs-editor-new-alt-text-textarea = .placeholder = Тафсири худро дар ин ҷо нависед… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Тавсифи мухтасар барои одамоне, ки аксҳоро дида наметавонанд ё вақте ки аксҳо кушода намешаванд. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = Ин матни ивазкунанда ба таври худкор сохта шудааст ва шояд нодуруст бошад. pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Маълумоти бештар pdfjs-editor-new-alt-text-create-automatically-button-label = Ба таври худкор эҷод кардани матни иловагӣ pdfjs-editor-new-alt-text-not-now-button = Ҳоло не pdfjs-editor-new-alt-text-error-title = Матни иловагӣ ба таври худкор эҷод карда нашуд pdfjs-editor-new-alt-text-error-description = Лутфан, матни иловагии худро ворид кунед ё баъдтар аз нав кӯшиш кунед. pdfjs-editor-new-alt-text-error-close-button = Пӯшидан +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = Боргирии модели зеҳни сунъӣ (AI) барои матни ивазкунанда ({ $downloadedSize } аз { $totalSize } МБ) + .aria-valuetext = Боргирии модели зеҳни сунъӣ (AI) барои матни ивазкунанда ({ $downloadedSize } аз { $totalSize } МБ) # This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button = .aria-label = Матни иловагӣ илова карда шуд @@ -471,10 +481,17 @@ pdfjs-image-alt-text-settings-button-label = Танзимоти матни ил pdfjs-editor-alt-text-settings-dialog-label = Танзимоти матни иловагии тасвир pdfjs-editor-alt-text-settings-automatic-title = Матни иловагии худкор pdfjs-editor-alt-text-settings-create-model-button-label = Ба таври худкор эҷод кардани матни иловагӣ +pdfjs-editor-alt-text-settings-create-model-description = Ин имкон барои расонидани кумак ба одамоне, ки аксҳоро дида наметавонанд ё вақте ки аксҳо кушода намешаванд, тавсифи аксҳоро пешниҳод мекунад. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = Модели зеҳни сунъӣ «AI» барои матни ивазкунанда ({ $totalSize } МБ) +pdfjs-editor-alt-text-settings-ai-model-description = Дар дастгоҳи шумо ба таври маҳаллӣ кор мекунад, бинобар ин махфияти маълумоти шахсии шумо нигоҳ дошта мешавад. Барои матни ивазкунандаи худкор лозим аст. pdfjs-editor-alt-text-settings-delete-model-button = Нест кардан pdfjs-editor-alt-text-settings-download-model-button = Боргирӣ кардан pdfjs-editor-alt-text-settings-downloading-model-button = Дар ҳоли боргирӣ… pdfjs-editor-alt-text-settings-editor-title = Муҳаррири матни иловагӣ +pdfjs-editor-alt-text-settings-show-dialog-button-label = Дарҳол нишон додани муҳаррири матни ивазкунанда ҳангоми иловакунии тасвир +pdfjs-editor-alt-text-settings-show-dialog-description = Ба шумо кумак мекунад, ки боварӣ ҳосил кунед, ки ҳамаи тасвирҳои шумо дорои матни ивазкунанда мебошанд. pdfjs-editor-alt-text-settings-close-button = Пӯшидан ## "Annotations removed" bar diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index df85a5cf792dc..dd547279b7f6e 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -298,7 +298,7 @@ pdfjs-password-label = Введіть пароль для відкриття ц pdfjs-password-invalid = Неправильний пароль. Спробуйте ще раз. pdfjs-password-ok-button = OK pdfjs-password-cancel-button = Скасувати -pdfjs-web-fonts-disabled = Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти. +pdfjs-web-fonts-disabled = Вебшрифти вимкнено: неможливо використати вбудовані у PDF шрифти. ## Editing From 8f3394e23af04cf42f305cbd1c7b6b6c567231c2 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 31 Dec 2024 15:57:26 +0100 Subject: [PATCH 163/338] Remove the `requestRange`/`requestFull` methods from the `NetworkManager` class Originally the code in this file was used in both the GENERIC and MOZCENTRAL builds, however that's no longer the case. Hence we can now directly call `NetworkManager.prototype.request` and remove these old "helper" methods that only had a single call-site each. --- src/display/network.js | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/src/display/network.js b/src/display/network.js index f46fcad7cac17..8b65a5a27e675 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -52,21 +52,6 @@ class NetworkManager { this.pendingRequests = Object.create(null); } - requestRange(begin, end, listeners) { - const args = { - begin, - end, - }; - for (const prop in listeners) { - args[prop] = listeners[prop]; - } - return this.request(args); - } - - requestFull(listeners) { - return this.request(listeners); - } - request(args) { const xhr = new XMLHttpRequest(); const xhrId = this.currXhrId++; @@ -248,14 +233,13 @@ class PDFNetworkStreamFullRequestReader { constructor(manager, source) { this._manager = manager; - const args = { + this._url = source.url; + this._fullRequestId = manager.request({ onHeadersReceived: this._onHeadersReceived.bind(this), onDone: this._onDone.bind(this), onError: this._onError.bind(this), onProgress: this._onProgress.bind(this), - }; - this._url = source.url; - this._fullRequestId = manager.requestFull(args); + }); this._headersCapability = Promise.withResolvers(); this._disableRange = source.disableRange || false; this._contentLength = source.length; // Optional @@ -418,14 +402,15 @@ class PDFNetworkStreamRangeRequestReader { constructor(manager, begin, end) { this._manager = manager; - const args = { + this._url = manager.url; + this._requestId = manager.request({ + begin, + end, onHeadersReceived: this._onHeadersReceived.bind(this), onDone: this._onDone.bind(this), onError: this._onError.bind(this), onProgress: this._onProgress.bind(this), - }; - this._url = manager.url; - this._requestId = manager.requestRange(begin, end, args); + }); this._requests = []; this._queuedChunk = null; this._done = false; From a01c52c55bb17619e490b389dfcaadbf9198e528 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Wed, 1 Jan 2025 14:42:42 +0100 Subject: [PATCH 164/338] Bump the stable version in `pdfjs.config` --- pdfjs.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pdfjs.config b/pdfjs.config index 959a7bf19fc28..9ebba0f3f1e7c 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { - "stableVersion": "4.9.155", + "stableVersion": "4.10.38", "baseVersion": "ac81de6ab479ea001c4359302d062157ade0a14c", "versionPrefix": "4.10." } From 0465cf598b88210bf8bcadd689a20fe7bbdf86ab Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 22 Dec 2024 18:28:50 +0100 Subject: [PATCH 165/338] Remove the `getSelectedEditors` integration test helper function The `getSelectedEditors` function is largely a copy of the `getEditors` function, with three small differences: 1. `getEditors` allows getting any kind of editor whereas `getSelectedEditors` is harcoded to only getting selected editors. 2. `getEditors` returns editor selectors (strings) whereas `getSelectedEditors` returns editor IDs (integers). 3. `getSelectedEditors` returns a sorted array of editor IDs whereas `getEditors` does not ensure that the array is sorted. This commit makes the `getEditors` function a drop-in replacement for the `getSelectedEditors` function to deduplicate the code and to have a unified way of getting editors. Note that we don't actually use the contents of the returned array (only its length), so we can safely change `getEditors` to return a sorted array of integer editor IDs instead. Sorting the array makes the return value deterministic, which is a nice property for test stability, and integer IDs are also easier to handle in test assertions. Note that the corresponding selector strings can also easily be obtained from the integer IDs using the `getEditorSelector` function if needed. --- test/integration/freetext_editor_spec.mjs | 31 +++++++++++------------ test/integration/ink_editor_spec.mjs | 7 +++-- test/integration/test_utils.mjs | 16 ++---------- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index a4dce9fe3c3aa..c445580492eb4 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -25,7 +25,6 @@ import { getEditorSelector, getFirstSerialized, getRect, - getSelectedEditors, getSerialized, hover, isCanvasWhite, @@ -371,7 +370,7 @@ describe("FreeText Editor", () => { `${getEditorSelector(8)} .overlay.enabled` ); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); @@ -387,7 +386,7 @@ describe("FreeText Editor", () => { await waitForSelectedEditor(page, getEditorSelector(8)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); @@ -574,7 +573,7 @@ describe("FreeText Editor", () => { await selectAll(page); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 1, 2, 3]); @@ -583,14 +582,14 @@ describe("FreeText Editor", () => { await page.mouse.click(editorCenters[1].x, editorCenters[1].y); await waitForUnselectedEditor(page, getEditorSelector(1)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 2, 3]); await page.mouse.click(editorCenters[2].x, editorCenters[2].y); await waitForUnselectedEditor(page, getEditorSelector(2)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 3]); @@ -598,7 +597,7 @@ describe("FreeText Editor", () => { await kbModifierUp(page); await waitForSelectedEditor(page, getEditorSelector(1)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 1, 3]); @@ -609,20 +608,20 @@ describe("FreeText Editor", () => { }); // 0,1,3 are unselected and new pasted editors are selected. - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([4, 5, 6]); // No ctrl here, hence all are unselected and 2 is selected. await page.mouse.click(editorCenters[2].x, editorCenters[2].y); await waitForSelectedEditor(page, getEditorSelector(2)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([2]); await page.mouse.click(editorCenters[1].x, editorCenters[1].y); await waitForSelectedEditor(page, getEditorSelector(1)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([1]); @@ -630,7 +629,7 @@ describe("FreeText Editor", () => { await page.mouse.click(editorCenters[3].x, editorCenters[3].y); await waitForSelectedEditor(page, getEditorSelector(3)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([1, 3]); @@ -646,7 +645,7 @@ describe("FreeText Editor", () => { await selectAll(page); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 2, 4, 5, 6]); @@ -658,14 +657,14 @@ describe("FreeText Editor", () => { await page.waitForSelector(getEditorSelector(7), { visible: true, }); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([7]); // Set the focus to 2 and check that only 2 is selected. await page.mouse.click(editorCenters[2].x, editorCenters[2].y); await waitForSelectedEditor(page, getEditorSelector(2)); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([2]); @@ -677,7 +676,7 @@ describe("FreeText Editor", () => { await page.waitForSelector(getEditorSelector(8), { visible: true, }); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); // Dismiss it. @@ -692,7 +691,7 @@ describe("FreeText Editor", () => { // Check that all the editors are correctly selected (and the focus // didn't move to the body when the empty editor was removed). - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0, 2, 4, 5, 6]); } diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 9ba6254163ca2..83e6b593e9d75 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -22,7 +22,6 @@ import { getEditors, getEditorSelector, getRect, - getSelectedEditors, getSerialized, isCanvasWhite, kbRedo, @@ -101,7 +100,7 @@ describe("Ink Editor", () => { await kbUndo(page); await waitForStorageEntries(page, 3); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([]); }) @@ -180,7 +179,7 @@ describe("Ink Editor", () => { await selectAll(page); - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([0]); }) @@ -487,7 +486,7 @@ describe("Ink Editor", () => { await page.mouse.move(xStart, yStart); await page.mouse.down(); if (i === 1) { - expect(await getSelectedEditors(page)) + expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([]); } diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 0c4abcd3f7642..3d1ff5bf26264 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -229,18 +229,6 @@ function getAnnotationSelector(id) { return `[data-annotation-id="${id}"]`; } -function getSelectedEditors(page) { - return page.evaluate(() => { - const elements = document.querySelectorAll(".selectedEditor"); - const results = []; - for (const { id } of elements) { - results.push(parseInt(id.split("_").at(-1))); - } - results.sort(); - return results; - }); -} - async function getSpanRectFromText(page, pageNumber, text) { await page.waitForSelector( `.page[data-page-number="${pageNumber}"] > .textLayer .endOfContent` @@ -479,8 +467,9 @@ function getEditors(page, kind) { const elements = document.querySelectorAll(`.${aKind}Editor`); const results = []; for (const { id } of elements) { - results.push(id); + results.push(parseInt(id.split("_").at(-1))); } + results.sort(); return results; }, kind); } @@ -853,7 +842,6 @@ export { getFirstSerialized, getQuerySelector, getRect, - getSelectedEditors, getSelector, getSerialized, getSpanRectFromText, From a707ded822b39ddde50f18fe13460ed2da602618 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 2 Jan 2025 15:09:19 +0100 Subject: [PATCH 166/338] Use `Dict` iteration more (PR 19051 follow-up) There's a few cases where we're looping through the result of `Dict.prototype.getKeys` and then manually look-up the values, which after PR 19051 can be replaced with direct iteration instead. --- src/core/catalog.js | 3 +-- src/core/document.js | 4 +--- src/core/evaluator.js | 3 +-- 3 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/core/catalog.js b/src/core/catalog.js index a38be8f9a9988..b2f0d8711f51a 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -923,8 +923,7 @@ class Catalog { } let prefs = null; - for (const key of obj.getKeys()) { - const value = obj.get(key); + for (const [key, value] of obj) { let prefValue; switch (key) { diff --git a/src/core/document.js b/src/core/document.js index 1744066d1d625..7d9860b851dae 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -1472,9 +1472,7 @@ class PDFDocument { return shadow(this, "documentInfo", docInfo); } - for (const key of infoDict.getKeys()) { - const value = infoDict.get(key); - + for (const [key, value] of infoDict) { switch (key) { case "Title": case "Author": diff --git a/src/core/evaluator.js b/src/core/evaluator.js index f22f75a8bfa02..fb80032f5adf2 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1133,8 +1133,7 @@ class PartialEvaluator { // This array holds the converted/processed state data. const gStateObj = []; let promise = Promise.resolve(); - for (const key of gState.getKeys()) { - const value = gState.get(key); + for (const [key, value] of gState) { switch (key) { case "Type": break; From e5a38195aace6bfd9e856bb913762a8cf48f317c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 4 Jan 2025 11:20:50 +0100 Subject: [PATCH 167/338] Skip LinkAnnotations when collecting field objects (issue 19281) The `/Root/AcroForm/Fields` array contains a "ridiculous" number of LinkAnnotations, which obviously makes no sense since those are not form fields. To improve performance we'll thus ignore those when collecting the field objects. --- src/core/document.js | 17 ++++++++++++++--- test/pdfs/issue19281.pdf.link | 1 + test/test_manifest.json | 8 ++++++++ test/unit/api_spec.js | 14 ++++++++++++++ 4 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 test/pdfs/issue19281.pdf.link diff --git a/src/core/document.js b/src/core/document.js index 7d9860b851dae..ffaeeb73804ed 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -20,6 +20,7 @@ import { info, InvalidPDFException, isArrayEqual, + objectSize, PageActionEventType, RenderingIntentFlag, shadow, @@ -1773,6 +1774,13 @@ class PDFDocument { if (!(field instanceof Dict)) { return; } + let subtype = await field.getAsync("Subtype"); + subtype = subtype instanceof Name ? subtype.name : null; + // Skip unrelated annotation types (see issue 19281). + switch (subtype) { + case "Link": + return; + } if (field.has("T")) { const partName = stringToPDFString(await field.getAsync("T")); name = name === "" ? partName : `${name}.${partName}`; @@ -1888,9 +1896,12 @@ class PDFDocument { }) ); } - await Promise.all(allPromises); - return { allFields, orphanFields }; + + return { + allFields: objectSize(allFields) > 0 ? allFields : null, + orphanFields, + }; }); return shadow(this, "fieldObjects", promise); @@ -1913,7 +1924,7 @@ class PDFDocument { if (catalogJsActions) { return true; } - if (fieldObjects) { + if (fieldObjects?.allFields) { return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null) ); diff --git a/test/pdfs/issue19281.pdf.link b/test/pdfs/issue19281.pdf.link new file mode 100644 index 0000000000000..1aeac656d4208 --- /dev/null +++ b/test/pdfs/issue19281.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18304780/Antarctica-Grid.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index 6dd3446ed4cfc..1a274fb5b7511 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -11239,5 +11239,13 @@ "link": true, "disableFontFace": true, "type": "eq" + }, + { + "id": "issue19281", + "file": "pdfs/issue19281.pdf", + "md5": "c5db558965e4189cc6db2720cdaa3e55", + "rounds": 1, + "link": true, + "type": "other" } ] diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 2abced6f3dfa7..4cf594cd78bf4 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -1713,6 +1713,20 @@ describe("api", function () { await loadingTask.destroy(); }); + it("gets fieldObjects and skipping LinkAnnotations", async function () { + if (isNodeJS) { + pending("Linked test-cases are not supported in Node.js."); + } + + const loadingTask = getDocument(buildGetDocumentParams("issue19281.pdf")); + const pdfDoc = await loadingTask.promise; + const fieldObjects = await pdfDoc.getFieldObjects(); + + expect(fieldObjects).toEqual(null); + + await loadingTask.destroy(); + }); + it("gets non-existent calculationOrder", async function () { const calculationOrder = await pdfDocument.getCalculationOrderIds(); expect(calculationOrder).toEqual(null); From b6b10cea58f69a875fe2b6ee7f389fee5a522ad1 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 4 Jan 2025 19:15:26 +0100 Subject: [PATCH 168/338] Use the `waitForUnselectedEditor` integration test helper function more This commit applies the `waitForUnselectedEditor` helper function to the remaining places, that most likely predate the introduction of the helper function, to deduplicate the code and to have a unified way of checking if a given editor is unselected. --- test/integration/highlight_editor_spec.mjs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 1584accb38150..06e1d44e564e6 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -38,6 +38,7 @@ import { waitForSelectedEditor, waitForSerialized, waitForTimeout, + waitForUnselectedEditor, } from "./test_utils.mjs"; import { fileURLToPath } from "url"; import fs from "fs"; @@ -1044,9 +1045,7 @@ describe("Highlight Editor", () => { await page.mouse.click(x, y, { count: 2, delay: 100 }); await page.waitForSelector(`${getEditorSelector(0)}`); await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)}:not(.selectedEditor)` - ); + await waitForUnselectedEditor(page, getEditorSelector(0)); await setCaretAt( page, @@ -1797,7 +1796,7 @@ describe("Highlight Editor", () => { await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector}:not(.selectedEditor)`); + await waitForUnselectedEditor(page, editorSelector); const clickHandle = await waitForPointerUp(page); y = rect.y - rect.height; @@ -1868,7 +1867,7 @@ describe("Highlight Editor", () => { await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector}:not(.selectedEditor)`); + await waitForUnselectedEditor(page, editorSelector); const clickHandle = await waitForPointerUp(page); y = rect.y - 3 * rect.height; From 44da6c54dce3cb9e9335cdcbc676e4fe6f8842ed Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 4 Jan 2025 19:40:13 +0100 Subject: [PATCH 169/338] Implement a commit helper function for the freetext integration tests The ink editor integration tests already use a helper function for committing the editor, so this commit mirrors the approach to the freetext editor integration tests. This has multiple advantages: - it improves consistency between the various editor integration tests; - it makes the code easier to read/understand; - it reduces code duplication (220 lines of code removed); - it reduces the number of `getEditorSelector` calls (32 calls removed) that contained hardcoded IDs, which helps to isolate the tests and to simplify follow-up patches. --- test/integration/freetext_editor_spec.mjs | 336 ++++------------------ 1 file changed, 58 insertions(+), 278 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index c445580492eb4..192f774821951 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -70,6 +70,11 @@ const clearAll = async page => { await waitForStorageEntries(page, 0); }; +const commit = async page => { + await page.keyboard.press("Escape"); + await page.waitForSelector(".freeTextEditor.selectedEditor .overlay.enabled"); +}; + const switchToFreeText = switchToEditor.bind(null, "FreeText"); const getXY = async (page, selector) => { @@ -138,17 +143,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - const editorRect = await getRect(page, getEditorSelector(0)); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await waitForSelectedEditor(page, getEditorSelector(0)); await waitForStorageEntries(page, 1); @@ -163,12 +158,7 @@ describe("FreeText Editor", () => { await page.waitForSelector( `${getEditorSelector(0)} .overlay:not(.enabled)` ); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); content = await page.$eval(getEditorSelector(0), el => el.innerText.trimEnd() @@ -251,17 +241,10 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(3)} .internal`, data); - - const editorRect = await getRect(page, getEditorSelector(3)); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector(`${getEditorSelector(3)} .overlay.enabled`); + await commit(page); // And select it again. + const editorRect = await getRect(page, getEditorSelector(3)); await page.mouse.click( editorRect.x + editorRect.width / 2, editorRect.y + editorRect.height / 2 @@ -328,12 +311,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(7)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(7)} .overlay.enabled` - ); + await commit(page); const ariaOwns = await page.$eval(".textLayer", el => { const span = el.querySelector(`span[pdfjs="true"]`); @@ -361,14 +339,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(8)} .internal`, data); - - const editorRect = await getRect(page, getEditorSelector(8)); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(8)} .overlay.enabled` - ); + await commit(page); expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) @@ -379,6 +350,7 @@ describe("FreeText Editor", () => { () => !document.querySelector(".selectedEditor") ); + const editorRect = await getRect(page, getEditorSelector(8)); await page.mouse.click( editorRect.x + editorRect.width / 2, editorRect.y + editorRect.height / 2 @@ -422,18 +394,11 @@ describe("FreeText Editor", () => { for (let i = 0; i < 5; i++) { await page.type(`${editorSelector} .internal`, "A"); - - const editorRect = await getRect(page, editorSelector); - - // Commit. - await page.mouse.click( - editorRect.x + 1.5 * editorRect.width, - editorRect.y - ); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); if (i < 4) { // And select it again. + const editorRect = await getRect(page, editorSelector); await page.mouse.click( editorRect.x + editorRect.width / 2, editorRect.y + editorRect.height / 2, @@ -502,7 +467,7 @@ describe("FreeText Editor", () => { expect(text).withContext(`In ${browserName}`).toEqual("A"); // Add a new A. - let editorRect = await getRect(page, editorSelector); + const editorRect = await getRect(page, editorSelector); await page.mouse.click( editorRect.x + editorRect.width / 2, editorRect.y + editorRect.height / 2, @@ -510,15 +475,7 @@ describe("FreeText Editor", () => { ); await page.waitForSelector(`${editorSelector} .overlay:not(.enabled)`); await page.type(`${editorSelector} .internal`, "A"); - - editorRect = await getRect(page, editorSelector); - - // Commit. - await page.mouse.click( - editorRect.x + 1.5 * editorRect.width, - editorRect.y - ); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); text = await getText(); expect(text).withContext(`In ${browserName}`).toEqual("AA"); @@ -553,6 +510,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(i)} .internal`, data); + await commit(page); const editorRect = await getRect(page, getEditorSelector(i)); lastX = editorRect.x + editorRect.width + 10; @@ -560,15 +518,6 @@ describe("FreeText Editor", () => { x: editorRect.x + editorRect.width / 2, y: editorRect.y + editorRect.height / 2, }); - - // Commit. - await page.mouse.click( - editorRect.x + 1.5 * editorRect.width, - editorRect.y - ); - await page.waitForSelector( - `${getEditorSelector(i)} .overlay.enabled` - ); } await selectAll(page); @@ -739,12 +688,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(currentId)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(currentId)} .overlay.enabled` - ); + await commit(page); await waitForSelectedEditor(page, getEditorSelector(currentId)); await waitForStorageEntries(page, currentId + 1); @@ -878,12 +822,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(currentId)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(currentId)} .overlay.enabled` - ); + await commit(page); const promise = await waitForAnnotationEditorLayer(page); await page.evaluate(() => { @@ -1025,15 +964,7 @@ describe("FreeText Editor", () => { `${getEditorSelector(0)} .internal`, " and edited in Firefox" ); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); const serialized = await getSerialized(page); expect(serialized.length).withContext(`In ${browserName}`).toEqual(1); @@ -1140,10 +1071,7 @@ describe("FreeText Editor", () => { `${editorSelector} .internal`, " and edited in Firefox" ); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); // Disable editing mode. await switchToFreeText(page, /* disable = */ true); @@ -1435,17 +1363,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - const editorRect = await getRect(page, getEditorSelector(0)); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); // Make Chrome happy. await page.waitForFunction(() => { @@ -1556,12 +1474,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(currentId)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(currentId)} .overlay.enabled` - ); + await commit(page); currentId += 1; } @@ -1905,17 +1818,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - const editorRect = await getRect(page, getEditorSelector(0)); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await page.focus("#editorFreeTextColor"); await kbUndo(page); @@ -1962,15 +1865,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${selectorEditor} .internal`, data); - - const editorRect = await getRect(page, selectorEditor); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); const [pageX, pageY] = await getFirstSerialized(page, x => x.rect); @@ -2064,15 +1959,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${selectorEditor} .internal`, data); - - const editorRect = await getRect(page, selectorEditor); - - // Commit. - await page.mouse.click( - editorRect.x, - editorRect.y + 2 * editorRect.height - ); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); const [pageX, pageY] = await getFirstSerialized(page, x => x.rect); @@ -2100,8 +1987,7 @@ describe("FreeText Editor", () => { await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page)); await page.type(`${selectorEditor} .internal`, data); - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); const [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -2151,12 +2037,8 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - // Commit. await cancelFocusIn(page, getEditorSelector(0)); - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); const oneToFourteen = Array.from(new Array(14).keys(), x => x + 1); @@ -2209,16 +2091,10 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, "A"); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); - - rect = await getRect(page, getEditorSelector(0)); + await commit(page); // Create a new editor. + rect = await getRect(page, getEditorSelector(0)); await page.mouse.click( rect.x + 5 * rect.width, rect.y + 5 * rect.height @@ -2227,16 +2103,10 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(1)} .internal`, "B"); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(1)} .overlay.enabled` - ); + await commit(page); // Select the second editor. rect = await getRect(page, getEditorSelector(1)); - await page.mouse.click( rect.x + 0.5 * rect.width, rect.y + 0.5 * rect.height @@ -2310,10 +2180,7 @@ describe("FreeText Editor", () => { `${editorSelector} .internal`, String.fromCharCode(65 + i) ); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); allPositions.push(await getRect(page, editorSelector)); } @@ -2372,13 +2239,8 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. await cancelFocusIn(page, getEditorSelector(0)); - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await page.evaluate(() => { window.editingEvents = []; @@ -2431,11 +2293,8 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${selectorEditor} .internal`, "Hello"); - - // Commit. await cancelFocusIn(page, selectorEditor); - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); // Unselect. await page.keyboard.press("Escape"); @@ -2464,11 +2323,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(1)} .internal`, "World"); - - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); for (let i = 0; i < 13; i++) { await page.keyboard.press("P"); @@ -2526,11 +2381,8 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${selectorEditor} .internal`, "Hello"); - - // Commit. await cancelFocusIn(page, selectorEditor); - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); // Unselect. await page.keyboard.press("Escape"); @@ -2614,12 +2466,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, "Hello Wolrd"); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await waitForStorageEntries(page, 1); @@ -2655,10 +2502,8 @@ describe("FreeText Editor", () => { }); const internalEditorSelector = `${getEditorSelector(0)} .internal`; await page.type(internalEditorSelector, data); - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); + await page.click(getEditorSelector(0), { count: 2 }); await page.waitForSelector( `${getEditorSelector(0)} .overlay:not(.enabled)` @@ -2702,10 +2547,7 @@ describe("FreeText Editor", () => { const data = "Hello PDF.js World !!"; await page.type(`${selectorEditor} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); let content = await page.$eval(selectorEditor, el => el.innerText.trimEnd() @@ -2726,10 +2568,7 @@ describe("FreeText Editor", () => { await moveEditor(page, selectorEditor, 5, () => kbBigMoveDown(page)); await page.type(`${selectorEditor} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); // Unselect. await page.keyboard.press("Escape"); @@ -2757,10 +2596,7 @@ describe("FreeText Editor", () => { const data = "Hello PDF.js World !!"; await page.type(`${selectorEditor} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); // Unselect. await page.keyboard.press("Escape"); @@ -2783,10 +2619,7 @@ describe("FreeText Editor", () => { ); await page.type(`${selectorEditor} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${selectorEditor} .overlay.enabled`); + await commit(page); // Unselect. await page.keyboard.press("Escape"); @@ -2826,12 +2659,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); let handle = await createPromise(page, resolve => { document.addEventListener("selectionchange", resolve, { @@ -2887,12 +2715,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); // Delete it in using the button. await page.click(`${getEditorSelector(0)} button.delete`); @@ -2942,10 +2765,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${editorSelector} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); } // Select the editor created previously. @@ -3066,12 +2886,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await waitForSerialized(page, 1); const serialized = (await getSerialized(page))[0]; @@ -3107,12 +2922,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await page.evaluate(() => { window.PDFViewerApplication.eventBus.dispatch( @@ -3215,12 +3025,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector(`${getEditorSelector(0)} button.delete`); @@ -3272,12 +3077,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(0)} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay.enabled` - ); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector(`${getEditorSelector(0)} button.delete`); @@ -3325,11 +3125,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${editorSelector} .internal`, data); - const editorRect = await getRect(page, editorSelector); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); const waitForTextChange = (previous, edSelector) => page.waitForFunction( @@ -3341,6 +3137,7 @@ describe("FreeText Editor", () => { const getText = edSelector => page.$eval(`${edSelector} .internal`, el => el.innerText.trimEnd()); + const editorRect = await getRect(page, editorSelector); await page.mouse.click( editorRect.x + editorRect.width / 2, editorRect.y + editorRect.height / 2, @@ -3414,9 +3211,7 @@ describe("FreeText Editor", () => { const html = await getHTML(); expect(html).withContext(`In ${browserName}`).toEqual(prevHTML); - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); editorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 200, rect.y + 200); @@ -3606,10 +3401,7 @@ describe("FreeText Editor", () => { await page.keyboard.press("Enter"); await page.keyboard.up("Shift"); } - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); await waitForSerialized(page, 1); const serialized = await getSerialized(page, x => x.value); @@ -3643,10 +3435,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${editorSelector} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector(`${editorSelector} button.delete`); @@ -3673,10 +3462,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${editorSelector} .internal`, data); - - // Commit. - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector(`${editorSelector} button.delete`); @@ -3711,9 +3497,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${editorSelector} .internal`, data); - - await page.keyboard.press("Escape"); - await page.waitForSelector(`${editorSelector} .overlay.enabled`); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector(`${editorSelector} button.delete`); @@ -3728,11 +3512,7 @@ describe("FreeText Editor", () => { visible: true, }); await page.type(`${getEditorSelector(1)} .internal`, newData); - - await page.keyboard.press("Escape"); - await page.waitForSelector( - `${getEditorSelector(1)} .overlay.enabled` - ); + await commit(page); await waitForSerialized(page, 1); await page.waitForSelector("#editorUndoBar", { hidden: true }); }) From 0bb861573f63020cb7919f0813a8e3049d7f29a2 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 3 Jan 2025 19:00:33 +0100 Subject: [PATCH 170/338] Let be more tolerant with predefined phone number format The long US phone number format should be '(999) 999-9999' but the parenthesis can be omitted or the space replaced with a dash, ... --- src/scripting_api/aform.js | 48 ++++++++++++++++++++++------- test/unit/scripting_spec.js | 61 +++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 11 deletions(-) diff --git a/src/scripting_api/aform.js b/src/scripting_api/aform.js index 78a9a312df26c..5f9c67c90844a 100644 --- a/src/scripting_api/aform.js +++ b/src/scripting_api/aform.js @@ -465,22 +465,22 @@ class AForm { // specific to the format because the user could enter 1234567 when the // format is 999-9999. const simplifiedFormatStr = cMask.replaceAll(/[^9AOX]/g, ""); - this.#AFSpecial_KeystrokeEx_helper(simplifiedFormatStr, false); + this.#AFSpecial_KeystrokeEx_helper(simplifiedFormatStr, null, false); if (event.rc) { return; } event.rc = true; - this.#AFSpecial_KeystrokeEx_helper(cMask, true); + this.#AFSpecial_KeystrokeEx_helper(cMask, null, true); } - #AFSpecial_KeystrokeEx_helper(cMask, warn) { + #AFSpecial_KeystrokeEx_helper(cMask, value, warn) { if (!cMask) { return; } const event = globalThis.event; - const value = this.AFMergeChange(event); + value ||= this.AFMergeChange(event); if (!value) { return; } @@ -563,7 +563,8 @@ class AForm { const event = globalThis.event; psf = this.AFMakeNumber(psf); - let formatStr; + let value = this.AFMergeChange(event); + let formatStr, secondFormatStr; switch (psf) { case 0: formatStr = "99999"; @@ -572,11 +573,8 @@ class AForm { formatStr = "99999-9999"; break; case 2: - const value = this.AFMergeChange(event); - formatStr = - value.startsWith("(") || (value.length > 7 && /^\p{N}+$/.test(value)) - ? "(999) 999-9999" - : "999-9999"; + formatStr = "999-9999"; + secondFormatStr = "(999) 999-9999"; break; case 3: formatStr = "999-99-9999"; @@ -584,8 +582,36 @@ class AForm { default: throw new Error("Invalid psf in AFSpecial_Keystroke"); } + const formats = secondFormatStr + ? [formatStr, secondFormatStr] + : [formatStr]; + for (const format of formats) { + this.#AFSpecial_KeystrokeEx_helper(format, value, false); + if (event.rc) { + return; + } + event.rc = true; + } + + const re = /([-()]|\s)+/g; + value = value.replaceAll(re, ""); + for (const format of formats) { + this.#AFSpecial_KeystrokeEx_helper( + format.replaceAll(re, ""), + value, + false + ); + if (event.rc) { + return; + } + event.rc = true; + } - this.AFSpecial_KeystrokeEx(formatStr); + this.AFSpecial_KeystrokeEx( + ((secondFormatStr && value.match(/\d/g)) || []).length > 7 + ? secondFormatStr + : formatStr + ); } AFTime_FormatEx(cFormat) { diff --git a/test/unit/scripting_spec.js b/test/unit/scripting_spec.js index 6246120df4169..d570908662a90 100644 --- a/test/unit/scripting_spec.js +++ b/test/unit/scripting_spec.js @@ -1685,6 +1685,67 @@ describe("Scripting", function () { send_queue.delete(refId); }); + it("should validate a US phone number with digits and dashes (long) on a keystroke event", async () => { + const refId = getId(); + const data = { + objects: { + field: [ + { + id: refId, + value: "", + actions: { + Keystroke: [`AFSpecial_Keystroke(2);`], + }, + type: "text", + }, + ], + }, + appInfo: { language: "en-US", platform: "Linux x86_64" }, + calculationOrder: [], + dispatchEventName: "_dispatchMe", + }; + sandbox.createSandbox(data); + + let value = ""; + const changes = "123-456-7890"; + let i = 0; + + for (; i < changes.length; i++) { + const change = changes.charAt(i); + await sandbox.dispatchEventInSandbox({ + id: refId, + value, + change, + name: "Keystroke", + willCommit: false, + selStart: i, + selEnd: i, + }); + expect(send_queue.has(refId)).toEqual(true); + send_queue.delete(refId); + value += change; + } + + await sandbox.dispatchEventInSandbox({ + id: refId, + value, + change: "A", + name: "Keystroke", + willCommit: false, + selStart: i, + selEnd: i, + }); + expect(send_queue.has(refId)).toEqual(true); + expect(send_queue.get(refId)).toEqual({ + id: refId, + siblings: null, + value, + selRange: [i, i], + }); + + send_queue.delete(refId); + }); + it("should validate a US phone number (short) on a keystroke event", async () => { const refId = getId(); const data = { From 0f649d754fe658c46dba6fc09c8426dc78580e4c Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 31 Dec 2024 16:44:46 +0100 Subject: [PATCH 171/338] Update the toggle-button css after the changes in m-c (bug 1940085) --- web/toggle_button.css | 194 +++++++++++++++++++++--------------------- 1 file changed, 98 insertions(+), 96 deletions(-) diff --git a/web/toggle_button.css b/web/toggle_button.css index 18642e2729c22..8471f97f5e57e 100644 --- a/web/toggle_button.css +++ b/web/toggle_button.css @@ -3,9 +3,17 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ .toggle-button { - --button-background-color: #f0f0f4; - --button-background-color-hover: #e0e0e6; - --button-background-color-active: #cfcfd8; + --button-background-color: color-mix(in srgb, currentColor 7%, transparent); + --button-background-color-hover: color-mix( + in srgb, + currentColor 14%, + transparent + ); + --button-background-color-active: color-mix( + in srgb, + currentColor 21%, + transparent + ); --color-accent-primary: #0060df; --color-accent-primary-hover: #0250bb; --color-accent-primary-active: #054096; @@ -15,24 +23,18 @@ --size-item-small: 16px; --size-item-large: 32px; --color-canvas: white; + --background-color-canvas: var(--color-canvas); + --border-color-interactive: #8f8f9d; + --border-color-interactive-hover: var(--border-color-interactive); + --border-color-interactive-active: var(--border-color-interactive); @media (prefers-color-scheme: dark) { - --button-background-color: color-mix(in srgb, currentColor 7%, transparent); - --button-background-color-hover: color-mix( - in srgb, - currentColor 14%, - transparent - ); - --button-background-color-active: color-mix( - in srgb, - currentColor 21%, - transparent - ); --color-accent-primary: #0df; --color-accent-primary-hover: #80ebff; --color-accent-primary-active: #aaf2ff; --border-interactive-color: #bfbfc9; --color-canvas: #1c1b22; + --border-color-interactive: #f9f9fa; } @media (forced-colors: active) { @@ -44,31 +46,35 @@ --border-interactive-color-hover: SelectedItem; --border-interactive-color-active: SelectedItem; --border-interactive-color-disabled: GrayText; + --border-color-interactive: ButtonText; + --border-color-interactive-hover: SelectedItem; + --border-color-interactive-active: ButtonText; --color-canvas: ButtonText; + --background-color-canvas: Canvas; } +} - /* +/* The original file is located at: - https://hg.mozilla.org/mozilla-central/file/aded201f11ec90b8e11c59d1e399960785771fbd/toolkit/content/widgets/moz-toggle/moz-toggle.css + https://hg.mozilla.org/mozilla-central/file/168f6caa3b160c12413f9e9ad9df1db49c6b4cdf/toolkit/content/widgets/moz-toggle/moz-toggle.css The original file is licensed under the Mozilla Public License, v. 2.0. This file is a modified version of the original file. - In order to have a better reading of the code, the .toggle-button selector - has been removed from the original file and we put everything under a single - .toggle-button selector. - - TODO: check from times to times if the original file has been updated (and + The pseudo-selector :host has been replaced by .toggle-button. + + TODO: check from times to times if the original file has been updated (and in such a case don't forget to change the revision in the above link). - */ +*/ +.toggle-button { --toggle-background-color: var(--button-background-color); --toggle-background-color-hover: var(--button-background-color-hover); --toggle-background-color-active: var(--button-background-color-active); --toggle-background-color-pressed: var(--color-accent-primary); --toggle-background-color-pressed-hover: var(--color-accent-primary-hover); --toggle-background-color-pressed-active: var(--color-accent-primary-active); - --toggle-border-color: var(--border-interactive-color); + --toggle-border-color: var(--border-color-interactive); --toggle-border-color-hover: var(--toggle-border-color); --toggle-border-color-active: var(--toggle-border-color); --toggle-border-radius: var(--border-radius-circle); @@ -78,7 +84,7 @@ --toggle-dot-background-color: var(--toggle-border-color); --toggle-dot-background-color-hover: var(--toggle-dot-background-color); --toggle-dot-background-color-active: var(--toggle-dot-background-color); - --toggle-dot-background-color-on-pressed: var(--color-canvas); + --toggle-dot-background-color-on-pressed: var(--background-color-canvas); --toggle-dot-margin: 1px; --toggle-dot-height: calc( var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 * @@ -88,17 +94,16 @@ --toggle-dot-transform-x: calc( var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width) ); + --input-width: var(--toggle-width); appearance: none; padding: 0; - margin: 0; border: var(--toggle-border-width) solid var(--toggle-border-color); height: var(--toggle-height); width: var(--toggle-width); border-radius: var(--toggle-border-radius); - background: var(--toggle-background-color); + background-color: var(--toggle-background-color); box-sizing: border-box; - flex-shrink: 0; &:focus-visible { outline: var(--focus-outline); @@ -106,30 +111,15 @@ } &:enabled:hover { - background: var(--toggle-background-color-hover); + background-color: var(--toggle-background-color-hover); border-color: var(--toggle-border-color); } - &:enabled:active { - background: var(--toggle-background-color-active); + &:enabled:hover:active { + background-color: var(--toggle-background-color-active); border-color: var(--toggle-border-color); } - &[aria-pressed="true"] { - background: var(--toggle-background-color-pressed); - border-color: transparent; - } - - &[aria-pressed="true"]:enabled:hover { - background: var(--toggle-background-color-pressed-hover); - border-color: transparent; - } - - &[aria-pressed="true"]:enabled:active { - background: var(--toggle-background-color-pressed-active); - border-color: transparent; - } - &::before { display: block; content: ""; @@ -140,83 +130,95 @@ border-radius: var(--toggle-border-radius); translate: 0; } +} + +.toggle-button[aria-pressed="true"] { + background-color: var(--toggle-background-color-pressed); + border-color: transparent; + + &:enabled:hover { + background-color: var(--toggle-background-color-pressed-hover); + border-color: transparent; + } + + &:enabled:hover:active { + background-color: var(--toggle-background-color-pressed-active); + border-color: transparent; + } - &[aria-pressed="true"]::before { + &::before { translate: var(--toggle-dot-transform-x); background-color: var(--toggle-dot-background-color-on-pressed); } - &[aria-pressed="true"]:enabled:hover::before, - &[aria-pressed="true"]:enabled:active::before { + &:enabled:hover::before, + &:enabled:hover:active::before { background-color: var(--toggle-dot-background-color-on-pressed); } - /*#if MOZCENTRAL*/ - /*&[aria-pressed="true"]:-moz-locale-dir(rtl)::before,*/ - /*#endif*/ - &[aria-pressed="true"]:dir(rtl)::before { + &:-moz-locale-dir(rtl)::before, + &:dir(rtl)::before { translate: calc(-1 * var(--toggle-dot-transform-x)); } +} - @media (prefers-reduced-motion: no-preference) { - &::before { - transition: translate 100ms; - } +@media (prefers-reduced-motion: no-preference) { + .toggle-button::before { + transition: translate 100ms; } +} - @media (prefers-contrast) { - &:enabled:hover { - border-color: var(--toggle-border-color-hover); - } +@media (prefers-contrast) { + .toggle-button:enabled:hover { + border-color: var(--toggle-border-color-hover); + } - &:enabled:active { - border-color: var(--toggle-border-color-active); - } + .toggle-button:enabled:hover:active { + border-color: var(--toggle-border-color-active); + } - &[aria-pressed="true"]:enabled { - border-color: var(--toggle-border-color); - position: relative; - } + .toggle-button[aria-pressed="true"]:enabled { + border-color: var(--toggle-border-color); + position: relative; - &[aria-pressed="true"]:enabled:hover, - &[aria-pressed="true"]:enabled:hover:active { + &:hover { border-color: var(--toggle-border-color-hover); - } - &[aria-pressed="true"]:enabled:active { - background-color: var(--toggle-dot-background-color-active); - border-color: var(--toggle-dot-background-color-hover); + &:active { + background-color: var(--toggle-dot-background-color-active); + border-color: var(--toggle-dot-background-color-hover); + } } + } - &:hover::before, - &:active::before { - background-color: var(--toggle-dot-background-color-hover); - } + .toggle-button:enabled:hover::before, + .toggle-button:enabled:hover:active::before { + background-color: var(--toggle-dot-background-color-hover); } +} - @media (forced-colors) { +@media (forced-colors) { + .toggle-button { --toggle-dot-background-color: var(--color-accent-primary); --toggle-dot-background-color-hover: var(--color-accent-primary-hover); --toggle-dot-background-color-active: var(--color-accent-primary-active); --toggle-dot-background-color-on-pressed: var(--button-background-color); - --toggle-background-color-disabled: var(--button-background-color-disabled); - --toggle-border-color-hover: var(--border-interactive-color-hover); - --toggle-border-color-active: var(--border-interactive-color-active); - --toggle-border-color-disabled: var(--border-interactive-color-disabled); - - &[aria-pressed="true"]:enabled::after { - border: 1px solid var(--button-background-color); - content: ""; - position: absolute; - height: var(--toggle-height); - width: var(--toggle-width); - display: block; - border-radius: var(--toggle-border-radius); - inset: -2px; - } + --toggle-border-color-hover: var(--border-color-interactive-hover); + --toggle-border-color-active: var(--border-color-interactive-active); + } - &[aria-pressed="true"]:enabled:active::after { - border-color: var(--toggle-border-color-active); - } + .toggle-button[aria-pressed="true"]:enabled::after { + border: 1px solid var(--button-background-color); + content: ""; + position: absolute; + height: var(--toggle-height); + width: var(--toggle-width); + display: block; + border-radius: var(--toggle-border-radius); + inset: -2px; + } + + .toggle-button[aria-pressed="true"]:enabled:hover:active::after { + border-color: var(--toggle-border-color-active); } } From d7fe2f40b6d3eb513beb47c5fbb39f682c02e56c Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 7 Jan 2025 10:29:23 +0100 Subject: [PATCH 172/338] Remove unused CSS variables --- web/toggle_button.css | 6 ------ 1 file changed, 6 deletions(-) diff --git a/web/toggle_button.css b/web/toggle_button.css index 8471f97f5e57e..426f528ff65dc 100644 --- a/web/toggle_button.css +++ b/web/toggle_button.css @@ -17,7 +17,6 @@ --color-accent-primary: #0060df; --color-accent-primary-hover: #0250bb; --color-accent-primary-active: #054096; - --border-interactive-color: #8f8f9d; --border-radius-circle: 9999px; --border-width: 1px; --size-item-small: 16px; @@ -32,7 +31,6 @@ --color-accent-primary: #0df; --color-accent-primary-hover: #80ebff; --color-accent-primary-active: #aaf2ff; - --border-interactive-color: #bfbfc9; --color-canvas: #1c1b22; --border-color-interactive: #f9f9fa; } @@ -41,11 +39,7 @@ --color-accent-primary: ButtonText; --color-accent-primary-hover: SelectedItem; --color-accent-primary-active: SelectedItem; - --border-interactive-color: ButtonText; --button-background-color: ButtonFace; - --border-interactive-color-hover: SelectedItem; - --border-interactive-color-active: SelectedItem; - --border-interactive-color-disabled: GrayText; --border-color-interactive: ButtonText; --border-color-interactive-hover: SelectedItem; --border-color-interactive-active: ButtonText; From 8cf8af39161ac2415fbe31daab890ca0b0bf54a4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 8 Jan 2025 15:21:34 +0100 Subject: [PATCH 173/338] Remove the fuzz tests (issue 19297) Reasons for removal: - These tests never generated any warnings from OSS-Fuzz, in over a year. - An error thrown during image decoding will lead to a broken/missing image, not a security problem. - These tests rely on the Jazzer.js library, which has a number of problems: It now causes failures in Node.js v23 in the CI tests, it's no longer being maintained upstream, and it lacks support for some (fairly common) CPU architectures. --- eslint.config.mjs | 9 - package-lock.json | 1031 --------------------------------- package.json | 1 - test/fuzz/README.md | 42 -- test/fuzz/jbig2_image.fuzz.js | 33 -- test/fuzz/jpeg_image.fuzz.js | 33 -- test/fuzz/jpx_image.fuzz.js | 33 -- 7 files changed, 1182 deletions(-) delete mode 100644 test/fuzz/README.md delete mode 100644 test/fuzz/jbig2_image.fuzz.js delete mode 100644 test/fuzz/jpeg_image.fuzz.js delete mode 100644 test/fuzz/jpx_image.fuzz.js diff --git a/eslint.config.mjs b/eslint.config.mjs index ec3e8012433e9..6669f072a2f7a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -352,15 +352,6 @@ export default [ "jasmine/prefer-toHaveBeenCalledWith": "off", }, }, - { - files: jsFiles("test/fuzz"), - rules: { - "import/no-unresolved": [ - "error", - { ignore: [".*/build/image_decoders/.*"] }, - ], - }, - }, { files: jsFiles("test/unit"), rules: { diff --git a/package-lock.json b/package-lock.json index 3f8c01b63d3fd..c6c7681cc7388 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,6 @@ "@babel/runtime": "^7.26.0", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", - "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", @@ -2126,103 +2125,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jazzer.js/bug-detectors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@jazzer.js/bug-detectors/-/bug-detectors-2.1.0.tgz", - "integrity": "sha512-rFERKoSkLNZq52rRCXQKRqLX9Bfkb2+tzMrI/tDQ27//HwfdaJUej4MPKXg3YxFSGAEtshNNSXAn2liJmyLWpQ==", - "dev": true, - "dependencies": { - "@jazzer.js/core": "2.1.0", - "@jazzer.js/hooking": "2.1.0" - }, - "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" - } - }, - "node_modules/@jazzer.js/core": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@jazzer.js/core/-/core-2.1.0.tgz", - "integrity": "sha512-9uTuKlZ0WyC8evq++46TYg0SFszGx7X4/Y8nVsFmIg9sc0ceO9fmE1qg8KOafkzM9DvSdv+JL2UYWxnmgE1CJQ==", - "dev": true, - "dependencies": { - "@jazzer.js/bug-detectors": "2.1.0", - "@jazzer.js/fuzzer": "2.1.0", - "@jazzer.js/hooking": "2.1.0", - "@jazzer.js/instrumentor": "2.1.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "tmp": "^0.2.1", - "yargs": "^17.7.2" - }, - "bin": { - "jazzer": "dist/cli.js" - }, - "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" - } - }, - "node_modules/@jazzer.js/fuzzer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@jazzer.js/fuzzer/-/fuzzer-2.1.0.tgz", - "integrity": "sha512-WroUAGH1+AFoI+5kRGOjvh9+1GsYEmCinvEt9yF0E0pBTeadssCG6Y8adeYh6W0rum2LjPsjVfLEWMunRLt/Ew==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "cmake-js": "^7.2.1", - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1" - }, - "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" - } - }, - "node_modules/@jazzer.js/hooking": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@jazzer.js/hooking/-/hooking-2.1.0.tgz", - "integrity": "sha512-caNQslD27mxkYfi7woVEN98rbPL41Ezn/pGkMB/ghcBWcG0jCJDqacRJX4Gv8ypfIhemDJEocL26Ld2XSx07Pw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.2" - }, - "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" - } - }, - "node_modules/@jazzer.js/instrumentor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@jazzer.js/instrumentor/-/instrumentor-2.1.0.tgz", - "integrity": "sha512-ewvx2DKczcwusO5XlRYaMO757cFDKY+mEbS2g5k81Razq3AA/uRVU1/Ei/1FZeg9tKCuaTq9Gwl+9bdA9ER8Og==", - "dev": true, - "dependencies": { - "@babel/core": "^7.23.2", - "@babel/generator": "^7.23.0", - "@jazzer.js/fuzzer": "2.1.0", - "@jazzer.js/hooking": "2.1.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^6.0.1", - "proper-lockfile": "^4.1.2", - "source-map-support": "^0.5.21" - }, - "engines": { - "node": ">= 14.0.0", - "npm": ">= 7.0.0" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -3260,24 +3162,6 @@ "node": ">=0.10.0" } }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -3525,12 +3409,6 @@ "node": ">= 10.13.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, "node_modules/autoprefixer": { "version": "10.4.20", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", @@ -3585,18 +3463,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, "node_modules/b4a": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", @@ -3784,40 +3650,6 @@ "url": "https://bevry.me/fund" } }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -4089,12 +3921,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, "node_modules/chrome-trace-event": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", @@ -4195,138 +4021,6 @@ "readable-stream": "^2.3.5" } }, - "node_modules/cmake-js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/cmake-js/-/cmake-js-7.2.1.tgz", - "integrity": "sha512-AdPSz9cSIJWdKvm0aJgVu3X8i0U3mNTswJkSHzZISqmYVjZk7Td4oDFg0mCBA383wO+9pG5Ix7pEP1CZH9x2BA==", - "dev": true, - "dependencies": { - "axios": "^1.3.2", - "debug": "^4", - "fs-extra": "^10.1.0", - "lodash.isplainobject": "^4.0.6", - "memory-stream": "^1.0.0", - "node-api-headers": "^0.0.2", - "npmlog": "^6.0.2", - "rc": "^1.2.7", - "semver": "^7.3.8", - "tar": "^6.1.11", - "url-join": "^4.0.1", - "which": "^2.0.2", - "yargs": "^17.6.0" - }, - "bin": { - "cmake-js": "bin/cmake-js" - }, - "engines": { - "node": ">= 14.15.0" - } - }, - "node_modules/cmake-js/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cmake-js/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cmake-js/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cmake-js/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/cmake-js/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/cmake-js/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cmake-js/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/co": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", @@ -4369,18 +4063,6 @@ "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -4400,12 +4082,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -4765,15 +4441,6 @@ "node": ">=0.10.0" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -4790,30 +4457,6 @@ "node": ">=0.10.0" } }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -4865,21 +4508,6 @@ "node": ">= 14" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, "node_modules/detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", @@ -6022,15 +5650,6 @@ "node": ">=0.8.x" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -6255,12 +5874,6 @@ "node": ">=16.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -6376,26 +5989,6 @@ "dev": true, "license": "ISC" }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -6455,20 +6048,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -6482,24 +6061,6 @@ "url": "https://github.com/sponsors/rawify" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/fs-mkdirp-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-2.0.1.tgz", @@ -6655,12 +6216,6 @@ "node": ">= 14" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -7317,12 +6872,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -7364,12 +6913,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -7999,136 +7542,6 @@ "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istextorbinary": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", @@ -8475,18 +7888,6 @@ "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", "dev": true }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jstransformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", @@ -8830,12 +8231,6 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -9104,29 +8499,6 @@ "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/memory-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/memory-stream/-/memory-stream-1.0.0.tgz", - "integrity": "sha512-Wm13VcsPIMdG96dzILfij09PvuS3APtcKNh7M28FsCA/w6+1mjR7hhPmfFNoilX9xU7wTdhsH5lJAm6XNzdtww==", - "dev": true, - "dependencies": { - "readable-stream": "^3.4.0" - } - }, - "node_modules/memory-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -9422,43 +8794,6 @@ "node": ">= 6" } }, - "node_modules/minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", @@ -9466,12 +8801,6 @@ "dev": true, "license": "MIT" }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -9520,12 +8849,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -9558,45 +8881,6 @@ "node": ">= 0.4.0" } }, - "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-abi/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==", - "dev": true - }, - "node_modules/node-api-headers": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/node-api-headers/-/node-api-headers-0.0.2.tgz", - "integrity": "sha512-YsjmaKGPDkmhoNKIpkChtCsPVaRE0a274IdERKnuc/E8K1UJdBZ4/mvI006OijlQZHCfpRNOH3dfHQs92se8gg==", - "dev": true - }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", @@ -10476,135 +9760,6 @@ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prebuild-install/node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prebuild-install/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prebuild-install/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prebuild-install/node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/prebuild-install/node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10668,17 +9823,6 @@ "asap": "~2.0.3" } }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" - } - }, "node_modules/proxy-agent": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", @@ -10843,30 +9987,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -11288,15 +10408,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -11307,21 +10418,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11513,12 +10609,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -11578,26 +10668,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -12649,23 +11719,6 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/tar-fs": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", @@ -12693,42 +11746,6 @@ "streamx": "^2.15.0" } }, - "node_modules/tar/node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/teex": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", @@ -12829,18 +11846,6 @@ "node": ">=0.10.0" } }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13061,18 +12066,6 @@ "summary": "^2.0.0" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -13338,15 +12331,6 @@ "node": ">=4" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", @@ -13387,12 +12371,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -13862,15 +12840,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index e7676e289617d..d403e9912f39b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,6 @@ "@babel/runtime": "^7.26.0", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", - "@jazzer.js/core": "^2.1.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", diff --git a/test/fuzz/README.md b/test/fuzz/README.md deleted file mode 100644 index ef931492a8cd0..0000000000000 --- a/test/fuzz/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# Fuzz Testing - -Fuzz testing is: - -> An automated software testing technique that involves providing invalid, unexpected, or random data as inputs to a program. - -We use coverage guided fuzz testing to automatically discover bugs in PDF.js. - -This `fuzz/` directory contains the configuration and the fuzz tests for PDF.js. -To generate and run fuzz tests, we use the [Jazzer.js](https://github.com/CodeIntelligenceTesting/jazzer.js/) library. - -## Running a fuzzer - -This directory contains fuzzers like for example `jpeg_image.fuzz`. You can run it with: - -Generate image decoders: -```sh -$ gulp image_decoders -``` - -Run fuzz target: -```sh -$ npx jazzer fuzz/jpeg_image.fuzz --sync -``` - -You should see output that looks something like this: - -``` -#2 INITED exec/s: 0 rss: 128Mb -#65536 pulse corp: 1/1b lim: 652 exec/s: 32768 rss: 140Mb -#131072 pulse corp: 1/1b lim: 1300 exec/s: 32768 rss: 140Mb -#262144 pulse corp: 1/1b lim: 2611 exec/s: 32768 rss: 140Mb -#524288 pulse corp: 1/1b lim: 4096 exec/s: 30840 rss: 140Mb -#1048576 pulse corp: 1/1b lim: 4096 exec/s: 29959 rss: 140Mb -#2097152 pulse corp: 1/1b lim: 4096 exec/s: 29537 rss: 140Mb -``` - -It will continue to generate random inputs forever, until it finds a -bug or is terminated. The testcases for bugs it finds can be seen in -the form of `crash-*` or `timeout-*` at the place from where command is run. -You can rerun the fuzzer on a single input by passing it on the -command line `npx jazzer fuzz/jpeg_image.fuzz /path/to/testcase`. diff --git a/test/fuzz/jbig2_image.fuzz.js b/test/fuzz/jbig2_image.fuzz.js deleted file mode 100644 index edf1c1d3dd577..0000000000000 --- a/test/fuzz/jbig2_image.fuzz.js +++ /dev/null @@ -1,33 +0,0 @@ -import { - Jbig2Error, - Jbig2Image, - setVerbosityLevel, - VerbosityLevel, -} from "../../build/image_decoders/pdf.image_decoders.mjs"; - -// Avoid unnecessary console "spam", by ignoring `info`/`warn` calls. -setVerbosityLevel(VerbosityLevel.ERRORS); - -const ignored = ["Cannot read properties"]; - -function ignoredError(error) { - if (error instanceof Jbig2Error) { - return true; - } - return ignored.some(message => error.message.includes(message)); -} - -/** - * @param {Buffer} data - */ -function fuzz(data) { - try { - new Jbig2Image().parse(new Uint8Array(data)); - } catch (error) { - if (error.message && !ignoredError(error)) { - throw error; - } - } -} - -export { fuzz }; diff --git a/test/fuzz/jpeg_image.fuzz.js b/test/fuzz/jpeg_image.fuzz.js deleted file mode 100644 index 8f4a0075a8c21..0000000000000 --- a/test/fuzz/jpeg_image.fuzz.js +++ /dev/null @@ -1,33 +0,0 @@ -import { - JpegError, - JpegImage, - setVerbosityLevel, - VerbosityLevel, -} from "../../build/image_decoders/pdf.image_decoders.mjs"; - -// Avoid unnecessary console "spam", by ignoring `info`/`warn` calls. -setVerbosityLevel(VerbosityLevel.ERRORS); - -const ignored = ["Cannot read properties"]; - -function ignoredError(error) { - if (error instanceof JpegError) { - return true; - } - return ignored.some(message => error.message.includes(message)); -} - -/** - * @param {Buffer} data - */ -function fuzz(data) { - try { - new JpegImage().parse(new Uint8Array(data)); - } catch (error) { - if (error.message && !ignoredError(error)) { - throw error; - } - } -} - -export { fuzz }; diff --git a/test/fuzz/jpx_image.fuzz.js b/test/fuzz/jpx_image.fuzz.js deleted file mode 100644 index 0063580ab49d9..0000000000000 --- a/test/fuzz/jpx_image.fuzz.js +++ /dev/null @@ -1,33 +0,0 @@ -import { - JpxError, - JpxImage, - setVerbosityLevel, - VerbosityLevel, -} from "../../build/image_decoders/pdf.image_decoders.mjs"; - -// Avoid unnecessary console "spam", by ignoring `info`/`warn` calls. -setVerbosityLevel(VerbosityLevel.ERRORS); - -const ignored = ["Cannot read properties"]; - -function ignoredError(error) { - if (error instanceof JpxError) { - return true; - } - return ignored.some(message => error.message.includes(message)); -} - -/** - * @param {Buffer} data - */ -function fuzz(data) { - try { - JpxImage.decode(new Uint8Array(data)); - } catch (error) { - if (error.message && !ignoredError(error)) { - throw error; - } - } -} - -export { fuzz }; From a8bece43c3c079c7c99b7e679744074e8afb18f9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 8 Jan 2025 13:23:43 +0100 Subject: [PATCH 174/338] Access the bbox/background data correctly in the `MeshShadingPattern` class (issue 18816) This appears to have regressed in PR 13808, since it removed the `matrix`-entry from array returned by the `MeshShading.prototype.getIR` method *without* also updating the indexes in the `MeshShadingPattern` constructor. --- src/display/pattern_helper.js | 4 ++-- test/pdfs/.gitignore | 1 + test/pdfs/issue18816.pdf | Bin 0 -> 3472 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 test/pdfs/issue18816.pdf diff --git a/src/display/pattern_helper.js b/src/display/pattern_helper.js index 4241695a23aa1..077ec990be87f 100644 --- a/src/display/pattern_helper.js +++ b/src/display/pattern_helper.js @@ -313,8 +313,8 @@ class MeshShadingPattern extends BaseShadingPattern { this._colors = IR[3]; this._figures = IR[4]; this._bounds = IR[5]; - this._bbox = IR[7]; - this._background = IR[8]; + this._bbox = IR[6]; + this._background = IR[7]; this.matrix = null; } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index b9b4efbd2fc69..7b9182629a57d 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -94,6 +94,7 @@ !issue8424.pdf !issue8480.pdf !bug1650302_reduced.pdf +!issue18816.pdf !issue8570.pdf !issue8697.pdf !issue8702.pdf diff --git a/test/pdfs/issue18816.pdf b/test/pdfs/issue18816.pdf new file mode 100644 index 0000000000000000000000000000000000000000..79b1c75e5f264f3e372d0bee7fee1e670173d43b GIT binary patch literal 3472 zcmdT`Yitx%6z)T6847}w+Mo%S(3V#0&U0T-mUd^m(6q?1ZAk4F<8=3SJ9Rs=%+5l~ z4+sJU6H<{!Kqw-`Xst-VK;q+%mhkw2fhGnYG2sz3Xb6Txjhc{p?(A;64=NH#jGK05 z?z!jQbMAM}J?AU+xZIVjNuWy4-+pa?ViAMXwoa<5ilUo(!Whw_q)Q<+NYNfCh$Dyx z1#fK7AoZwG9np=l5)5H7P0_1lybfy~4Yy+rD}Ed?b|P~wS;Kx^Rux1ya9#>I92ERv zB|yw^NoGY2OS-C|@myTl_k+Vj02vrx={jI;_ z#P>@YH!4$~`k>=(&yA{q)B8)#44%zxUvqDCboAu)-e>=Kqgft!uKlIoM-OkxcJBJg z-&(Z!*2gmjiiM&%^L&@Gew*Q$yQ9p$Y)x|k|HL=@%C8*t?cfLN^yx!qn~$BxGe*|z z*xW1iJI>8+db?#yW#18D!UlFP=2Aq6m(OS&d^BOhxbKrsaTly^dI*O9UJ)Y?Q;#m#O^nqd z7@0|CK-V2rjB9O}ObiSxc}P07OOh4X2(h5*B-styCasE4zRZQ-Z0bUh`MWzIvg4j6 zf)fuKSb83@Bo6RZtHf@A;Y_Ujz%x;TtdBfGV+mrm+0zpwBR~MwBM1;2J2PJsK}&)? z6Z8L9uxv@eN=|dARTH529~4gZ9~90(sE@WBK{j%kqxp&Gi-Nh5Oy@yKj{jMn-;_yQp{DyPqCB__UL| z7A@S9x2>rB%M)A6D*A?>Tz{cY@-JGyXYVYSo3eKLR1Ma(?Y>=J5*hjRh^_bf=*GOf z{K;AO&g~a6OQt;uxKBGGbYiR> zEx5@wFsywJYy{hd=ToD?`NcXG?@;^NI6Q~dQax1x0>aqtuE_^sx*vMXBi zs28jICs{8K=MN2kce(k}*B6KLJKxz*-BwrEx$;e?#`bp&dHVa$Z@sgn)g;cWUz{7^ zOHMvh!mbwQ4kd=CZzb(fBS#qk-<_O3ZcC44#<6lrLoFR+@F`cv)cz=CSQ^OC~ zvPqM>9%9EDO@9b&uc{M5#E=@GKvUC!I+D|QDS9aot1vPUP029AW@B_05qjxw#5(fP zgjUi`xEr`_T^CSSXZ$V3-*o^^ynUmpDl|4QBf>JkTzt}kNZTJDTM=n8<6}D_SIlrI zsS%C)l%U`S^QP!}nKVx$z+MC{h|o@f>QS^8N7SeWWE-(DdOn^G-N3{tXm|oe+I8%Q zEM_xrM(t=!#)9AEhm@#mu{uVdB~3R1#525|DlM&D H;imoqFi+U$ literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 1a274fb5b7511..e50d5cadf5471 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10078,6 +10078,13 @@ "annotations": true, "type": "eq" }, + { + "id": "issue18816", + "file": "pdfs/issue18816.pdf", + "md5": "45f863f5b227f700ffea1210e4f80403", + "rounds": 1, + "type": "eq" + }, { "id": "issue17794", "file": "pdfs/issue17794.pdf", From 49847541c423db19bc32f87797afb9d4e2262ab7 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 8 Jan 2025 20:44:11 +0100 Subject: [PATCH 175/338] [Editor] Set a unique id for each element in the draw layer It avoids any conflict with existing elements when an elment is moved from a page to an other. --- src/display/draw_layer.js | 8 ++-- test/integration/ink_editor_spec.mjs | 69 ++++++++++++++++++++++++++++ test/integration/test_utils.mjs | 4 +- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/src/display/draw_layer.js b/src/display/draw_layer.js index 23ba3e350b748..3c763f443f923 100644 --- a/src/display/draw_layer.js +++ b/src/display/draw_layer.js @@ -24,12 +24,12 @@ import { shadow } from "../shared/util.js"; class DrawLayer { #parent = null; - #id = 0; - #mapping = new Map(); #toUpdate = new Map(); + static #id = 0; + constructor({ pageIndex }) { this.pageIndex = pageIndex; } @@ -96,7 +96,7 @@ class DrawLayer { } draw(properties, isPathUpdatable = false, hasClip = false) { - const id = this.#id++; + const id = DrawLayer.#id++; const root = this.#createSVG(); const defs = DrawLayer._svgFactory.createElement("defs"); @@ -129,7 +129,7 @@ class DrawLayer { // it composes with its parent with mix-blend-mode: multiply. // But the outline has a different mix-blend-mode, so we need to draw it in // its own SVG. - const id = this.#id++; + const id = DrawLayer.#id++; const root = this.#createSVG(); const defs = DrawLayer._svgFactory.createElement("defs"); root.append(defs); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 83e6b593e9d75..672f8ae21598b 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -1015,4 +1015,73 @@ describe("Ink Editor", () => { ); }); }); + + describe("Draw annotations on several page, move one of them and delete it", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "tracemonkey.pdf", + ".annotationEditorLayer", + 10 + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the first annotation is correctly associated with its SVG", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + for (let i = 0; i < 2; i++) { + const pageSelector = `.page[data-page-number = "${i + 1}"]`; + const rect = await getRect( + page, + `${pageSelector} .annotationEditorLayer` + ); + const xStart = rect.x + 10; + const yStart = rect.y + 10; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(xStart, yStart); + await page.mouse.down(); + await page.mouse.move(xStart + 10, yStart + 10); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + } + + const pageOneSelector = `.page[data-page-number = "1"]`; + const initialRect = await getRect(page, `${pageOneSelector} svg`); + + let editorSelector = getEditorSelector(1); + await waitForSelectedEditor(page, editorSelector); + await dragAndDrop(page, editorSelector, [[0, -30]], /* steps = */ 10); + await waitForSerialized(page, 2); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); + await waitForSerialized(page, 1); + await page.click("#editorUndoBarUndoButton"); + await page.waitForSelector("#editorUndoBar", { hidden: true }); + + editorSelector = getEditorSelector(0); + const editorRect = await getRect(page, editorSelector); + await page.mouse.click( + editorRect.x + editorRect.width / 2, + editorRect.y + editorRect.height / 2 + ); + await waitForSelectedEditor(page, editorSelector); + + await dragAndDrop(page, editorSelector, [[30, 30]], /* steps = */ 10); + const finalRect = await getRect(page, `${pageOneSelector} svg`); + + expect(initialRect) + .withContext(`In ${browserName}`) + .not.toEqual(finalRect); + }) + ); + }); + }); }); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 3d1ff5bf26264..2b868ca8911cd 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -511,14 +511,14 @@ async function serializeBitmapDimensions(page) { }); } -async function dragAndDrop(page, selector, translations) { +async function dragAndDrop(page, selector, translations, steps = 1) { const rect = await getRect(page, selector); const startX = rect.x + rect.width / 2; const startY = rect.y + rect.height / 2; await page.mouse.move(startX, startY); await page.mouse.down(); for (const [tX, tY] of translations) { - await page.mouse.move(startX + tX, startY + tY); + await page.mouse.move(startX + tX, startY + tY, { steps }); } await page.mouse.up(); await page.waitForSelector("#viewer:not(.noUserSelect)"); From 6deb02079295ba36406b7083581871147804f3f5 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 9 Jan 2025 18:10:47 +0100 Subject: [PATCH 176/338] [Editor] Don't try to use an non-existing canvas when rendering an invisible existing stamp editor It fixes #19239. When the canvas isn't existing the editor has no image: it's fine because the editor is invisible. Once it's made visible, the canvas is set when the annotation layer has been rendered. --- src/display/annotation_layer.js | 16 ++++++ src/display/editor/stamp.js | 60 ++++++++++++++++----- src/display/editor/tools.js | 23 +++++++++ test/integration/stamp_editor_spec.mjs | 69 +++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19239.pdf | Bin 0 -> 1060670 bytes web/pdf_page_view.js | 6 ++- 7 files changed, 160 insertions(+), 15 deletions(-) create mode 100755 test/pdfs/issue19239.pdf diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 3198522d7733d..3866296722aa3 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -3301,6 +3301,22 @@ class AnnotationLayer { } else { firstChild.after(canvas); } + + const editableAnnotation = this.#editableAnnotations.get(id); + if (!editableAnnotation) { + continue; + } + if (editableAnnotation._hasNoCanvas) { + // The canvas wasn't available when the annotation was created. + this._annotationEditorUIManager?.setMissingCanvas( + id, + element.id, + canvas + ); + editableAnnotation._hasNoCanvas = false; + } else { + editableAnnotation.canvas = canvas; + } } this.#annotationCanvasMap.clear(); } diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index d646da22fac75..72ebfa6f8be7c 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -40,6 +40,8 @@ class StampEditor extends AnnotationEditor { #canvas = null; + #missingCanvas = false; + #resizeTimeoutId = null; #isSvg = false; @@ -352,7 +354,8 @@ class StampEditor extends AnnotationEditor { this.#bitmap || this.#bitmapUrl || this.#bitmapFile || - this.#bitmapId + this.#bitmapId || + this.#missingCanvas ); } @@ -379,10 +382,12 @@ class StampEditor extends AnnotationEditor { this.addAltTextButton(); - if (this.#bitmap) { - this.#createCanvas(); - } else { - this.#getBitmap(); + if (!this.#missingCanvas) { + if (this.#bitmap) { + this.#createCanvas(); + } else { + this.#getBitmap(); + } } if (this.width && !this.annotationElementId) { @@ -401,6 +406,22 @@ class StampEditor extends AnnotationEditor { return this.div; } + setCanvas(annotationElementId, canvas) { + const { id: bitmapId, bitmap } = this._uiManager.imageManager.getFromCanvas( + annotationElementId, + canvas + ); + canvas.remove(); + if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) { + this.#bitmapId = bitmapId; + if (bitmap) { + this.#bitmap = bitmap; + } + this.#missingCanvas = false; + this.#createCanvas(); + } + } + /** @inheritdoc */ _onResized() { // We used a CSS-zoom during the resizing, but now it's resized we can @@ -752,6 +773,7 @@ class StampEditor extends AnnotationEditor { /** @inheritdoc */ static async deserialize(data, parent, uiManager) { let initialData = null; + let missingCanvas = false; if (data instanceof StampAnnotationElement) { const { data: { rect, rotation, id, structParent, popupRef }, @@ -759,13 +781,20 @@ class StampEditor extends AnnotationEditor { parent: { page: { pageNumber }, }, + canvas, } = data; - const canvas = container.querySelector("canvas"); - const imageData = uiManager.imageManager.getFromCanvas( - container.id, - canvas - ); - canvas.remove(); + let bitmapId, bitmap; + if (canvas) { + delete data.canvas; + ({ id: bitmapId, bitmap } = uiManager.imageManager.getFromCanvas( + container.id, + canvas + )); + canvas.remove(); + } else { + missingCanvas = true; + data._hasNoCanvas = true; + } // When switching to edit mode, we wait for the structure tree to be // ready (see pdf_viewer.js), so it's fine to use getAriaAttributesSync. @@ -776,8 +805,8 @@ class StampEditor extends AnnotationEditor { initialData = data = { annotationType: AnnotationEditorType.STAMP, - bitmapId: imageData.id, - bitmap: imageData.bitmap, + bitmapId, + bitmap, pageIndex: pageNumber - 1, rect: rect.slice(0), rotation, @@ -795,7 +824,10 @@ class StampEditor extends AnnotationEditor { const editor = await super.deserialize(data, parent, uiManager); const { rect, bitmap, bitmapUrl, bitmapId, isSvg, accessibilityData } = data; - if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) { + if (missingCanvas) { + uiManager.addMissingCanvas(data.id, editor); + editor.#missingCanvas = true; + } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) { editor.#bitmapId = bitmapId; if (bitmap) { editor.#bitmap = bitmap; diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index d005a5d2bc32a..af2f49cd30be8 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -654,6 +654,8 @@ class AnnotationEditorUIManager { #mainHighlightColorPicker = null; + #missingCanvases = null; + #mlManager = null; #mode = AnnotationEditorType.NONE; @@ -898,6 +900,7 @@ class AnnotationEditorUIManager { this.#allLayers.clear(); this.#allEditors.clear(); this.#editorsToRescale.clear(); + this.#missingCanvases?.clear(); this.#activeEditor = null; this.#selectedEditors.clear(); this.#commandManager.destroy(); @@ -1711,6 +1714,10 @@ class AnnotationEditorUIManager { this.#updateModeCapability.resolve(); } + isInEditingMode() { + return this.#mode !== AnnotationEditorType.NONE; + } + addNewEditorFromKeyboard() { if (this.currentLayer.canCreateNewEmptyEditor()) { this.currentLayer.addNewEditor(); @@ -1887,6 +1894,9 @@ class AnnotationEditorUIManager { }, 0); } this.#allEditors.delete(editor.id); + if (editor.annotationElementId) { + this.#missingCanvases?.delete(editor.annotationElementId); + } this.unselect(editor); if ( !editor.annotationElementId || @@ -2514,6 +2524,19 @@ class AnnotationEditorUIManager { } editor.renderAnnotationElement(annotation); } + + setMissingCanvas(annotationId, annotationElementId, canvas) { + const editor = this.#missingCanvases?.get(annotationId); + if (!editor) { + return; + } + editor.setCanvas(annotationElementId, canvas); + this.#missingCanvases.delete(annotationId); + } + + addMissingCanvas(annotationId, editor) { + (this.#missingCanvases ||= new Map()).set(annotationId, editor); + } } export { diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index acbc13a628fb9..afbc1e6be1800 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1745,4 +1745,73 @@ describe("Stamp Editor", () => { ); }); }); + + describe("Switch to edit mode a pdf with an existing stamp annotation on an invisible and rendered page", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19239.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must move on the second page", async () => { + await Promise.all( + pages.map(async ([, page]) => { + const pageOneSelector = `.page[data-page-number = "1"]`; + const pageTwoSelector = `.page[data-page-number = "2"]`; + await scrollIntoView(page, pageTwoSelector); + await page.waitForSelector(pageOneSelector, { + visible: false, + }); + + await switchToStamp(page); + await scrollIntoView(page, pageOneSelector); + await page.waitForSelector( + `${pageOneSelector} .annotationEditorLayer canvas`, + { visible: true } + ); + }) + ); + }); + }); + + describe("Switch to edit mode a pdf with an existing stamp annotation on an invisible and unrendered page", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19239.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must move on the last page", async () => { + await Promise.all( + pages.map(async ([, page]) => { + const twoToFourteen = Array.from(new Array(13).keys(), n => n + 2); + for (const pageNumber of twoToFourteen) { + const pageSelector = `.page[data-page-number = "${pageNumber}"]`; + await scrollIntoView(page, pageSelector); + } + + await switchToStamp(page); + + const thirteenToOne = Array.from(new Array(13).keys(), n => 13 - n); + for (const pageNumber of thirteenToOne) { + const pageSelector = `.page[data-page-number = "${pageNumber}"]`; + await scrollIntoView(page, pageSelector); + } + + await page.waitForSelector( + `.page[data-page-number = "1"] .annotationEditorLayer canvas`, + { visible: true } + ); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 7b9182629a57d..3cfd7a0e0fe52 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -693,3 +693,4 @@ !issue19182.pdf !issue18911.pdf !issue19207.pdf +!issue19239.pdf diff --git a/test/pdfs/issue19239.pdf b/test/pdfs/issue19239.pdf new file mode 100755 index 0000000000000000000000000000000000000000..4e1b5d92a48630ac861986beb082d72b66de9cf4 GIT binary patch literal 1060670 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�v_)@^!rDg3@1D%o#Hk5G-tYeQE;I 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

v7R`Taz^CF$7 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%0Dbq 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

!H1ZAV|(6is8=)Ne!ez0@sCsIv8hxM`v%I^cdj zhN9a&myims?|ZBD0txNbNXh(3a>DKq^{w%0qxZhzHOiF^Dehe>Zud#{pC6X2S~wD? z?i20ohwECdwwVdLlP((}rGDa&DS9*OQL?^8W-h>?EB@svH)T&P2xN~uOp3Oy05>e3 zwv&)M>_`5a^!1%fUe88Qv*$rNh~k?^?16k1wxJ1pmN3%tZ?$R4cF zPE6q1{c7MW3hau_evR(;oO+LeX7%J~WO>3$0cYrv*1JRw;$1W@Na>G&UZ6Rk*>J;_ z%QnMgdX5Q>SDjsRMxk|*$uN>t6Mpr*;L-cYcPS0M%8hhfTFbbS`361y%o2|$5Z^C z<4>NC0O|T-dc|iDV&M+atY1d%(n~tpk6<=TmT(HW&v937_wEId-(__cLyBe!4nkI+ z&6wStu>iA?$(}6wDHF&_L_)fR8I7pQEhp>|$tR_C1#0(OS`pnZaTL0p4us7ASm#Wo zb|#FhSUW=fA>{s$JtVlEPVKMKKfcqfTwg?XDsF}BHbBT;tA;QGZQi<)PP&mV-&i|g zyZan}_6DHv=7zKqy;f5mKV!V!nJEbgNY(s9`k|*G^FyPFkzc!0fzU+EZeeJ4i9MWz2Uy*m$ zr{1&TqarbHenJwB0J74DX1tfiAVt#O^j6sma!a$b*FtUga*Q7P(C4W)`lf?(?X3O{ z)9$@puUI!KPr`SqVzS9Wi`*eIquhKmj z7yb?!%jv9>{Y*_qof%*N8R{2g1|{0E)A#76zXdid^~MpR@`3#p%i zc_C8shZs=f7OJjrvNbV+vwqVYe#&{HyzlFvA6{;DjOKbm{OWw0aRoI*D6SX{`>l=S zcXS?WmHCb(kc!6aYt`sXQ^N9pr%2+3sOFH+BiU8^+qrzLXy|-Xt?u_O?e1O_4axC} zNqA+glEGHE+1zjmW*yd%4Pdn-LG6Ug!6y5w0@kYEY;AwvftCQh-)t4T>4#Km%JIIR z*fxq@q7Ae5b%(>g)nr4p=2&bMY-r>uzWMB_l&xpxTwj#9YNXa2v+1cT5IbY-%MT~2 z&Wh4C6OF7FIuW+w#HA zEx~5&j}3~x=yT-gM0?9WBLi>ZoYzbq<_W9{#_Q;wU`RYIeF$lVCwaEQTX(mzZm?ycLe45|X^mzy3{}0&D%l!GwO570GMxb|=4J@k+twi`dzd!`Rm?fe z4A)gUYd{sRHJfG}vIJsCmlj^Lyo#u391B`Ui!Ow4asTp=o1H}Y*6OIPosD_z78=x! zNVa+#=G0OL>VBIq>=YBm*}g;U%JIKPd#;`3IqoMvCf!l(g^rF*RT*`zlBpAcZ<2*W z&d0L-xqCM~qTvpA>>bfcMB_Vd%`LCcVP}+#=y!r@#x|_PEv$VFxOgdmVr`JzvB%L4 z=52wnt_?UdPa45+RQ6OG7Sdr%_D zCSJR|Qhni{RUjsWPU{eUB`_wIsx^;>uYS@DmG8qcnP*LN6+n6_vp=WS_vYo2d{xHW z=d5s>K#gYp*ZG2;!U0)KElZktet_tabl!wUVf{IF$deUOdB3&A%Q}AcSdri%B7Wa; z5{eB|r(Wc3eHZ8mAQKZd8FsTV^jMVrcEOT2%q-?3S|ohH*+v2xolJX?$iGJXn3x{6 zhsktJLOx_JPDO@o0E&MYwutj|hqWT=srM5QL*`Fmo%z{yO!f6K5E*%0EglSzuQw5hYNn@OA$$8SWKRpMt6dihI#F9fZYD+>W72hWzZ!~0 zQs!3QA-DjP)$iIuRH|?jwRUZf&V^L3IfPDplcTE-V^Q3p!&52ZOtd>qJoE#Uq>M*= ztxIsx2tc)KkUdWlvTH+)@~rrf$0H_8m|r{2{;eGQ@sQp)*q)qqjHjPK+3wB>gB4(j zsv?86!{znlIIqCX2-pZ`b})T+hd%5aJWRRwz#ysTnu&L|Pi%w&3b`cKUM1Zy&sC;3 zt+d4-BJ6bjqzqoW*-ZxvcSnwc*JNm@i*xGTN)1uPecu!5Yv5$XDFZ_wM(TX}vd>lL zKb=LyOu|?=y2EA?*9EkXFK2Ltu_fQuodt!_js=L{hZO(4R?MuEXbN$Rh$wcJ@AG?; z0C|JQg5e*kQXh9QLDP^b1)CS-*lBrq(Uf%J@m3&sZgikyP2odp( z^B}#t8CSt*oWqKm2K?xk9-}k}DoFS?QQFh5iPx~o*oG~C5pu^5)qO6{VLJ*brE~2> z3ckML{SMSP7Ewxl$T5deKIaUT^x3U}RKrR>!uFb3v*G-&FNSJ!Aq$!I>#H!rkUb)N zLy$0Rk4fA@8#+?eEVdCtnM^macZ??RC>ZxNp1PzCjyHM1m(i~jU|}e-zS`$hsB(cv zH9-|pE=5{4Np~Ujunl2m$!oVCMT|=M@#|?UoLxc&nR0y{D^MkZM^n9=trjM&oJdC_ z6B6q~vVX7L?9sIOb?tuWH4?W;p;b`33;bh%^eP1HH5Mn&$d)3 zu*eh)=lCGI<^WefsK4fiTlX|*=V$kYk@$^;ccPMX$G^fcchDtII-N=tD?{J8Ti6d` zn{NOj?WYDx35@A{Pe#q4L>cyTf{nm1*Ar&FbMD~Z3Ok-F?r3_u2dbSN?sQ~>X4r(R zUI{{?FLE7rDJjzRmL;T8J#uAt*4J*o&etd;cN&>eu45on2Pd9rMqatmF9vZbZc68Ce8@SiXO6RVTg;5H}Z_Q44^Op z5ZhTaC?7VYm|DQ37yzT(fq^ZM5jJfC*d>nuO6r>Ryh8oV;%uFMsOT)OH5}pxs(cNy zeDc0unkA&Ng=x24 zX7ezMC1x4&btIad&CBp8bzHkn zCVO%gyEqh<^D<<=4I6Tn2b!Mth-Qvea}G-nh84FuB+V4EALUrzTLnl@W!26Y_Deey z(Paul_RBsYtEC8`nx^ACE^zh`Y!3yZV)(V9%#vN83t0tL$m)!9 z@j`Z|G^E2jB-y&Ilu^FU_v}(cyBJ@yEiYg%WCxVQZgP~~vL7~Cv`c1PR|V4J#cJku zt^wm|Kmn~$%w~%uH|%=i>m396BltSXw12I{8K*ITa&LfyZKwM?Z&g-%}kBlg&OJ(bb&>>>8zJ z!sK^|N!{;rJiNoWhBqji*yqfO7Tm(Q?v~PpTNfK|M0#zirQ z?0gz|=0XdVs(GSJw4wRc?#Xu*2q#;_V{Uq;{xgJGO?vm1<;f)aZ_?5+ptNY&GeCzPZgAcj)2O%D*x%JKen*JiDa>O>78+gK$W)Jb1 zr)Nvox4=p9O-}}~M~6Z<9?g%W15|TXwTkfQ@QCMmsKf``TIOKM-?>(EaDAdmWMzv<{RyG#^*T#HBoZK0Nm|Yh( zS`^ssy@p*FO+=<=(xbxJZAvkk4IIK**pY%Q?h;k;k5Mtc*UpDS^3*2q?LpDjz6X0l zm{-@IUCP(ZE(h=5`Q`z<*wc&kvx88=c*Zp34N(E$ZQLD86i)Fs!ds-6dy4`rq9JEe7bFk;r>U_^i0PZOR0I7G% zTs7}WdJNb5`ZW`zZ?`dJ{}|%LHMd1eo>DG|+~>qg3X1G7F@yuW+*30uc-b%r`>jEC z1a*DQ7NZUm`DsxcB{|UbbT$vb^@KGmihZqEKiAW46V+%x$)g(&_TA@+-UP7= z$4++Sfb=cK`bi~e)7Ge%PH`Ior+DW#wZcrpdio(MQ#xV2y$KPDYD9$B7rSmL=h4DS zrnCd3cjr5VQxc-W=C%8L;|}WAd$$Rqn&93DRW zO-51B5a=!N?zJ^cS!Dm;mW7Gb_H{+-DMUOFUN^0^U|CWG`K+_90MkL6-tUah`v^yHqU{^I=fI+v!xdy(lf0{ z$TM3?$nQ|Wc1tm;-KmO-|GJ*AUb|GgABMib@-Skt?>%9N>Ua*a$7G@rX4?*6``d9? zp}pF9YcT-oZHIB8H8jZQ&h|9_#Dmp2EP1W$Ul~aD}LWI;~SMk#`Uz<+;vp-*jS7r z|HO)|y*0QpOjL{YH9IN8x1Vp6pHYM}RN<~C?;qcgE?cA3ULb1NSD?{(>b;?x+=~fy zl*#6(gu~K`kPA&ZD=YbfsQvqnodW3izzJT;e1~k@3fWCq2xe<`f_Nov`(BK+SPoe* zGat{KgUPzSJYHNhM~VO`n|96ga)a_zNNX9DJ`+#-t;%}d?J$5G$Tv!dumy+h#&uMC zjSjN6nkF1hI+B3j$MD>>;uE%(#a^BwVcy&h2vnbH*^iqfp$Yqo`SBw9p{cF-ejnV| zyd;yXPicJZ-eVvzB^j|HDwA4ItL2^Sy~q_#S+)_4^ZH}DRa_O-e!p!BFL!ash3Z&T zx%(j!f_Gji&mJosR_)vrY)lg(4WC>~3Ga+S&^!Z9wSAmP+IImsD(_m;SEFfY*F(;5|Tjt%%q&PH<~mE`U{;_r`rOs(*F0&H-b1 z5C`Z?wCmbAV61871RIxog}W;RQ(x4&W4)!VLYOM!SO?n-LssF9#z{Z#Dr_1RwkrNn zl@*L?vCj3~t2ZHu2r~*Z|53TE;H*Ko#t+$z=#br@(asCrJELLha`j~|_9UAZ8ZJ5* zvL6Tu*%i+Axni@v#~IlJWnoL9govWACyLO{L-5t(n2YZOH6)Byralq^=}1=Q8L-Nm zNb+>=TPnrxJov$g*X)8js4B>)BkJLJ5zRM77Rc=>#X_S+b-|>1r+kKV*KkAX9niRg zNw|X4KT;x8a#34Y$$A#T8TKJ+654gh#c@OSJ%~%MuP@p-K7jRl%(WX|PtvE+v|An& zjZ&STG3?NQPWc-^&Tbv$%5Ox)PUFPg@lHx0x|5Z4I_;bvI^J|x_xqh_R&Sx%%0_O& zO#KGQ%q#8ubYUsqof&Iw z{U-N?^WVr9YRG?>pJRGoh7(reYirPj;RYb`9GhFGvNlsQT(qs6$i`=;@vs_{2u`up z4ZNu2kS>^pyrYdKL-D5P^~Sa|jGl_hIccFF{2K^fUQHQfySF_hxG)p=2uWntH}NuOGK_t2*j_COVcZ^)YrUSjbY44V!s!Moyf=&z0j9o7^)!tI>6O@!mD$zPsyIq7AiVE8t;6~V1>amJ=vElmV(^v56G@% z1|+j05#9P$ii>)m6Mww9um)~bIH>F(?N~n#>AHHe0eS$>CnuxCcC1i#t-;rstAn9W!6MH_$^$|K6hHTdlAA88uWa zp=(!aVC^i|jnb(;rYq+<6Sis20D`FYT2J@#pHR6R(ao2yvT+tZ-#b;tK*q#$1@L#M zLlXKSZtY%A*@rPJY`2`&&e%h|cX{Jf($gthu>K+cU~-Bi*NG*O?ZdpmuZ)x9PU_-J zSlE8wAi6!kL`<2X6(y8}SXQmXr0S$h=1RXd3doB7QQiB@L$FIg`GE$HXqPC$R%dX{ z3>9LL`R5_av4@n}tzARN{tk2f=aAH32n}mW8q_>M7(x^r$Y9J1n&svb^HHSD-QE7nOO6l-OKa^v|T2 zdmAazym<-@8;h6Gh_MJcy_y;rsC9<)zIjx;Cv^zJcZlf0RvuMBurSNq`0J_YA4Ed1 zvHD)8He^?yTKUzTM5RPZgsIeQPm(#C!yL5^hJe7#**{;AcZeTtXcv`&moUD*y0Jfu zagjb3xLEBED)HE6Bf7Gnen=7U+7-Y{M}+M%ID|flA0U`)Jz0Rr2D=ZOW0cbsBs7JEspA^QQBko`0Z8ot-}xvOaj%ky13*KgL-rSWT*-m51L|4+LU zjy7-A8>kp?w+Q$1Fd^vI6Vv}&7TM1yJj`$3ql#`>{Ce1JDC7yIE>hic!uU%uP{qHE z)BoOK6c9ax-*T);!yIom=O^|A?CyKLV!NK`_1hTn*T>}lSQn!^ap@t4x9#&%jX>J? zzQ@vSe%-jhw>M6MYONf!c5SS`w+kS2FWbmrP;%2a9pdN9!W_$1y~kZjb3u3`BjN!y zfNZ&)MOr+;*XIiV&#z-6%%n(W?75OKFXwMD6m=Leoexwk> z{BORxUV=7}U#a@FbA%ERUF~#qHq09U^3T25YY)-r>BPG!uOjnL^SqFis3kjEPn?S4 zbz3?tYbsokSMqN;h34Zi9jtl-a=%Oq;e9spGDdkI(Ns@)n|_yt!e{|hl*jzVe4qIn zr5&af44}HJYsPL*+8AapL5!nT1`D|$+P^4c%~XBZERQzC3QU~*lT@@12*z!#SZ;eg zHAXA>+S+VXrOPHxsrFr@Ykqsp9fcx{+vHXud$1MF4e5J~vre{EkKZ=GB<)n8SON*BT4>{GC#gd#{S03W~ z5%KM)uXQb?cHa8BaSM=MPXzAwIkCN4yY5S@r{x^S)GOfC)358>s{ha5{`+tLk81CW)SnAsab9`` zRcJG_$in5$?510YWb65ph>j+ietj*ZP&>grOR1guLZ>?9g~ORwPDVg`Qg9K`%+;{& zt_{hakBUAcBBL2kgjj_88cuseSEY(*bs&h`5~uQNR&cbA?Axr9!R)#XK#MommD`C&v@7o+tdobh z&A0)`Ib8%xP-?zf^0O;mb&j8%OvpFx-5pEhm1DR;&X$jc+No8s!aPa{d%4NcobC|~ z!Ae)W$I!XoA*uK>_n_$55*OO7s-g&*uzL#*c_tf78mN(1F|v}vOztsH^4Eu#h?>XV z2&(dFoYdPAUoc9o9ZtQa;~|&1PrLOTlVxH)?9i2`FYtMbS>LqV;)96PSJh9MJR$}# zP1wgUEsH`=7;LU2#0ngTJ7;k?5>|}7C;ILU*LvC&h~)Af`+&%Sx0rH! zH?>54fdM~z%KL=(#x>d zYLTH~X}Fle(zKGO?&d0FF~>u0C8-~Z`}(?dgLL8N+V%OCB2&9&-7W2Nu*Cp}WtoMn z*f+#eKxPZsBM~7NzyS4x(0a<3>+f!~4Vdx`na8S;y}1J?s_1-gjDE(b6)4Vl&9Ffy z2T+`|j+95;`uopRe3caN4574dDN)fuqjGiXwYwA0BzJb}X=kE^ z@b1v9iBDg<`80h`Z1}!6zvl*?hv0h>Y~MH?f@>$Vb!8aV@rU5=$3kNfj#^QA?dM( zn7Dph$Fn-Bdtl0vm_=+!SW5_hThPPLVXTh^X`@y@M0jnqA%Y$!&Q>|qD2dctUR10Y ze>2kR$KRDshe*Mkd=r&EnU}c!zE-LysyU?%>C_H=&n_`rx;{hYKIR7NO@%l(Wk}Xs z=X~%uu5f8~op$W$J9C9cD=>uZB?m+v1nM|ty%l1IFvIGaGTyfU^TiUd`P3uXjS9%U z>sF&Xxoy$eyJ35U3YBl3p+TDTF~}0PXu7$7h$@6_Kw;ML7V%%KeY$ZLk#=)Bhm~;ega9ryuUWyJ037t4#GTEU?`^k71CnWIOLI49k+Qh3 z!)1+*SNYvHB2xWUgwb+Tf?)S`=SOT^s6{yOvr~!14s|K|LICx?Fdl?@I7EeWJ&{vI zC)#dt_Fn!=Vy_;pa4PHxanX+bT|Q|fd$;RTV2@ zi^gEz_xCVj(DYMZ-y0E-ZAn1s{r-MGJQ37O3Y}K5N{0!;+-^t^OA9C6TqT-h)Wl5(h=Z2gzf^=K|<|ZY4z1!Ya zvIj<<0AV8B5frWyN2sS>;H%wY)-5(LYmdwp5)>#MtpYq$NC6YS#Wb(H+l(a){aeeR&jUPrW| zJv`2}NzziSXJ0{jG3>s^C~C7{RdcZFEH=FD~2x>f+3h`rMK7 zJkBAzIDp2*;5#furmN}-Blp&m)Ao=)k78A3QGEVH`u?4I>axi}`Zdt?v*!~-wrZNS zzs(J_+}?H7!a>Tau35i?6QaN;uG6ky_O%lc%b>MSy`R@^I^4Z`8lBknO}Nnh5LRUJ zA^|WhN%Fj0B8--c%gCn*zKCWiCDL?$UDKeEa3z0+aB7*H&6^xmhbnnZmu%s<+P)9r zXWniaa52YWy>VDGa@x328D&csJ9H8tE4b7Z=-!Sh)H)7>+~ZY{Ju``hEWBn*BDPSl zT^7*Q`M$UTuT85EWG6A5&>PWz^bW~2+g&TI#H*e-u8^)F$yz^TbyEBqK01>X+0cZVoPA$==A+0x_i%RAGnmNb!{l8t|^S>H5 zU)>E3iH`rDk|-9*;_QlOOxLRvsTLCLeyz`O?oFD9dBYLs!7^D!wWmBFZlv=8YsbgX z7Xi~1B^wBnx9rfsdY@EiwsHe3fazZ=&yoE0+EUVS2 zg1qC8%2ldlR6fNUlv0Enlmt+68qI|h&=9sa%6sEQGe;=VEtu6ITt|6gLyBRpX9bC` z*%vDitg&CM=B{2uwG!cw@KZN=S?v9J`R$^+dDKElm&N3hVnYzQ&qthit4V2 z;;I$&homrkUprdic#jylc8HE=xn;+n_e;UrmGF4Y?)g|+x`!0jQTkW9xDtRnYIn1= zhlg_puN@)PpkNiT)~-V2wNsm$;y1l}KAb6$r_(Z#d@I4!t`yUN#Tfv9V?)pMUJ-u4 zV?u&(7Hd#>#ag{LCRtaD{e^U2w*l?fQ;T=QymNZkc7V_;%Qm8(c#A|yXp%;=eE%CG zwV1G}t7mvfN!)Cc@ih~tOlTQVQoCk6Th|5cciXdvX@khpgVJK1V3BtDb1Nrk*n5r- zo5v25UTy8lfX0R)lej~=o*44@2T_q*2npC}0k|MOnmqG< zKO{#qV1d+{_1?jaQgZ9QR!YToN_JFKw`Qf0hTQMql!|$h4%KOxhOk|iFS|!tiQBfZ zcE1YXuZlywuKt<41q~9*Y@14c!~9zeTfV!X6h!Ea`vj3`YZZ#TKbB=gEa23udb=%! zijUMXh`_A+IArySr7b*~Hc^)48H3`Sel4!f`9FQm;AcwKOl8Rsk)^&nS2e~k7tHu zejk+&jVhHrWLJ^VSi2K=+AXLSR<>|d_bg*Vq{-l@g>R4$Cg0FqeZH`PTtU2^A^gO- zGWy#p6Sx8F!fhLqEk1rFGxKPNnDC~@p*uuuqBTd8uXgRqUL-1BF4n+r>Mn! zPRYPmn8eX&v$V@rY-ijVi#wC_)BKR)EJt(EDOANW9@dksA$wn`b~j;&9MIA9mTJQ! z>DEjZs%Sv66Lim{!aX2dF9dUj=nL<4= zO>d$4T!vKG-i6$lCYT-dRa-;m79&}hemyZf*2r;d?~r6-)r}W52Dnmm{mR0fIV3fD zPvtRQ3MupNHH+McP zYrA%G-z`9h{}@sh{E&0nqOx^HmHe|3qe>qPiAA%07R-pG2Voi}Ikj3j`4mDP+~*-n_LNyd2l+&&1jTl?~?zh{>_ynJrUy7)7FmAXm58=-!i2oKiw%faJ;kMC`fnu z!cxQ*6cd~(!I*KqUFZiC8!65_#I4}lmqtI2(8la`YI7_%zOAVmxOVYzz~Gw&C43_K?DnTSRsX|Sk|qGVwPiicEjfj^9E1ur5&~+Ox;~{)=t4( zJ4tSKak!rLJGKDUCGIt-()c@f1X;~D^%dWq#m6-={QSOB4XlZ>I<$Wql;YP*< z0kNEyk2#PH+v)!bw4999!@}67NlUhj*dVHQbRM+@a4NQuI~6-CdK9f$=xLl%+_*;#?8FiFlj={YF2D{Rhb*nWf|gblu)yqs)YhqMe1R*|XK&VR43 zvumUJWJYzwYnG#}m1OVKZ!`<9hxOX_#=VFkBzu3r^qRkO^zK`Wvey$%yjGP54%iJT z9ZOu@^qH^J*m{yQz5y`$oC{P&c^N6-+_U#d!KB|e+E?Jzs^^38nQr7pQ9g_?|?}(HYS+DrM1Ibja%nlD;?rFrISp> zaf~t_(NP_dk0jAVrj}RLj7^n<77Ci(lwezO^vjSQwudiS3*P+^=5Xz@CVCi^ut2 zPbBd*vsd@ESsS&p$MFwde$On0Er196qssA7#avPK>)8RPOZ?sYqW3lS?e*<)<0JZB zN4Cfz6=2Nc)6U78`wUwZYkl8^ZOA=pAUNFcZVQpf13 zv2WY?*@AkT;WNMTyk{Ue(PwN!_#LAmukTU<>@*>&U5wQeXY;mruVDu44vwMg=oTGz zvK&S^;#kNErJA7Q8{p>j8&NNjw|cPog=kiA1`xqZlqF;kMZ!kC-OMwol?1|t!tDAk z(}u`*t{KLv8Dt4&9d+UNn(-m?FR@_(n}`JR9vfDdv1aAUMpKdQ4RV>S9v&v1TV1l0 zB8|tK)JhQ#6HU|-CwB!dB9*SE-}2js@a`HWozsv0=p7Z)@w!sQdE#8G_Neae1iheo z>+AbgJY8`=2a&G)w1=qC2F3I{ee!<&)G(Vv-z!@>0|izNamWJBMs@B)G=%bXkcWhE+b7UT6FDv(F)ZN-UOwsBv=(ut3U5*RU1BI1b)Z zZ)a-vj)NVFVfC#B#UeN|Y|8CuL+Gg)m`r|4WtivKb>?4B3dq|TXGXwq?L-6`UKp3H zc10g%+OdZP{)doyx9F7G&5wD%42`Y9l(iEUe0#O`2LimGd?o^IzH%hkj2(^SlQeRZ zrQ}ijDIswDdvBu{kmL28j@4u~#*F=%xk%rkqEZW_cVOxF)`X}$l>@p9u^=+<&hT-%#4eOdgR7J6I3i59A zgm4Y7CmvI5VFn$~xZD`JR2(KY)LAI2Fjis23v90^p@g{5RU>zlUOV*^q%usT><%$E zp%Jw7#djZf6Sj<$c6+NS4kJ%&I>f4o-a&pnci(B;FW6d_B{TAKs-50CnAp4~ zgW!=jLx;YbNE_DPI)?1EgBv`9=GOg|*b2>DN2H>iJ`i?j z|2}tD!7Z_cy>^wy^tI&Hi45AhZBHog`6e5>6fwlbvN!Cqg2xElFZWA`Q;y5fWD4Fy2&Uu;76t?i2{gl(_%=#XaZk%DKZv-5c6F)@s zH$BGoz6;clN*qC_KN>xWtO^}V0y>OI6*qjo9G>0+XUqnMeUGA!wlFsXd@ zkbKP{nTF9YHcp%gsC)`@3ENSL{^AcRG!J}88K)4RIY~*uf9(|bJ&8I?qU>AVa&mD# zu4ZmDvWY@oem$&>WrmEG}4p#awh&gDwLc&g+a<{`=Ts5sWIr{yd{s*t&MY;u-2%*EtuM*_wL zg<-KsJ*n$IWY1b&JBC2(C)V59MszVLfI}hP6~dYviDIj5J4_lRje;ucJ}N940}Bmi zb`2TR0lEuASs{|xzh)|AEON+vh&6kw;sCwRJ!=^i!}&UQ6>H9G*f%O1X}>DZxP9NR zTMRhc#sTbg<#;UbbSDpYh>v2jG(<@f8}FrzIB4}+ea+byUVrWIWb5RtcRM?(9u)~t zGS}f?!~JLXs3FY#Yeq-h18DBZZL*VrxIme9-b6exvQ%g+3+oz5y%VfA zsD4lt!XE86ETZwO)*Ye3OgkaQuxBn%v1DS5vg zS?GD*+ALKH;7**4mcuhnwYo(s&~Po@2J9JxT4hs?Cv>)jgze^v4af62KE?Ouhd2hi z&kNxIUpp?`2^zt_d-BHlE(Tq@^FzFzlc}ty3P96dkQaah8F0(SN39Acd0Ym0Ti2|d zyTfRhw$o^=?}jCQP)m!mx43*z&1}Omz7kvUQ&M0uu~nUUV4#a%pi+;Ljom-(+=aY2 zvrda;)YqQr*fOlVr{0Seh0sqo0&4y&e@=9_3^%I#o{8PNj7DB8Bf+&*i-uY{!>t6z zb;U1h)r+ld0NRgz0cxN0tof_>MC2wyGcGnU4PdQ%m1|2pdkiochSZj|B-G-GzWyT} zl@5MwEZgbQ-AIZtma%!wrl`vYb^}+lx$6;e&N^X`?gtNfF9(F(D>$@Ak4TIvZ5$Ot zx`@56?1pp5i)Mg!+j9_uWkfqU(M-J~DY*UmvEAzl7o9Mcy*<^2tqzgI$eb`-zVeMS zU$DtF6g#nzi`uOxO7?p9SZMr=reBMTMgaP3FA8Os7Q=44A=kT!a}3v$cik954QJma)>kC(Jt2o{w(&g)6-<>P>NZBFlsSR1;S z(xP}xW;HGl5u`W0J7F>0TNGx>jj6ZW8zdjJt~;1ROmgp|CnN5_HKVD+4k16Q{a%en ztt{;w03y1M3BN)W$6hjB$w8-h;YjWN_+H3j!ZbvOYd3>DbR|b~R;;1i1DQl}PGZN> zSCY+@X~%HBdv;0yCEDl6g&B*Wy#)neu(h=Hvr+bunSA}nJwZ)0Ne3QPsg7jTUG_9= zw`~r|0NLbbfSg$}opoB1`v1N6d9-zI5IWf`|0m}5I{tXft^ZFPuKpa4t%hQ9bk7Sx zxZf#BUl$J17k*e)c~fNA90y;y4yygOGa_r*fdv%000>ao^!4PJwl}3_GfNN&G@rIv zb;g?Q1{!rko!$QFYL~xZ1u1V#iG{S3|5s1s|9P2(ny8dE!s1esqq-a05b@7OK)bn> zs3(hDP~nhI0gGloXz>(8yKoedqSuZ-3t%w<-_Pc6cI7S{!HBHfStU%Kc0nq8W?$yT zQhKd`+}uXl_AO}8(v{0b0DFg>x8u9%nLFKI<|oNc;-v_8rD?zn=E14^c4|;vn&c1(YEc zwRzw-Ynpo+<~#*Sjojy$j3}?W8}a%oxQl z?jN+|nSMBr*RupbVj8jsUD2q=D&!NwWVs;*-9`sB$FN zF3xLE?~!yp*{lI$BYzh^zOPMnme|QtblLG0jTQ5Xx(0d=>Dc4L;A%xr3|%IAqUOMe{D)hn;B%^MBS8pZkVMmo(Yj z&oNS4dopa;+wJM#0TUO9`USvi=6+&BT5bBxZi+q3cVl;*@AaOL-Q9zD2mY~JZ(LtH ze%|;Wo5$}h(@qJ_ou&*~nFL<;veC~L)R6;F-Cw)p$$>i(LQr{YG$?XH6NrkgomUP8McW4RL8cLEd+ovomZ`{dcZJmS17iaoic7Pr2c5AT67XP1OZ zuv6?T6QdGZUTJp79=9h=iaH(*alCORgW7UL<*E`&9Lej5LDn!y*5(T254~ z;XBXR=oFAZxlmw?cxfIiBFyD`oy-&0+DXYBOA|z|T^1`TKl5r`&#s5iU+0dblRk~H zHz*tC27pQ}SB55+I}W3abadx#m9u6H!y43`b=tWJxko8mxxM2Ku}-%MluEXFR9+M5 zyiy>$ViTf}N>3C>3lQ*%CqXRTuNkc#5m9u5QioMXxBxq>-R&GkkuCP%Q3;Ax5(&|M zjRaIq5&WurPbC-S_=I{+cp)O)yP2XlN;3y8b!cMgsxWUb)Spk?a#Gwq;S@qI-b&&3 zQ-@Yz&zKsSgBsO>Ha9_M;ds&LvA(`NI{WdWi!3e88$<2-4f>6WO>*4nU|&1&ytT7| z_sDR&_83nl>=;N5|1rzch&G!Eyb!8pmn(=RCR}~4cZ*{@br>xvM8hFWsMCo)vznbg=grBRGT0Low?e=^GH@W(?e2r8iTO=yH6OEWLT5tk?hJ2 zM3DZZ8El~{m;gdDzWjB^2I2*q>q(?3q>IrhXza z%udGtIc(W0A^sY|ucT5SRKQ7V5l7bJsF+d>Q*?1Z2!m>M`9mI;32mQ7Vb!uz*435F zYv$#rmQJ(McQsR7@{nAn8|E%(jq1XTc@6z8YVA@yDW`ca0r{Xc17*AaV@Q>erY|8P z(@l7(vqUgF_@}_2UEVXi7^_J}?@(SBk3PfaCHWg$ApCQ{g!1x{@ zBy@ZNGq(*%raQI>A!qs;wro#A`Z0)*o>#xQNo3wWF@8?IVg}K4G2`})j=dew zbM3Ino-#xw_I8Z(x1Q^*okO&kA}ZOx29V=2nacy6a|m(hj!y`MmMI1Nz9zlW0(72u z<~sy?5CB5V_kG7=Sy_lO`D13GgkG7d-D)$V;`d+Q%$gh&$n`9bd}{((rba9BplymK zaY!(TdE7}|1ZtAv8C8hH)2%=0u^*+{kZAjm`}G9VpF<6phk7eXd0yZB3g%W)DCrPo zKRIOQrLQB2v+u;=m{zi!xKkLF82CeGh}e>3{z%%JEZYw1lr>4XU^s-{Icce%J35S% zM3rH_01&oNXLMAGV$ZT=P#;2S`FrsC%Bg6Ws-FRI5kA=6=|r`=i-5;(Hm3wb&72(~eO=uz zS;A=9rh@9$Bp-7EB}-(o(r{zOh6&4y?-fNQnZg<&wmoM4d zgq7TEGCj5uQaxEKkeg)T?AJ?lwkmg2VHvGaiQ~r?#be0!5U&Ep;e^kRxnG)SUAanh zL|oA$a_#z%{KZ;fm^*ZKb3e-!HkEAx%R2`28fYKu?YCO(L5kZs?pFH*n?qoVt3?Z_ z)*yb{OY|ct&U5aa>~<@O>N0M4kQM$R$EOReAC10`Evcs0Zl(WvpRcj+Kk>Pm*fp!b zPk^xyW-rC(csy8#hv_c8kPb=1o%b;KY2+S$?TOUmp9Nkd&vAIF_ylyCkYs4~}--BuehYes4TE%`!Y_1)%_Q|9@ON8eAG9e;{ z)GdHMJEM-~ifa)`mG?P9YB#E#Q9b^IiF&hV=XTy8sznt-daZ3exuV%B=`w$%wR9v` zf&p_7Pb{+A;s{b=d7o(1$q$ih`@&1|%8j#_)dFQvl~I7u5bwC3`XC8j33Yv~A_7%a zNjItsMUrNE-A+r#uvE+vkvUgom@yi6t+Xb5n4OO#ScI4Vy$-Wi5`_Q^8BaD zbhdkr-s+G;5~BCL%`H8$1D3@!LD{1ER!SE;Zf#M_7^R$-F3^uqNejR>I?oKU%eauc zO&5)mzi%<)PosoY3yMl9T{#f<=tB%&aU1AxP^fEq>9>#Q+0Bye=qmSOwRWsEV7_0ivIt90Qa|l zdI0w?zdV4eWF__H_B)pRw-o?Ec2_0LVxw4Xj6YW)HsIcMgBZtLS40gcqN^ID3C38a zCxlG|>1VtbV92&PWaaHabV> zajc@^@guraEGw=!!*$;J$1QIn4xuBXCz~@N*&s!oQCa7e);E>?7$HP<=@vjdXGe7P ziYbAXQWQf^7VO@OvniE)hPboVqS(u#j15z#Gn8OTeU3`;SF4gqEi(|!p1}{9&3Wzq z{azv^6bZ)>-H{-p_BdRhQzEY;N4AScP0yCmtU**r8)cMp{UBe>@uf?<9xYO}K^C~m zba59`VkNe~L;`X4k}*`Awl(Pz&VYZEqwb|cG}gMQ#j=wpDQLnmL_Dx%gD?hn2*g zYS+_!LsmaoPpYgQJ2QmZISW-8PgD-pZ2?xec0|rCirCQ4G1yfc?WlrI4~D5;rJg(` zd#jQQ>F-LqwgqV3u5j32qdNq+VwG=o(|xK~Y4-FxbL%PADU5(BTH&sv z=yzES5l?pKt2S2exJ`^MZgWU@4A;mT>DP?E-h#EhJ*!m zT~`kH6e>ZpuX*I{zD5|wG^E9qh-!A{)+YUp>2_b^;~o_^E*YGBDg&Y2eu)OKn~4E? z-TRtl@r4M&Y(!@Rg)GZjD>`6Y!nnI_gRy3=UB8sq$HWHiV?Q^2#1kL#mg%cl zy=ImD-WXT(NS#;8J*0B_8>9?$YjS65?RuhTJ*}*wp8nb5S{xqsJ&3-LY_%vEIYoN9 zmHS;Sayy`|)D61ygoa%_nbb9@eIIaaD)fHU6q(NS1IezxatbwCeaGFgobe1(_t`QP z#NRR%TqZDwOjZ9gkZ^6f|BO{{H{{Gd9o@Bs1~8E?h+p9R+Fd22&n>9DLG7uN5Vpm7 zT4iFu`&vfcL?Gz1@upq;EmyQPQyF%HRv>!HB=hw>(7MX7ZNQldG9B(@tli!MYOqe zvyIB@i#HoZlh?b*-dT{&S4_x7DeZME=aGQ8LWTlk)j2!$h|KEF<^7@u5>oIpPX#AC z(4w5(4A`LdHO>`FV#m@UzK&cUysw#hF?jr~ba+WQHDJWv@%(@0rBxLsNcRxysjH9z z5&&^Pj=#0*=X@G?Yh3^&tlI>SsxcA#orfX2k`*FUHnF2G;{B*jH9@-ATRTqiYv*Cz zL%JGq-}^+7IOPq>WzlOU%6QGnTGWrB-L}}X-S2?i69{rj-HD7yj3@4aNC4Xb+Nqj| z`xytne+p;k8jNaD@Q^}HHDlJkW^TsEVuV`xfSSo`J^^M|2W0d=lH+ki3(Bk+ zt87$R-PidacQVC!<1e2h5E`UKox;Kv3BWwd*17m4laqMg+WVxY`F1)|4 z);SM*&hUuF6%fBLb6w}F)-}~<;Mdi?RSa8W;7p5M!r znu#5x)}4aIDXGk7u{tZM^+pM+hA*mBg3sOAPltuvgA!DB*HAjG0wH%;DD9q79_B*Y zda~yaaiRJUXL}^Qe0!hcik-ml-8PTEwF}2}zMB7#U2F+?7D`UpbX`!{k%)T8X`OpJ z!NRc`maVQ?rNZ|)J9X#vO0?MsDnvG2vGQaCJ7PcJy6MJVGv<;Wn6YAs>xWFbxf%b> zjp#mPPb1b&n(9U*WqH~lQ?WRtzJyt>chv{&6A680bk^&fB>JI+zwhx!udiE^?3gDC ziMf~;vHBupBOPL7m`@fhrd*EMbs5BHZF0wZz zFYeTBl*cSw>b=*jYC#a8k2Yr3(A7kGL9LI%$W~!CRONj_Bu6b)NLkTVB;r9q z&aTzvY5jc>gt$Gsf8Tcv@5U%!hY_`MEN^N|y>jKH|Hp^grO>WjParmIA#sb2hzIq? zSafyBV)AGf=}Y>mZ(6FDG}!A}DFB!s#L*Y5s}MutJl*5th0b< z<(%t$Qlz4~8OOR#EExGL$XQU8qI*84A+Q*4gJE}J6%X}9MSR9?y3?Rk=1v-Z|4bT6 z;drlKMcN5fIeqQ8WOrs3X{;xn`ggL)#3l&4I^}HdO}R?zId_df2hqGI^%|zJ9@HBQ z8+fj9L{x1OiGjS-khe9&MX5@IVqfisQ`jz^gjc5aW(DAzyR@c7Bt3cuH?Q zDMdLdLBFQg{kC}*XnNT3mYA{G(5s{0MxaU^4G}h7Pke*d)2qGI7c;-v)K@|=17N!V z@bfZ5{MyJPDXF9<1xI^WH6;*J9#1XHKgH06jj-g?>`%wO6@A#;by9(4Rj3u!ev&uj z?%Pg4S#^j!%WWWRUUpb9*R@N8jH&FM+u@T>DqBu zPBL2C6SI|LzrI%CS34ErU%UCxkX41&cl8hVJrVCWs#86v?ln48ca8R6Bryy7YUD}V z`e)=8ajY(k5wzdigvsFHcSu|w(Is3&d3H#O1F3^D1SE6?Rs-$127s!*)<8s}R}&)P zwB3vaP)_P*CeU767e|TMLzT=iJxbR?1?=~tA^oo0``FS#z1mO)CnAaUM1q^x)k1_g zMTz)Vh&2Oylo+GDk^bF3Cl1 zNWb!keUE#w=YsWKjpLB-_gIz#w8E7V_IaZ4bc2Wj+x@VzCUvu4{1{a!yJ{aTRtH!`n%&cL~!yb z+TGV`m2+BEQ@p+85H~%@B$DqJx;dohqOP5xwBoF}F4xri{e*A`dt*KEdyd9=I7N?7 zd%UD}g{*3(z`M^0fvo(f-K~+ozbs&Zx`mEm8P>H*B`{NWMbMu@7T1V}^o`K%%j=ls zeV@80nP#F)2AE$mk0az_QeoXwSm#@7!0h%uwr&8I^MQ1;F~O>cd2V(Gr=3Y)!kB<} znCgAV{ZIp{yYz}?zvxjr;-HPJ-2!zmdM4Q(6|U}BdNVx@3z^>+QhNTin+*kXfvFe) zs@(++xkp>v-k8A@@_wHTmE=yxS%9(NTkW<-0Wo+0707T6ksEoRV{%$^7>g?nt8V)q zU4&%S4w*ZQW?8)(rl-L9U171MX2gjV56DFtqE_ON_Y2igEz29#Vx{S_-_cJiLsrmTt6p?GJ!vJbClcnIZ+9{BRO_9k-h4w+xsbST zKn_U&$?>V&xnPsS^*O4U_#`t2u=Q3^yj(a$mGV}%BIC?4&>nY+$Px-mK}>spFD~nE z>g^nTNx+`pjAl2@qGDuSKOCgw0%cu{HX6~4J@^4rYt>#ljg=Ed#ZgavIMxZ<5bS>l zL++$UMe$iCsH{n6KK|bxKnOYQaN7JgG<(}H>0znw?SI&EGYQ98J$+9=VTV%*f4az7 z|3?klUWEt~h3ib4=!_h*Q37mTI>7&|9UZCDnLczo>h$i{gi)@-OjCZ+HNAI0{KG24 z8`Z65)hUy*jr93qr_ixT$E zs~>2%G4Z-urjkt8&qAuqh!wIpn--4uo>}XNbhR#(*#TVI&XK%lCJgve3nAore8Cm5 zn`^hT2_oJsQ&8I)krAaxoVLAG332E1ni2N5yjZNsHGYOb+K96!Dh094F@3SDEu5Wj zzki#8kN0yEsMvdL9Rw4sCl3AVsY0rH61@9Vw8H2UGhQn{rdK0)`oOiew#g{>N=VCF zwOC9LWAy|Q%pH`Ya&oSx5=fE!dMfU$6c5@2WxDb=?%sh!h47J+SFWz=nZ>t`y2V?~yv}$1DTKQiS3r_P&5ko!<ZtO@u?AtVlx7@ra6L)BqqQ zmxg@zOR4dnC%K()YXzx@F)9I@HmgK?u5w5!|DdJIf==fmy2qj|%ayW1_RQ;r$-ZV& z5nH;`oUFH76E%@>qE>qgP0u9lZE+6YWVU_GZajG?7*Na7PEO;)R)-vRx0MLz{VW_r zGVLaVDIIdai;(){vtM9yQ-_Q_Aw_5dsx>GZQmW{dKqgAzNLViBh|WihyR&LFTgs(O zi@kr%lzPWfKla8T*OQP` zRu9Yzqx+gl$VWwHLMX!S^Ngl2&~YJ;`X=110zIKB3puL2SQf&|eaMSe;@*Yj`(AQn z{Jh(JA^m{waX3SDJ$?6oh?x8N4`;rZX1iJasQ-*k5cR`c#JX?pLCL6|b%g4!Vde5q zkU(-Jnh$Jhu)cEthb;IyoVtH_m>0(BeFk zTrtn5P<45o^I?+tCA%kX&EyoLxJ}#Z?{ZN0wY!uE+mG{UB*=E%xY=+zFXv=arQyD2 z4#!b(7&=w$^Mq!M_H-WaGq!-JUwofqH)O}c_M`8$o7%-z^PB)DY6D2R8zd2SUt@6H zR8HFzg4$&ktuFjmv!4~&GiLX(nVJ;(F_X`i({0%O9{osm61QxwmfbR`n7ZYbn;8)+ z{+8rdzo#x??NR%8zC-#nQC?xn*3IXoZr_Qz7YOyu z-90LKkekYaFHWlarg4~aozdCHI?&~lVS+^xaF9J?7DDdFhXljwy)0#E%WLKlg_Aru z`-rLx){()@kSAh9lTB89ETMeOuzy5F^0sjaq8(_V?YnJh;rBQk8ot3TNh7FqQ0#;S zb)R#9+7qvsta#QaMRD579s*?a_dR>R#7r@ldyXTaQW=YI0$bzQTnMkJly3U5+c8~z z;bV-cCzIGqRUs+%5DKp`K`Q?2dre{|4R%&t5p@3;)#6r|f*X8Y_f}}FOhF=QJuxu` zC>?2;de-6i?UzHRRgnPg_9}EMmEF=&EQum(TvLgl>r72S^Yc$dR~qHh!kG4zTEln- z@vmc@EgaRERGssM#!Yy4WRQpke7ss1wN`}piJH4x9#W`v%=+hCHAs(Do`*B%c3&%M z7?q!3j5kdR(*|(r->`dT@oi`RGMZQm5f-J>W2gJeS+0r6e6f1k>0E+N+Cn3cNs0xN z*9ULlc#^lZvxMa2tb^Cv`TNilLNadwIBU;_0DF8!mFik zo@e*g!E=jsQO!>$&IH=Cyt|qHn7U^b+YJK$l(^eWKa0Oar*@ey5t-siGuFp#wE#fd z>I7v^wD?wM`OC1vr6B~v$wkVvcDSdrS3AL}V^ULjNY90h{q89F{M}fx!>c*gic5ED zEf#*lbGM3Whg%yZyI|!aq_8x7fz&&l`(DA!CCzY#H%fgEa{g`WHIo_=*VRtY#D7{LN1wug$|K;%aNRj7r=@5n8x^J#RaO?yTO0 zLxG`HLpy~qXAd`rr2~faSV4#&n;k`?s?4rK#F)2OVN-}<-9kJnI|Fb}%qrA%A+;fW zqa960PMNnv6jat+VV@Z$uocOM?70D=$cLNZf-e$q76&zJRz%Z(Ag$^O<+AP%+x9chkwoqY9rr1(X>o+JIwD3bn@8J$9^wcJg zr;gK{jud(C#;HG9_hNNO)giSb)2V=v-Ti=g+~}trzO;HU@^w_s z;tkWLx9a5ler5#?adt<9tXfqd%sWy|CUsVoYe@AmLsr57={m&5ne9~>MOe4GqH?tx z_lK<3J4B3WJxR`uLBqZk-b4Pi6IE#&wCe``kU0TEa>)-cVXut@;YUmxwdc+Lt%%+F<4J`xLd3nqkcR7(;KS9${3T|?s^}WhGl}&yNojvo zr?#7bE(#t$5lQWN5yzdztc+ZhkgSt<&h?M>py&_7=C=Dq{ zHJTm>zILmyO$HV_h=|bcbAU=?hRh2%l3Nv2yTUuH$pP-kQD57SK0)YXn!Qmr-@eAh zttLd`inCzq2|$j&W!>@In`nT0(8Mv5GVbV$F{t;9L}u=mS43mkFW9|=j%XJuqheNd z5M)dC`)-hm6*dBK;>_cy{x%a2)$jL^GK9swc0Su$>Zx+;M&9mc7KbTu8zN|aJvjvQ zGa40GCxO$+*No}=GrNdd=i*?NfED(T8$jU>HO93=Wlcx5Vy+?g$g7z%zm8@ux&3r=TE78t+oJU7B9mg%Klo7L^GQQ7A z;Ojk1SbX0Ty!en}Kzi!Ohi3eIw`s$=3b}S2t*BH)ofSm_-1i)~M1e8AI|huHUaGND zWswNtC}G9^(WYiw9Y+d2rX^O~KK z0G&CDXg{*2BkvFi0oC=w79lG=Sm#XG$Gt06N40oK10Y4uL}NWPxMq!Qy7RP(h_F(u=T zkjX>HWI@1%MIzcS39WN0+~?$ZZq1$PWDjJCkZ6kHu=^cq`r@X%i=k~O>}-+oL>n4a zVN5NB!cRa5S~g{8iF^12gc}DZSlFN~jI74)2cTlO9HN4*DGPGF%k`*qei&zzn?!1f zE!PusW6|{F*nYw`q{6qBiWW1XQ88f})wE`_DFRe6B}87O<%Bf2Yqtp2hv8&DEGEA@C zX@!|?pEkjj*Oyq!9Z_+kc7Y!6I#4|+Ps>2bB6wD#P2)X{>P} z1#~g+hG{=@Yq-V)aYP*Ov-A`SUNhOf)|;>Vo(f7R9#(W=?k0tJqg48)D8s^0V)c{n z%#7$`MIm?4U_AvALb10`kR_Vw>PsVqWJ0wCmVS}rFg~nyjJHa+YG+7?h!(eQMwHO$ zd#sbQ>_lUj$$DxDb0p2B1UH(0b&bwp@}a%|jYpi5Jv;cH5|23-J!0CM;3>4QN*ls> zqs9Tb-xdogcQIt8(jg*bjV!8OSXevb{L4{oyHM?{t*7!v+AZ*R?a0j53$~nMBiLoL zkfKoa#0E%kEQ&m_6n4)f!(1-d2;{P_ccm3p0u7ZAvY_B{*)Y+VTW8FO8$vAosBGOs z7J$=^F}R&Z<%l+hoF^JPz_Z8$7Ca4LsUA?7$j#2cuWw9<_ff4hP&d+Z4{(JSzlNNH z7EzBZ4O@94WJU#=rCIy?>=VPu>g!{~qTrLBEO-&uwlh&VlNa5J6GL_j(f33TTR75t zw<{o6cHRNZD~uVK9ftx;kY&!|v%Qi5aEt0VPb}i*%f?uc50y!E)~C7)8)Y(DQ-?r|bx1w))s>b~_a=*gh8x-dzx+Y@~^wa%r{wno%o!zNEo$F@%j z!fI!|ww3s_3l0I7FtJS{`E_I<{nlU`$Gg21NunK8d~OHb@$UOVPkUCjjw%fZ;kbUD zk;~ABv3pZg#&p8HOi|Z-8}~gz#U85c=gn@p54zPYyHurkU;)^kKD>|>#3&C*YPSPL zARc51YSv+IcQqqD50O?S8A3|`ev3l+^}3N%zQ zTwhyr5W^w+L`NkL1F8hLei{DJfB+-L^}mxiKzM(>}}^l3Ufo)75BM4;CGv;!uwX>!qZWeOJBQ{yNCRu zMy6bdg1cFQfxRU2w-TX_u+x2<$cDZ6f&;t9VR5Y6$}OK0Tc|T0W?VEf3{-Y#h}gr< z5H?$x396G~#v%D|RIan%A-+e-&~VMq291Yr2<7p{uL`vi5RS~^-#QY8JDRUxGHhNt znX{jQ2`HY|0hKVhuk|GDWGxf)+phhRb5!h`qmnmjb|$r3a(W_a8#m=vUDs_h&0Sxn zxr-L4*l{OWmO!*9#W14qwG(4H$eIe<1)5fl4b&(bfB8!Y6Y6NX+t$Zy!S~Z7cNGev znyAk4Wc49!9asAy?M2K%B45;Z@+3=#%wBDkb~v`pTwc4?h4cb%-y`h{2(S0HGenFs zDspJ`B-lr;?*=ZYyXnDH=(JGDU6L>bL?xUC?m0Uun5>fF9*uA8dtn#%u`G6P?RHUH zM?%!8ciegrWlXeE-gPCRo>H*%{qV)8RtpKaSWWHD#mH3o(YfT16JkGkBBmGBvRZLL zM`g(FT|qh>mPN+$KMMf1Fxl1I*D{tcS2H_rOmr5K-WZq*SxqdY8X?kPCJo`Q++s00 z8&DX(|ESdC9~DDBdnLoP^TT@EQ@uCE`dlvTjJVki z1GpdYfrDN~I}-WPJJo`*%Ui<4+v8zudc!39F1iY7wV1ao+p=%blzr=S#P6Q$f;o$P zIEYcU#i`j@j7j$KbOHGfD!wrjU5t~(xO?4lAT zF!CK3y~ooR+=TGDu3daSb)3E}hlffkTRH?)4)hTD^NzXW`N>iT?K_~Vr|zJs4tVD} z8@isfuO}I}=ka%p_cI?bC;Y^NB-9Cry}Pla-g7Fo!_p^%wPQf6uld)bQe!nL!nAEi zv-3%0k@Y%J_vXfe*+kq*hqYdOUQ78(W-xHlOhwMDnCRToBc zKd2g_Oew1Zh9?~~(soz=+6EEQh6&jVeh>!BN5e0^?NecbW1~`&z0-IyzurHlE=||~ zJc{#42se%DT%SLl?kb)jj(l9!A{KUqkQ6t)WV7=WMq9-jwxc40ko`nmh|9<~;YBYR zCTuZuJ5y3{h&q_tJ^Aqao`7i6qZIbMHmY34B*}Jkqk{Oy?Wg!w?YNAq8i=L^?tA5- z#bDO1vWy|S92!+gvXJ{#1D_M*m~F@Wm;khz_H5;s87T|E!8o1vZ)QtJ4Z;(^`e(?* zco2z%*O#XT8$$7a=V?^E7aigj`t>9t+LYtK!ZA0{^L5G^$%dTgto$xI*dB##(l;G0 z=+c;5h9b-S0$%cMGpgbN!?*~z!}6Wcj%wGsLwctC+FhzKY`LNOs`j)EWFOUgqw4wG zkllg`Df@Zb%!sNlSW`wMV*du7k254sKN8Uc2FSW1N*bm}UGhFE23`v)-PG0pAp%;5 zq?hk=bIzioYj04zy89j@;-{w@l0DNZE3iC#`_g~B$i!X_!NizK1peliLAE2ZM`oIF zoH~TZbCWqw)zNC;Hz*f%8@ls{|JD;5uR%GZlB3OqO@0jIYbQ@}VWp!HE!-KEG;z`s zGiK{05^!g7F~(yC^f_uY5gFz^x=+f_+`?uls!8--ABcwCb6d5*E4>z$!IB7~jNZaz zwoaHW{?_-h#`~Vnl-RAE2vJmcSAp|-^7viz`&V-^BlEp`t454=u^8UFTY&oi{!Iel zMIm%fpvLl2eY~4_^XyP5g|;a_<(@FLSXSnL{r$JU?*INh z9%!EnS9k_buzx>F9Ht)humaAbQb{#L!X_t%xSWBYoht(4!mxXzBjGr40Lc~TjlIiU z19r_Lq|os7wDe%mY$W|4zVG9J!~wLnN859j4jwfthM+&Rl0}Y<@)N^+b=|y2x1Kp`Nm3RrWcD zWm*=bRniuZFy=-?Lpm4`1|U-aO&OwV<~D#;0rB2&GgGC<`3Hzh3{d!SA6u%SW@ezQ zXFc^JPyyKK`Y|O)X4n$vdS-=3LW55yVY zT4u>X_*?C!UAf;N$j|SLx0{}rY!6V$d_P7kIvB!pJ}&4w$$&m)`AT_SBfQfFQ1Lxp zGMYFogmGiz>UgElkScRty9KnOQs8leJb%$+pJKokS35F_^6vT1u3_Bw&d}xoI*)GTGW0z{UtKkp)Mf2Yc?(MkxTAqO!DDhZkv z03sp2>Nx4VP7|ac`?YiN??yDYt#%WPy|}ZV9mN37Zc9C6YAvh)+rwg9Y@+Q$?ADNZ zr+toB+vlQU8s8B1{uP9S@dg#=N5gvRd)m3j{o09b#R5$xK^)b+YzwL4AVj9{mWgt> zBL}O}p?1s#YZ=vkwJ2owbs!At8-W=AMZ%oyd(CX>=nhY2ejSM{-QiIY+JtRx3Gka9 zSM*^{_6CKU!}*)c07T-w=H3@S9U@XXEbtYaR4Eo z8xo?}YXS^rb#9bA;zmij?a~&i(sI)&GL@|*ai3)DYvspx%4xrjRET(X8)dlt7Q&EH z_JDR7W`OXxOQrLY`2pUDy8Vo7DtUiMHm{zH?s^jbyS;-g-cviF;iFnWeLX$9VKJTcRAIoaN;if!s)SOV zuVn6qiLr((ZK@*`hTrEL)*IBGhmMN!errIuY!iMp!Y(;XrOYqu1*zTvD}J9LR1g@p zc+?Pa>O(xawBGn7Eex8D^pxUSbXjdG`hfXM-G431#sUfI3ds#2G4cB{CF#*z5=z&c%D ztKq7hB97Yvp@-{fm8rc9r;PP2N@ntqQslLA@3(&P{~q7t)y7{`Br7O zWNLRm^uY<&m`ESSn{hoRcA~A-w^UGAE|`*vbgo6(^zxe0V5f3F~3KGchFhWr)lA52*;PcD>p4`Vv1rs$8{e zcbyZz4>)bt3Z4_!=Y)aR)hVfv!cKM0*}rxwV{b^#^tr&IPah&k@0E9 z1k_iPpCPlQf=xnY$835549GRBW^T>OGW0oC%e_@!S20h9O%dY0-%oA~NjnaaeOxoz z;WRbY=!fdtP*^oFaTKE^Mu40wf~e)u7i4MXv6Qpi5W+SrMN3y788X(WjA;kGp0>ge zp{2P^umwZ)rQG~|uSf`BuFAS*bRY6#F>)Ob!pUb+k@61_Y}kmN5$kNE;%}78Lg*WD zn?M~-!2+_|Qk}e#KK_iibYt5M*xjZG+V>%Qa|FVJxkD(0bvu&2pH;0L3(ulKsu*0m zk`*CLh?pxHlA!^@=J5lklA8bP%* zfIS!us zDd0Cs4$A3YOn0*rwt3C22wk%-t*z_#)1P&sHOaiwE0PQA;imkVnZU)Tz3d~r2yy-zK0kl&>p=P$ zgH2KhVV4a=c-e~YZJ;B)%y+cEZv z4Q`YS{3JJI>9;!a*%nG}y@jghXSKrighyC!JC16m5J3IL0p9%EY`=P6>HU?JTXN4g z-txj$`5E@ARdx@kznO>Y2=U2-bm3;J$YrIj|J2Hb@H1$f##m9sLGh0E*S)MSxF_b& z!udx*?p5_O5bf__CHrEk`$eXxdR%#k3yPyD8F0MFPjBH2MatE};k@$e==n~nCYDyvuIDk=(~JM*rY|~xhFi1A@#V_~HT3GK z_C0pqhip*_3jFQ$#20?;)Go!m+V!YL<20?9uHI*76}y;E4M}vj2@^#IMF*t&Gblj! z6Cp4-r^~-UY;D^o=#h;Y4Tt&q5tF)QfeDANCsDMcQeTWBx;M-8FMIuBSbv8WpwcxI|TgBw!UVeXQT2 z$dw>kG0Pi(5Y~_>uc%`CA^$9XuPCMr#CoSViyBlE!`dnE(2Hl1>}Cv+Uujfj1PHhg zVzdutncVq+QN0eaPm(^%3H7LEe=oXRE56#zc*!9%4%@zJ*$BUBCMA?i0mQG&-ET{^3fg8xn-3i$2aZN<(0~(~Dj?~hc5sKFlk0sHEW)DJI zxL9Nkd-`j>nx$BYVN}8_wiDB?t}NvJ3bnbs2d7n*xxx18%LQZVANJL4?-i|pj%4dZ zb|fF1+p~Q@>h_*7vJ2=VnpKQw&m4zz*w!rP_I6WQ*M03CD~QVajEXqI_aS%gv%YZc zwVU9rujDTp&$(SIPkkK^2tnN->G`oeDpvT7;EGBiuDoA6_UADHbMo*r@i1Ix6Ya>s)E}wOb8P9l17?o{VTwzlLc@v`>;KFO4PEUiL9uSxd~sHwMWx!A47l%shn65 z;L5;`s!?fYSzo*Pd?A$3YuAGqBPwveX8r6`h&P-bVqaYngM6xs(cX{wBptZP$xO%$ z<&e01$i0yRp;zDM6cI32P_3>+Gf}EO2iQw1kUd%rScdN=cbBNbF1CY6Ey0?(FOflo zX_sY;=BxINk&mVl=g~0s9x`tY#eOBERw8^8wN6d-%P0Bfu62&44^YvS>q(~XhTT2O z2FYevAhOl%PPgp)uq|)PH2Wc{92y^7z;!gcAq?3IDAyOi?Ut8+nkrFyxgSGD#ldKK zD^k4`uz;ti*(8bcI+yWn?;xwp_hzAM0Ifmwu6x3T(^RnLKF6uAFM*Ux_0s-Joj_D* zHe-hT?tAz8p$XKiM0S2Ai1<$_v$WYS>xh*VTV&U7CJeyj>$Ou58db&=^CMBGSdfbo zQq@PuX-Ulzi#201%t!Y*7T}YRIs6S^QC$a7KTa!vy?kYh1oA35VUF~jPO`cUHo0!d zzw_FzoRajp>PgEFJT>W1{$;8&!JVUJi8(Qys+^stI@xSDoA)>d_4>J*ESZm~L}3dv zGLz;>_syL=IgjGb4Pq}1+?*-ghjmk{1)cdDQNh;$;l|qq3GFj7Xp9n}>xw8Il{?rS z^cZ1rn>?WGH8XL2=a$%xdPQ)@GdsV|c^78|tVT9O4zCf#h{ySPH|3^Ulb*eZS*-M} zlC)8?&AmyuqY+U*gALZxykSbo`W$3e03kB>$9AO96Gvah4%L%cUW7X?mnLf}CEOmD z3%Q+${Div&cP0#z)#0+)U+0$KDdQXFd^Utk#RMs;@n$@grMhM+6JkY}U$HT&x>`vE zgd3DLDW#ha0NDfDfW-!`8PgzT;WAvY9$v{`T8HNVU0M3pEG zak=DJ_->Cw?DWnxD#Gm~w*cg^{*`c`;;G#CsDe`y&iAJVo#NZ9PWVPerXOQC6W7x( zhvOX?#m)089c1yMyAuanZC!`Eh**_1*}!+)E36uFkH|UOd3CK;*FcLan|z;lZ4YqVYnk*{)6M*<=D0F!h5GNrIfs-W5}s;FErXaJA}ARzpy zchpm44U-p{+8UKRYD0u1?|YJwPPWo5`NpGhcyD?w{+Noi+0AHFQmjuR#ZVS!*MCiy z>w2>*jk~#s0WsboSM&AseVUoIgP*i|`yGZf8&q%4&p1^D#Bm(l{3d zN?VcK`zia7{rqr;zwli&Dgc=*lhZr?LA~};GZ*=gP`_0!o@tiS>>NGv7Rh@^-&(coa<{1{m>VEDs z?82}RYI@^jRi4@<65FiY?mNW#5~6J#^0MuxA)TK?NBu)a{ z99My+oi}zH0b~Yb2yb|Z0NNK(u#|`Oz?V^xPku&YR5m=_H2diG84rEptQ$Y0niV&y z?|X#fHFNYFZwwj>-7rOz`y5qLyrCr~Ezera_I*N*u3W_vS!h@dg4`9(*Bh~UPOgA& zt2U&Ug6p5yT5%~Vg`FpzB^DkPcLz<UN9Y`Pv%msCd7V+UKN z*`Y{&wWRiwgMa6*78vb~%H~`!Px$;?1RmP$c`@#mJm+txk*l~zZF-~dU82^kq{gVk zfl|purY8mSz-RSAmXC89`6`pKsOX=Tp^Tt+MX%kHE`Hv&E!KAxLpuyAo5l!@VZOI8 zZI4(-wP!n=n0wd8!ESYf}SnrJ#* znMdcWMI)lnp{p!cT&k61EbVuvVSlXn(;^9Y_B|1S1$rRzOdV++Y^81|E^yrS#k9MV zp`vnuy=B zSr_B$i7Ywfmos;Wr(JAIToqbsJcg>on77|qY&}sQ(W}-Nfn0s?G64o2cdM}Tn5O! znHn?N`SH-t>#MKUU+*4@XgxdeKZj`N!Rk)~H6+o$nG02t-}J;1k`Gq@yMar;#tK%y zd-F}$`8p-92;u~rgH53AJc?#CJ&U(GA?@h3Ck`$+>C9T;ZyQ#4=B)2!`S^3joxgV> z0q|lk_9w^lHqXgy1hBmh5o?qNJ)~$FME%(zB<9Dk=5msS!Pi`{@Et62wCfdPVL!*b z`O@lVE0Ck-S|nTC?TU&aeQUs{Jjp73-+~)T7la!pnaqA0_V>i@5EKyXPPMKlu4jy4 zDBt5QdY_NxIGyhf*hM5n>V=wK|IsLmw_>{dThZVyki}wjW_w`o?^i5niy7jOUrwG; z7ONAjDWumkZSJ@3I2OQ33xx?#jYv@9sQz+psrb!qU!oCyz9|>eNi&8qNDM2gA`uYT z!xjOu*@Up5TB(%fY!9L&M=@&;cFt7dg~*v|ydPD7>{-y1Wx2_YBVPPbmgktk?oAtF z=G5-xp6ZBH!>xp8le-bzg92em--w>8EE%?VTF4!};)pk2P&sFu1E@-z|byi^_%g?0{e62*dcO(EsdZ|kA@Aw^+Q$_{ojXa#xzG|sz*hN zwltD+T@kCD7~mmLDt_ubo2rf@AzC^WXS5#da9B`IOi@ps-((jN* z;$AInzpki&TRbt+cnVdQ1xHmq=^>NW+7;n^pXeXGfUkIQ0HHpRH?>aoIPtd55{tbaje%~$;xFLtAGyVs8ntlc@KVf*O@ zM5?~8nY66=h7=%*#J$xMI6{aYbIP9IVPHaDJKl+tzf*N>5y~kq){DxjG>v-(-UKBr|px|WdN_noCgK#p~N7~_1gSRMB*T>O|K=d^g zu-|zVr#UgL9wgn=iO9i@D%U<_*_1aaM@id57#x#%Zfe%X*U1_;i|*x1&-Zak}tZ-fodi7w?^$o;ZFNRp~tfvDx9Q ze(5NxeD467<5Z)ZcU(~-=2315VGYJ3WYK z&(@%KJ4g|+^Ku0;t+wOY|5i7GcApA)h{H?rYwR{FY>ujg3H& z@>_xZY)nX(ZZ=(}_(nvVe=B(&MNCcxMkILGnv~V@A0bky$IzIu%c{d9{*Efa9O5aH zYiCX;p12>k0Q-%L<4m69&5prT6eYHwWhtOj{YZ#2y{;u+&Mqgh7Hcyop@w(vZtIHi zQd2v3%rlJQ;8z)NpA)!0AwpDNyZnKONPrH0)ecY2e6cN%9O!ytj=olV%s?~Qiklpv zdOhQ+lYCBoYgp$VjX5e+3rX4x+WQ)>x3whZ-rd;dD@HNQO}i5z3*1B{l5=aqLTYsr zneUMsvf%fvIBXTjdSZ^W;*i2u+m%)G)l)A*zr9-?Jj{|)ch1=9d`J~3A*)qE;;??& z&KbO=6B0NgrTT}s%YP@syibbXPbRFZ4q#(4w$FT;$h4Su>L}oTd^8%WWP_|MusS&q zd7dC(L+oLi5G*uxe=HF2BuaL|lm6-w?rYwCxfPee`0FeVGWPZ^0_ujY|}aTPpIfhSJU<~UQxh2F)@Z%!#~*{&u;{L^2zQcSc^+cDT%u{ z)rM90Av<0(;g36>VNd=$=+_QagGXgLucu8=v|5)to(*6+A686n-(xYa9p^e}faZM9 z!b>M1MMA3Mt8>qP-=LHmKSU~S%}}54B^Qr1giFqV5la0J>{921z_dwZVW#=lPs`|NcDqU)qMSONqJj5anI2joUJ$IkG z=O=@xxe+brTdQ)EAtYpH5poX!w8NK5@%CY_+qR#yQ;(&!>HB%K5WnWprW;#&HRR0i z0=WxS2>#fX>17Lc2Zq>P&8TKVnazaQ?K(g}_wyUKiU_|@yuP_G?Iu}y+k&dM2|_Ly zy^h|AB^vv|`1;~4M3rbv(DTeGm6cY9Jr%ISoqVhMnG<8I~XI)3^;y>>U-5Uem z2gi>$Oy}cROp2qcq&qPu$_0{p)M&^VLM2<4oo}H^XE|rwlshhvJ1(%UU5#eg#EypGkd&d?T2D17ne!A4DK(quSe}LzY|iJ*wbL zgF87BTV&Vn zQ_-T1t9j8(g?ffTL10q&n#rFuVS!LOX`Sz;-H^*L(aU>q1dYJlXDlp@6cugOkW8r+ z@HZZw>fXaZ0hP#|>XzVsMEy+8s21^xiW@Ls?^+D_F-4i@@jzYiPov^=-vX$%ikToi z);Ah*U}s!KSCU>SK^K4%d<=_|yv{wY8c+x=(csb3IGzo$3Pgy_%5Mr|7`3+KRR#PZ zq}vIZy$~A07*7z`r5>?vzRvb}R~DE0Sx;VsyXD@`-6Z+m_XMy@&7Z_{4sM-Pzw|wB z-3mJNUfqbEGKZj8XMlRJQ(> zQ|#}~&##8UnGf=4iF7u9;U4({=bc45r7!arQ(O12jAJ|GKa#B>-|PCybshd8bK<)} zxO;-v?)Am)u+LEyX|5;M=IiO0s+`{GfT+6s5moN#pK2!?(UL+68Vp(D#zJrurUOu! z?QIX1w-6yqFri{~7CXY}U0Z1Zc|9kkV2h-HP7N|{tI>=|4k2j+S)4OObZ~qHn=6#J6Y7Qu-%3rCUIeYig=w1WZV^eKU$I)Q;tW~ia7hIv5^P~8qr0jxckh@P3MqJ$~#bo{MzIiK9tA+2(X}72AInHmL zl6$i?jiAg*hPxDGT+)y=2^v64cDZZ-#q@h<23VHbubyv+9I(?>u(EHYV(tY_VMBq#A(JbIdE2bu4Ercc6-5 zG&RQEor~%j0$gG$@L)%?Yi>o9VYF^jbLG~eb6+raju~}zm;}LLJhJP}bsyfTbKY^N z89&1y0ejNmx|g^)VW1+Rfm`ri_KM2y1-HE|xP?CCv-WYnp^xZU`}6wh`;5^RE@2n4 zcfZ#YSJr02JV<-?Fg?_6I*#32?Q1UH-h|Vf4YC@!x%X1cgP-+jO1>IMZ~9RD%FeZ^g{MK2qFDA)@UkA8Vy5gmSV z5D_o=5lx>16cul}s;Ta%FuE@ZT7Go=1u6bn-*RfVm?D&SR7i#sm{k-k#%L4z>50_a zh3Nn-{Q(PQk#>1W?OjBRhQp4Xd~S~6oXcJXP= zoD**2`AArPSM6ZCKfIH&ccUPdwv|khr)D5b;!D6J3G;$sY}%8J^lJks!+_~`=BpPu z1Piq!q(wX*5ueVw5t0jjtfM(;gyg)4eQvgJR9vGQ0*B~2uQa^x?+R@SBm-pAWq|lt zL5-=bR9!75xQ}L5o+IXEB8}`V9L$PI%qCX1oC(yT#jOg*17; zX&041UFSfLpX6l}b$(L}{HEIlUhGk^MsFLsr#8jbPohj8PeBpWl^)j0jP{yk+OHba zklAvCdu1T~EksbT%h$Uoey#3DOB&?jd>c(AF@0XUb9u5XXY~qS zGG?x)vd+;kFxx9McVTT&wtv-fp`-A!##iob<-E8w1|_6nbuulZ%4UMV*VeS5-lXLBsDPnW<_~(6(raoaV!SY5m*9K8p^$pxXT}M}N=ZPuC zY3xh1Drt9#B-VHRGOiOCDSUZYUByDGfCG;&tncr3=L_s4`E&=eNZh*Gb%DK#C-4Mov8rW)1Q&Nvk_6=;JV6*fCkfL-w{`NUy@(_jrdl z27&4piZQtoBvf+v&PvE+PssClDVW`i1+hu)bKKlc2Bhl*HM?gDLvq{hbAFVFG7ro7 z9#xn54q1SHwq$z{&5ItwN_`AdioSL<^y{fdkm`xW`Py~C(DxkSZu}*s=RYNryAB8u zFRJ?MA(90KRSd~okO;OOhj*|B(xqA^+S1_y}O&QhR=dK@>T2o0plt;r0Xhg#C znML=p1P@?ou#G5Z3!=W@TJdEyTTd=SHoXTU*)k_vi-LDfBx3H?SIzZa$EQ8 zbca^}Rn_lb{`9~8$Nv5Q=UsP_)Ni8y#$BRTF-Z?;aia(yseBV-g!I8YvV>e1bI~<2 zNFr*8iH=6t&6Y&dU3Z~VRC_@U#NH6!9gqw;0wd0Sxo?i7V2}nQP-iZXoExjg5_l22Fb(}*A#sP$XS~>p_ zdjnYQ$^M|bIQ)A?+#?bZZvni?2{L5R+ z;usMv`4G{r`-SWmaoQ#^7Sly?m7tBunw&He`u>r1-DF5Yu?gE3RD16rgcI*eWU~`SndkR?+Ve)V^wnG6Rd7bM z1eDIH_SQ)z>W*tGUeq+?dzh!{LEsP}Ra7$RN2Oe`b-}?BCNqg#G`+U% zNnGM0<|px1Mu}!3EX3@-cDg*O<$DtF74GXP6KI;4P2U4(Lpn!&kI>&m*Qi`p7^157 zsDupKhG~|Yp6I|$4|$P-4ZXZ&RO9+h@9YBu-W6eUabM%MJ-y|(HKSrnwJeozJY8Hy zZorupRAg6|8z!Pp&+`D<1;`9F9Z@lE+YA~1(B=Ky+H04qWYgIR&8}u$+=&emAwzZ+ z-uc+o+a8!&+~g03x`28{nGnyy6u&dP`wf^*4J@xC=#;OR>#iY$Fa!)MWD0r#s9U|7 z&Dw#bjn+}Yka`l4jyce*U;rW!c0XSMW7ChywzUil&BY{8F`!z{B3P5)kX}w|8OnrB z#&L;clm?_>`<#@=eNG^&4duyIN`K8%bG2BoGp3BL!0(Vs2_;Kv0 zR^XJaD!|$j_->9+h!FUIW%BzPhR<7UzUANoJQh&j3&-{_MW^Hz$vWKJ@+2Ns*l{%3 z^|hiw8#R)}p4-Y^x@ZGnXLMsigT1e{dc81;Skn~ah+=h8S6-66m|A)xY-1pK)*UZbU?I!`cK)uCtJ2p*K4aEdj zK}JWcVdhg*Fo#Mo{$wkA>(=<5pG$xzv@`BbqCobGo9#lCs_r_V@sRa z<*xf!rTLv_@$wcxv)u)Puto0c`)!4Q3tdIDJ*-(d&o#5$v0>uQ4~vfG4Bn74@HN{z zY!P*7KOzyN6EU+L{GIXky7`94!niU1s8WT9Cxu+xXtLB;nWeSMjA?4AyN;8O^#;{6 zVyZEO(9B(=BPCxBDFu4X?wUlabh}O8UgwZZ+S-wkw?*FOJ|8xhsF_&qqO}q63hwNX zl{Wy4r zdK)B~S+H+aW|m{r`?Z~xJR>sBJv+fRy_4$jV&!cnm+FW_-kJ-Bo3zl3dEZgZw@W)g z{5tL}CXP=Bgeii!Gr(W$=oCAjGIG3DkP6A6+9o6mOFF>_{F9CZ{9KjO-P-Lj`w-&wCL^GFqUl!?o^0+VhV2BAd=Uo{afy(cuD)NxUF8CB!kVJd->D{~KmVwg6rMft zML2fTS}U={6YX8~Ye>Y$nWGu!E}n-87j$AmN;l9O?DmuYob5y0JG=e!u`?@$y{jK@ zNCLbmPBXvbVUXvI@ngH`8J9J;_79a;HR_#Cmzw(IN8TcSZ)E4b&JW2q-Vu9xzf=?l4e_!E=Kja_HJsbm1Cd|xroQC zs0_1z*HC0rML5sDXrt=`B^+OnLwiL}gxBFgC=?+qQe}h`pYiG14*=pu_ zmOHgCqcW^2V?+wP9#KEXv*TWHIFi!HQ|GGfw#H#h!cnn!Z%n;HK4e8IwNsCJJxLXh zVegGaK927(FZ!Mj?~OBvSWfHPJ>l`TrXk3u9_8qbF7w?gpjm*jp43F=ELDwG*g0gcT!kz=4pHs#o%X%s8C0>)nsuA6X0CGH z*F+A94Tw5(z9cSWJiQl)OFqCB|+Y>sxe2k z8<-IOesVc!zKzQ4aAIG(j#KUIbb=XGFMEVw<%cX&8**9nsF-Q3F!f#e|Byv5Lw3^8 z^s88UqR@-i-S<4{)iS`^$J(jUZvbLqClEgz(;(Y5=lw=UP0V9;$Az1VTc(0uL^ z`|!r31oqo4>5f(}19c)DBbxgG`yHh?^HDrM7m@)~o8(AiWV5_RdzmgoY3_a9achXw zfauf~j!}J&CvsEw%4A&?6K;!PyLc5=Vt>fW&_ldLH$)gU@e|@Z^`GnXmRxGJVL|rF zLR38{G-PV#db%a&TH~(kYXKF&im4+?-qlP|-tCH2y3;`g6@+RC^kV`DvhZ7o=!@eC z*|pn{@3#vDIu_-GE#)2+bMSiK10qBADn1(Fk@IqjNld5VvPuL;b>GX5oMn+=vVFj< zN@U)$Go~A-02gofy<;g*+z!$t;tE^#qOfaA+*hZbASQm#$dk-CiO$@qUBT4*72rhr z%ICtW6|0>(fk$;Bo}U#b*7Kc5Gz%3EqdzA0o&WfpN?Mo@jdxkDoymTRV2?0tVErIud2HYtbLP5mt55unD}7U6DhzsP}00qmmVOgRnc`Vr%o&Rw(oKwd zlAUY1kc|I;p5A)RJ|(UM>U94FrdTFY$%kk0vuz3)T-<$vzSVaJTM=j;S((X9ej< z8HbKUIO2+Ry*Fz^+KIOiMfE1;a~K;!Jifh`CXzDsPA3)(%0 zqS}s>q*vkcnPYl7tq3^tL)9Rd-D{HWJ)$xT0<{csy^tI#mWSzA@ zlyeib)9s<4bLw_Wx5X^k?iVrx0bY8W@tb)$+cn>#d(q{)13i18wk`%-GV^&>s4WQ`3bTzw~#ZuAuG-Zp-gueU>BnbBcbctz5SLuWP%Km z3pJ$RODhTc2I+hEKpf^h)h9J@bK}E3q$1X9$4z`#k=1&lZti>TFXUM8y;qE91iZ5o zWkvMMu!PN1jOyu3%CijzEbfhDwJYs_mG6|)OzGYsFI7avxeeFqe9fL2fj@6i?#5kI zm8Ptx`Gt@Sq1TRSaEjd#y+QqGCBC&Q| ztaY>FO0hql2=N^jP|>f^Na1Ij`+INnXyquLVF=qLbAtR?xV0LO3&NM#s9kSE;xSRB z4vE>pR5r!si-NRtMtK%I4OHP=2mu{mFq&6sJq(-1uX$lvQmB+To|Yo<+B@b!nb2tb z$BEhull4_f;ORzYT2{9>Nb!PJyo^RbKics&K}F=l&Jm|J$l>dJq0hLWr+oVyaX2w% z8&9ws<$g>O5i97LF}_X({;GvfH=E6VHP;&Va>CyG^MP_EQ=gR=r5G{VstbLTtsbXi zvu{P2Epc_W(5%k%{2N*8@W#RPyY&-Ozg6Z8)Q<08p?4Engeq=i7Z!hdV>p}7jo?FM zgpbeO*_Q42$L~mGHP%c9@;X-l*mhxHYVmBDl@OaI=$ z|ER_)8d-=7iIi&)ArIS?yiKOx{0zAep6~s##P+$clL7Aj!yowu1aU@DDfM|he28vh zg~+6}*KvYVPLVWzLtaLszd8w@9 z_{N@`UU8Y__?;tg3ab23+x7Ei646-Q%`m>NA!HBC)WwpOFb=u!Exs*vawdY0v|o_#9GD*o+G0_ujS7-(i)J;gL%Mx>eTkyB4yf+wrdVtWFl3J$LoO**PftFJho8L~ z#;~aOd%dcjD#RYL2kJwVWbcsUm_1hrQ{8r>nn~IS9Ds-X!c`xyN%5GqpTD$}JL3j6 zpF8LtcZDo>&~Ie+Ue6|79IR%%xRYzB{*J|l35jg61PJg4s^u=4P3LpKOV@>oSszwn zV>9f>=tgzNc{F~nML)%PZ;AO8N2GKkZbY=3;HVt_tLE+!Zw?!u%L_KXS9){c?aq0ui)m zoJ_90j|Hh3py_3*RoVr@vDZu(qR-`bs4X4Mf=UqK@Z0pdO2NS{a<8Yox&&~}*0bk* znr;Ee9NYEefP8?reWCV3a+xB-w!nFtW8kR9ECu9}^v$LRB3e7x>Mp}7 zvfT5zDTsio@%@5DUhUK$y8 zA#<4Al^G`KmV}i2T81-(hF?2XEO#F1&lN-v{TMgqfG`12K@^>>CmN&?RBZ7zvsq3< zP%l%}3_sdZ$dxOG(Cvpzk*=$=WXoAi^)#u479d5)>xforc9KvpaS+zi-os`%o0CG6 znTRy&4O=AozD6saP^>5?ma3~R_SLy7uaD|}^Z>GOeBb|3AChfJKt?<}D9uOwteKQ@ z*J>ZMunZ^%HyX8=4H9w-2Pus^B>&(f%fiQKe!RRfYl-RUlH9#Q558{FUn6@$h=D5W z?puWC4bizfAtpSRd}5n_;XsB}uQd$oLTBxMcQtxFS&Vc)Wcdi~ra^9u>S;R)uvNoF zl>r{GkZ-_VB!h@*+$%0&6I!s_UC5r)i0XnZkmX-O3WMI~{D9W=F3opm$^`oX$Ic!X z|Jwxr)uc-?E|$s$JB?OkZ(5IeRqbOm^7A`Vxt^bN?Om$uojr|2u2`ysYw3$Z3lPNz z$2_pP?J&nJW2a_$$Pk8oiw-$XnNxbIBLlBZ;8*JNHaQPdMYR~iIl_pErRt- zuw+6kv1ti*YX(9loXVpM8USR9aa~EkA0|C_pA)2h$VFH2;cP(dD4I{9N+dUB7z=tm zxsP?$2xI?v%02uR6V0pWHgu2SUGG0sDo$QcA`k0H*zfhkCwrSLE*V=lhOS-+tSpwaO=)>3Cz9>4^EiH)&lwKB1uV?r;fA#Hk%g1tIr3guujZbKK!- ze*SR*4Ty(2x-ym@X6m(*Xt{Cv$CXII6e8U_N*BNhsYsg#MPe823#p#AgR5MA#i3zK zfkH$HV}8AJ>usQ_qjEGM5^kUN5K)VV2!XPVh=`Szg@b!Bx+MPCMY>{lvUNq*%yqI< zoUnL-TxX_hXEj#G4&fu-a+=beWNBxmIipg{T8yr8ikvVTYLrb6vIJeH{R>^f3eH9K zo`9|0wxKH}61%nAhhrDFnC~bzhC3nRQ^}ij%QO7%S==f^J6DBJjjXlI29Vtf;~#g9 zOOK7mG9jNSAZF2Y9cVQjZx8l%A?QWuR9St^IEv|S>H5{^M^hZ;wvMIJ++g`#F~)Am ztn=d2A>CmN5R&pW+-iUJI6Q0xq#+9}MgVr6=rKa(nIm@v{Ts{0&`S$$_Zky`F%R&bZC;KrI>rcNU&4M}nLtP{?*$ zDphxgBy1yKe(a4V?d01}G{gEDVdI&J@fhCjYw_Wn-prWCzp^&R2(Yd&Ma5CLF^N$0 zHC)ch+w9z0Xyr(&XV4ZdnH!ZLy15Cr#2Hz=?{o_5v`s`*@-w-tdaD|PoxD?5$^=)K z*6Ey2ff4WLzKNykklz+m(a=HPBLUke_VFx|l`3pA1ra0bP+r)ky}pw{_g*Y~Shm<&Kmw*KyBE@MKTot8L$`s z{tEHekX}_aDsnjOc^ZxmX{4|&Qq+z@6ub>_Mf8y6yC5?;t{rQ;je*ewHG3x*P?G*3 zO&KCIwEY~_!|u&!NYB(n<#(o~tl(r+ zwkMW`+*4Ay+4prd7{_&>)d3)KEN@8SR5x4sxcBn@xx@l|se&7&$0Co)xw)-#x4L1j zl=Ie-587IG6Xm@Jjl0|ZFz?mhWZW(3Pz!TrpEhu|T?4PEhPC&;$150y^?N54)vjov zTCH{ntD)~nP~XkNo)!{&tsM=JXzt=a?9;<)irPzfogOeG8|8IT335NAhXRHOZEkj`4(PsNjm)T{k=rpT0@+oM zkV`v^YLC2xdC_$3I2SiY%J@DeYJOYbt&DGw&dq&~;har8HzhXEQ$jw3Ir;=rPawAi zbbi6=u?8Q0+nFy|R~2RLM;QQ9L4fatOb-qmBknfl>uGuGnk8n}_t%lSt#+l3+#04;3)<^8-|sAd5a)mcB{6Yrd7{@m9tEm5=N*r=42Y`Vx#=LvazBf3HIsP;P%nsJuymAt&H znOW9}N1O5z3r!_7-`A6>;RY#DQEWVM_31LAl5s zkBs;+SuW#sE`*i{VM>)!Q$|J(I^Fj<22)H9>$Ry-?Opkh(k~%?nc~`&TbjyC-1mwH-nM}^AfKaAsA~~OGjz5{nf}h(?==a3L5;ztZKZycIMeq`8&P&fqIH`ubqW$ zZ^C4A_b4hK&KE**i+b)WbW`q(y#AC;^bT-?}%bx2ti76qhaaZ*InDSRS+t=B`@AM0UR_wgyhgibHAv8 zhT(K0+#Bx!CA#ioaz`yNtUP4R$o=b@<6_4{E`-G$iywO(WfO{}VU<#c?1u-26o44A zEk{zg={|=EJ5x2IR!5|u9ILGJLzKG3y@u3r)6R=04gl`;8}k;quwfXMFa#K%H*Rrq z74lfQEcKm5#_GcE_<}$>)+9X?;ArRIu#?x0a(l=g|I(8fol!-TBiI%&CgDLqH9E}OHCF` zi0XMaCIZS$T`Nz>#wrP4L#dfu$U~}~3;EF+LOVsYhjnQ^9U=R8qx8_yA?0JjF{~RTj77cKa)l02SDlfC=KWoI@V+Hmc0H3qH=;d_GYv&L*GRtSG*;5?wOVaX zTC5+`7!elU*98{uTdFrYgK4@`wk&Q&{7w@K=V_vs6`n^NB9xTqS0^;y z4!Iw94YMVD+R349xay3a0yo{-#)>^0TEw1dS|I zNI!Ynl%dK)Wk)7mtxrFRy}pCm_;{T=E)5b zQI1Hhl=a;21u!JryY9Xvn(Anea6p)y-)UwZ*Ow$_?pbGrJ#=w6nCmt>nq7H`i0gJo z+?A;Y33+yrR(mBVNVwtp=|z$esU>u!gzSEI zs|3R*7z1{{Ck45x1xWFnNrqFl_@mm^Ysc`dFA35!O3LT<+Gt2GPSno-Pq#z9lW9^H z!NpnqCRS9h+5ke_4k^dAo>Y2$>nnQQ`9)>zj!HGeLx`z*TGVAU?2$K4SCFr(3gsda zU~CU`RB(03Wey-$ew;DGf^9pywRmPOND53>pfaZ;`Z(iB3pBgahK8cq06=>}EGT8Y zW{;otT4vws+I=jiX!nM_j~&##^Bd57{BGxR7Kg0jFi!0W@0tF!NeFW=y_1WN-VR!aOY;FK_nL4M^kF4V3xDh_K;QZ@oL zIR~()EF0i1eT-;NCl1^6G`l=WFY=7(3L7uTP`elUfRT5vujg^{6Yr2K>1=h;Tn^MQ zze8Ol!7*v;o*IKZ6GY@LV>yp|RzBe{3C1aRS~d~S&zz>`&96i_NmLRiQ9w?fuU3r4L8d0){a3%r2VBDcZ~`>So929UBi3uZarcdi9WH zTN`EB#CR?N(8^_7RH$}HCOo7YYXNT7B(GT{7a1Ow;T0yt@TlC7Gu_-NN^&&GE5Kge zIJx5;h)mvsN%Pqp=)LcoA$9M1lLNDV*kb~bQwE@_iEH*pv8zr!u4<4!QP>37Gr-)u z`J}2OT_Z0AtN^ig3YD8~2YbBBkn7RPA)SVXS=?==n-jT(>ndc%>%SMh-Q*TO#LOXy zk!!}YO#SKnqMHnnes1zUH+S&to&d`IGeDRkL@x~Uo(bkn$D7^mS7j#r>Iuz1@{B9* z-*NSO-0lx`#g}Wd`0@s}tAJEl*y8vG>xMKw581;55SE?Y8cm-BlE9xJ_@>(;cOwJV|$GdL2nR0(CfP4sH-Q=26Ug@Z$@%ECiPM&;AYl(iL%O8XQg9eSinP*h z42wOK1Civrb^^W~0~))uvT;T=lL|H?npu%Y7Y(VMg8)&QH$;@{^agB~QBmzi`>19N z;{qAy`@Ry5JK_Sam+odzjg6RJ&kVvlt+X z-mtk=r#3*jFZZ$gmYsOOv=(FYED*gI&8-J{dQz{~6H+W}k~&UkCrv^YZw|@usTrf0 zLfi6NPP`SeTa&2d@~_>lkk^wZ0zTDt4k*kz-1lVXlS7aqrS&8{e_P^Yp8^isBIVG{ ze)TAPfg6s_pi15b8mTnj~Ds0(( zyIb%vO6T(1@Wl>d@a_rRa#9qH-7%;>x^~Xm^(0PtTgN@S^R%+HYd0m}I9c_1O?l{( z7uht@oi zaDHR-Ek%9JO{*dlK}vg)sRhmpgFr-5i?aT!{c%*!olQ~rpGW=o z9F>jecRv;9P8{xPRE)ncns10g9mlSeD&USZ5q$EOkgb&GG~aU2)k zAOs;~11jSCGi=q?Vf{W_hzg9ypv7m0tV$aV6aI88s%2VX98hT*?bP_U#E?Iia6crK zgKNvPHtA7yB4K{g?|R>Ta)@kv8m{3@=R)4EF@~+M231Z^fA5F6`n#&95XRc+SMiOr zS77HnlmVYr)fAo<<}BVQSuUr|8MDVgO<{7XFh)P0r+4{=Q=csCI03TM4%s3Rbo^>C z6N1?R@ejLyRu)4+z0-ioN^uym)l(uZ3E6Za9=1FyWN*Yx+%38WA@*V@0x(nR+Hv7C zKK*0$N16YprbgYG5VHluBUy!1&4}YJ#D&QXH4{R7Kkow(h|Xjr{CDdPB98RgwaF`R z2Gc@t*h~^9hRPwke5C_I0oOguAfQA5hF%U$!sWStsWVB`k z%^~N2ucMiE86HmTO@}Gg#=|^ubDvAW5(Px|{k=>^fA`Cf*UGf=$zfd=>1zt;`x;}Z zimVVuL!->*`q^ZrOpCxaTMQGG%}V#O1gizDolS1rXB!^J!d6@zHpd;6IC8uQSzI-Q zt$jU3eB<0(ONb^b>YT`J*PppMWS7@RLyuiEvHy6gb{`9~%kFdEt_!{-Yz&~c;c7<@ zB;{JnlD=&x2b)m4uKd%3+@QZPoNz%@!NtDUGtX-_);EBjVX1ST6HE1ay5He}^fv06 zEqfD9HuLM~4hThk(p+Ep=Jn)=C%PcXyCIi*ZNks@qJsM6z^LfQ4kYBJ2dM;nh{az| zLW6hyE3cVxY>(55QE7kE`?G_1NQIyEy^^e(A0OmaN>`8STTWSkgl!mFPdkH zhnA>(xsKSfEhy!%*G%iWA8T$puqycWxdoyje9gFnPEt%BNpEl*@Yz?eT_r;#q<`9w zXpUte9mMpNP)EB=brO{Y?!xx#hG8f4Aj|87bnSaIGqh>$?CaNTl@5qlGubyZ_3qq- zj1>XwC7F07bX|w&skkU*csLt3i zCnfSYXIEE|^DuFX1`62~Moi2GE3O4O6Abdj%wQEf#OmCX)FI^LhWnPWp}+gpnka-m z?aNrho%$A`)FurQ1JmhlYz>pEIlg<*X*#7ieKgFZQw^R~lJsN3!li7~cY{~+1}%mG*` zO-oK@VBTg?vwqA<(MHyM6UMj;5rtK$5F$88ZiEzC8lr&NuW*HM5U(ry;#|X6BFBrE z;sz#lM@g{oH65?< z*{>WmKKqL>kqX`oH2KDg54s<95zN<9 z%U+80<|i4K(Cv^G*GA>n0Nw#Ct{n2JP8`6}&26gi*{=R~DESMvPzRn_UQZ&uF~5JB z1LFT?4qr3=`t5u#7f0hf-S-j4Q&gVK#{3C{-8xZfL*QI1-c=%ASZ3+SrgHwW(=^p? zF_~N+ql>{X3H(-)({Lg3luPmk=1878BrccG4yza=4iy}X^B`U83F&9Y)|af2Rw6v*GJ&+5QmANiJz82~|(&$NXrBs>b^sY)UNb zEO3Y|T~Ago5dc|41topR5tH+f5~QQLECi(5oFSCf6gg}U zMb_7%w1%ZdrsKCP%MH}1T02OG_SQh*^!2`ge1n&=Iz)BzO^3sG-^0pZJE5lLv&j6d z6;t3Lcy@B1BY59qt)Ft`PhQ{F^sVqRY5H;V;qBC}@Pw3zIK8&|)}WO_8zdVj7GpMw z18vP&K==8M=PkM9>wS%^czh@kjxWlyCAQ+s{krCmPyY*m-L{BA9Fd&7wJOwqpU;9FVsD3cbyt& z(Z(Umc@Ej}tRN}JGvs58O7Zgc!!BS4SyDfw^j1C1nhVH)xzCB0+>|{Z(rzwQnuM?k zH*n@dYd@sJRlAuKhjC`xPo_xMccOCRtm&0v&43Ph^|fKUGYMPz=%}`y5Q6r4$}*@O z9e1lP@#`Tvn225B{#KZ%?D>x=x(Y526ETRc^1E$eK2oM9Bx(^%8AHeq zJqfE;_A;cfNI;SI*Uaggc;)Nipqj-Kqssalas$wAA|smV#(L^LRy6par3@)x9Wtd3 zc-kbW=MF|BIdIMHfTHRGUCo4mZs;>7OS1R(7*2rw z#YaI(SDK3dSkx<`mE1s>u?_-6;V8$Z!*ceKukSe%$VEfZm}7^ml&i>Lt(Y6lzmkmG zf8p^W$&lXAFhHS*y}1N&_c=zQulAUrJ@S)0Gaz8D{oKCoIaDlaVpDJagWaj8H2tPyzCm{+KYDXCPU$32`{>1jIO;n18>!~c9$a(GV z@ZBg>A;J(grWD{{eC zG}3`*E)hg~x7V*@PrF$<+0AS*E`P$i<&~~)B77oF?KUAnGU>}JGVpd~n#`ZM5dF=k zYdjD+#oM@DBMvdl(Jc61zg^6UP1u{UTcH!;saE)Gcj{qmi)K>-B~h^zt6*2_4hk*GF9u0Pu1kIeZEnh3Knb8{*Amk$cU`qO^+CA44v=PW)tS{ zSvN=pS=VlP#;`Nw6aemp0Xub6=1Zod&mizOJ6FvaPIRDlqY1N@rpRS$^l&6$h3 zTEriw5ap;g&v7^_e8a@*cM6#JpFicbhR?;N6&YeJZ}ViUPKF7uou(m#JXp5A z6i+;UT|!V#R;A4&UJ3x$HyiDwC?4yT{(X;h83*@r#s)QaE)K3{wguQ*lMQo8#zA{u zD}dX6OR!gchnyxzO_ZCqa(Y;Gk**lLjS^DWw$8CwiVbqc6S-3deXcLhDYAF;*G_^t zHB39aj7~$^jZui=`)_vcakqD*QNedav`DN%Wv#RT(!o2PI~MCW##=ivBu+1P7jU3n z4l7(kTClPH!j@iziT)Ij&lZEJT3m;oMQBO0oK2*U(o4-c1j7xf2BA5^&e}yqVm>O5 zc}K-udhPbx6(R5bM(q@3t}jKjP12yMiL9NSZ%rYJYu1yL;`hA^IUwqhdyWrwoR#H_ z<{%6?8v{~!s9`2BW}P{;B{_!dr_6j#nc}q*p14(ZQoeS7%amzQ6mOGhRz2SuGDECM zJ)493cc%}w0$D_pAZxY*5-=ri0(*9ABzNsX-}d7QVCp7WOmE~d4c?}ok>u?_%Wirs1?yF7uIYMD=U><)9J3OLOQ5iD@)=)x{o!4 zjyPlj7D?83vuiQ8bV8#!*#C3KTPVN%6W)1Vq|ONb<}3zu{3%3oGM0@|4QL;v7i%Z+ zQjY6ZZv`b`MPwqf`*oCwQ3O6@4^cz*!-Ustcb@<1=SaCjEUC3i6F_>+aKJ zV;j|(Kv`J%$PnR_lQtED#MNOdg3ylay>^}AI&vo31Pe~L+}DI2+B?v6b~>eA>{DXC zM)XJkZ$Oa0(`e_O>V?fa4dZ)nj5|uB%C20y?A#&u6RFo%R#NSnsPe1Fm(Y)#h6nO`Y?{9Z- z075|HTd|}YaW`Hf*=^UyA=A}i1%>*OQ0k-V1)q>T!iYpM{GHPLoIFJsZ~E3uzWa`w zve)~XT9KPo?eA-MHB&Q5{97_H$~GEuzGFf*c?My?eC<>Hf}F22~|nQQ4V8y3sNu#nQ^4$~8koyS`>Cq6+cQ_UouvNQhkO z4r-s;dZBZ*p=(Qs*K3g`3-yPLMYr6P9Z8EbhLxO1~kCF-Fr5ztxUOxnj4l z6xxt}Xk|SuG8jz{aUb%6O|VrNt*J+%1cc-mPnp*{6?x zXL}A2jooZ<#gL>uWm78W~a~ddU1!G?k-{e;J|6Fj#T{yE|27 zn->^jO%xDr$$N-x0SDH6&Ra+Y=p9jJNZxj#>{-^*x?Lk~SPYJHUT`jg41A08Fete|Eh-Agvklm~4Yd*3_Y)P)A@&N3<$q@&(HGnX$ z))94f#{;&PuywT`)*jUbBFP`2{Iw%ho1Zb}nM+W+YoqFUqHDSNt=5;nUfzn{mlPBeEiGIMi5UC7H+!m3$oEhPZAm(1KG zKH?mYTJ6T_kV4+~wFRNWn5H*Mw&mM$!K(GNhp|SJs(S4d2(5Qn|C!=)IgQ|>jtP=TbkxDe5x5LZ6gV0L~%eDE+ zE;|rD-gs{F@^>nTfyi^*Ca_Ab-M@wn{%5hh-&r}k1kumt<}C^)z?6eph<*~ckRy=< zBfNd1U%*{t3qn4oozl2T%8+>~Ak}(8~({k9d+#&b8iJmgUZ>?5{WPW=K zxJw^1_%r9MoCeKU;w5Xv$Fo1Pu%-acuR*}r#M8FMWr;;Ar1EXKy|M4vH70FbQjl)K(SvQhPZP|DZH z5PBI~K*%6HK`{7va*p38Rc14;9c^?{Z0~c|(_)lq_2yEF-gNKO!7SbF-M^*0qY{H_nXJxkoE7vVKUA*XwC`D!EgcWGh+F`BudYSo6?pD*tRv;c!^Bt%-LR=vt%mB~ zQ%3FG3ZHAooj#qNA6+IPET>>QTs`r6-&+!KL2o*QOc)-E-AlYM4!L$X%FmWuyMERw z;8#Wb-~Uvszde4QGJP}k+y{0s%Q`6OxS(&T)v3$W^M>`ap8d4&G1;tTt;9WVk1fNz zJq!9-{$iue&!U$YZ2)_h?KUP>+*(~G>Kj1Y#|(^tY-ztB6mr2_i0Xnf{bAKU#0s)x z4Js3+tq}mif!ECO4&YNv_|#KkKTMda9fj;?9U(-{HB*;{S8-;Kmc>ylwcCbd&a+iH z!7VwCE=Tu1uuW`a#NG@8=A_cg~JPlnz5W=t+V#-9#JM`|babl)eDzEMi9-^dv=H_CgU zx}Fwkt(`LR>*?h|JXa}xc&pN{ps{m7?BRoUsV;;Kgv)fbAK4q?5b6qhf3Fl)UXY4_ zv1S@5DKpsznfDyx3^iqQzaqdrKdlNwUo>HN=|XzVEt^iyO33 zO~I0hl*f^E-gw`Ge zHt$!2h=6PN_e!{T&KU->b^x5+;&y+bu-@+?ca@>v5BA8+ z9Y)}{;%Yl88IB5HH9Pg_^vw`Kn9kJ6hs{nBS(wb2XxH6h{k<%*F1Jqk9O?t)UKcbB z6V&T_6~5eW4e$%%IY3usw<*pPt_Yc$ZU}iIl(d$q|*}9H77bUG8~67WuVull)eW5!Mdm>1XiNkD$tC>ww)Vk+0vHEL%CMs&U5@ z%evRDb3Ejq)Ci7aTMz|v9%5B|m5OWAosr{1UT_i0u&hjc$S`WFoYvJlhwz8Sb8^6O zL1vK?)pVTJU0V+8W^l+|WQGt%tzAo9^avtlb3YLk|L)xFmix6k3(`0xx^9Ael}71I z$->;{m{F}L-Q1g%oAcfnfv7sW&)t0|h}3_vfvEO7Wwmo1=ctq-zhiE%*VBIdB7vc< z|Ad(RUkxIRQfs#yscr&IO~kk%QmKuJ)GjrC-y^DGJi@1kVp>j4Lz5xNOVe+GJv%wX z13$-8gk~>{MP*$Zl?aJn93E2oIzaW}0Zhr04MgBU&TOBKPef)lZh9z8JJihN(`G_<`kRn+TmP|X&6r?B3B|hc_x?89kPNb3&4q8 zfF@2{;JQWG(<>n>C~WEaaffkhVz7n7G>i15%!=!PYzE6PVA*rX?tmZi)UpAk;L)gN zHb$1w?mw>8jz{HC#fKoj9*xz(^>p3Jh<|T0^p-W2lr88@0J<-;I91rvRAI6HsK^^5 zr5^SUMKrq_67s!vT05`%j;hy<*G>;>C)JupN3$#5+U<&WGg5!HpN!{*c`C>?)^z)sSJ$&EM_WTCIRDWUgBj z{W9i#%rS`(U}qkY3*1+;g(O_-iGXXM-p<}#VVE==j2qB$vY`uZ4_TrgvS?$7i1zIZZeI8`tT$?F$CQ0N75NWQseRT# zOV&yyK4z9T1Y-$dUbQoZITr|`iYdl06+H8t0M$e{^yTMjCxmsK3rIeLd!?h6(>mSs z7?1@@x5QNEEN+MII6-;%v&#$jXtrwk8|D`1II-Z0&+YvjJM0G8nb!<Tm3^HAA=JXWakDfWOfV&eVR=@d zwk2*jet@B<+4avE(-oh%1%8XZJUNWlaD%_BMMzKQHNRcN8SrEfv05>8U0JeQDHjZy zAEXDQZ5_e~y;hv^>zUBIMJcwyFWk;_d!fFIrRs?xw2Vl| z*@^bEh}?b7kvp;F_Cjk=HETc7tQ}sv5eSGKAE*Vm1A}Tmdl=QdMg-Yg{vqeYk@^hY z>xpcC-&4)jN}*aYlJC(CCv9AeOGH5Cimjt>n7ze#U8Pea;-s`JsFo-QiSPaW{S+-t zSdq-I^yW0-Go2M)X0aeiBS)eJ_D7?NgAEhMJ9WJpkf`M7Psvs-bTn+i*%`F66F!XG zJq^x4Ix1rGdJ}f?z%;+GJC$< z$^NuQo0<59C5zksN$EeMT!`RX>&>-uS-iN_?~>-Yo4fnNCGKhO3=|KH%9BNX&DrU$ zS_q5p+6ncyl3_v|cXq7z^{%Kk4OFre1^4_rshp`bN))noA`!}t0Uh1b8D)4ed`OYY z-~0O?KO(cj;bA-8xtddB^|K)oLfzk}=V`Hq$d=qM>TN(0;33xLrY4YmV(C{SG5smwNs0GZlh+mOmC0Ri<`R|A9a`I8Ks;P$=1Ud$X17e+z0Wf2@P0SIlxCU>zvFz z=oF`mZ6D2Qt3t+lNV+jGmVKq6HQSw<*m#eLuA}xKcZ5b=&jpc&d=Fe}b_NA6rk|qN z5WD0X70>+Iu?rF!98iwbR@X#&-)>m$Q|-6|*ZT@C0;&dygsM9$lBC*g1{g(joi92N zl>*4T-cx} z-~ulpl-7wzuT3p+40Eli1=h}eFI2d}AwHy^A`6kjzP^8cCIM&lI7vhAnwZ^mBz74I zLJ&5+3fU{XZwdAs7Ywh?#P}mQ%ium~;Dw{(C%=>QNe#Yk{nG{RmutzA-7koQcy;BF zsX#z3*d09|YN)WKQafmScp>CoGi0C5XQeO9>owbU*GxLE)k|v4w1rgmIb^07ph}7R z8g9WFCL{WB0zyv7qKE9xosPuxFj>f1Mi3DdKecQLde^0{)p#C_0Nlwn!MTT2tNgx} zR;<~Z{$-f}9&?b}XwWPC39;0#m94&JPR%EN@A}an?BFh}-6lvp+JrDFcD<=0#|R-y zFzdey+5>2@*FA&gVI*T?kas$O=z2)*s&0(^m>kgpC1JZxshJSseV+Z_>4YRQk%+*2 z&Dds+XV_lHLnNt&#URVn)vO3!e|HJ~t=sMg!S-w$5}S12l7v#!0inE|0wlcp&nNOM zcMAvW<%v=4qF~4_U~5Nd-RJTC@`GW_TkU9%<=H|Owg{0dT2ENG$wjlUP`xYT`mm}1 zLi&k@jo|G#doJ!W0Cv=7SN1Y_0prVDZie@_a>cr5m`@FJ(U!vr>#c+wRu5q{LCF31 z3Z!Q`h7`?j^`|D3UT}R_4F76Hc`IsZ9^fupBX~httTOoZ_0NP zb9fVpTjNQeLVh_#Av1meyS*Mz{q#i$q$+Qz{K!kkl{dX#TS2u0?eD#P=5M_7x#yQ1 z3}dI&s4EG_t9wziZswRGVNQNaK7Xx~D8_b2ij16PNxPNK>_icy8S&QasP( ztuD*=Yyfcp%&enKCw^05aewS5x&9C@${fy=*73~dKMFxVv$;{{t-vHq;vdMW`yryI zS$dHDq(De|yph57&?!t;30FwlT~D~W_4K{HcLS-UWpNtQ-cM9x{{0F>T+JL34%~5M z>fgfC04J5i;BIl`zYgj0;_HhO(ZLohI8VDMbju9!qkGLJXKG3SQkJ!`m%7W8i^@)$ zVb)qHzmPLfItLTO_5C>&yobk1%fGMDpfV>Yo6H*`p z(LII~FnWxys=*DD_r(h(LY(X?D$kU9v z{XXXc$fMdRMJ3n~<7eR%atb-7vnmX&SPaH%x$j-}J7oT-cFX>aW)BxY_Hg@aw{rV1 z+GnF$hGn~uIA1$*aU;OJ-#DeGItomcwmK@mSa9Pc3^D7FNAl9|LEj?yr3WWyNJ-8* zT6xqVr*)ZSK6hQMQU;YL0Z5am63Df4@AkISw%ihYh6O5h_s93u5U!`EiOZv83!qVr zpd&nr<(C{zQ?q?IBE>HqLZKZT2}z zzKm9j!XQv&OUbhOZkc?x=`t2rJCP_*I5otiNXTz@ncdMSdN^Sr_kSLiH``h^r}q-p zqvFl2S=Q}qHxp4ffr^gA{g@^~*2hw6MxQXDBPrs_lV&h(-E#fWOor*;m!9MkRjHl4OI;%Pp5#em)wW} zG|g)^lZwhvgEfSa{WxGT3(Y18n;bqlp`NAMQsO0-pv<;3@SN3u)xoEk3m!kQ&V)bB zEH!PSf8D;^>hTOtE4H2+m{et}ZieMs`ld_%Kc>b4VPRW_jI9zHt-9RG zctu9Hj@lS9xA|E0!V_T|LWpbChj6fOw^pef4Q4+Et`1~Ql|bFux8)G4E5<=Qs*XZ5 zV-D^|H^1(CY9OAtm+#xC_6mb$?!R0!v7D1UoR9N84Rg;*p^`hg;~}6F6*c+3)&g5N zqNoMlviFqlZub6x<+>NaAlk#d6F*BiCXW(UbBA#1J)7e6NbBkiH^0N)%f0*UnXt;U zYR8d@XPtwLzxC9v4S6XAB9YCO{=_q#BgPL*=Ha-FMRfxAo-RNogmhB!E?kDZG^=)k zI?WQcclr{G{UrH%ulOJl$bh>e!QZ_FBq})yqf(pJGDDI^wOe)OkQH%2cJ;3PVzN{o z71eH{)$Ai;Ma7?x`58!rLGHm%Lc1`%wV%w}l*z0do1pu(m4w*F6ze2ktml%IkvNM} z#h`v=bj|kUNkl!7cnIxYGtS>bs^K#5u(MS4weq}>RakET8CHeFuNWC1VkqNjRrXuD>HF+7(gKIbT{mw4r6(Tp% zy)}f2%CW{F%Uy*mcNLO*R@Xd>vjJh;I6t}u>ySirKa~bp%56wyA`;bnr=RO8FEDKN z_xoIthY+hl(WB{(?2wlu4x3vRRX+2m_6S!<*_99x6Z{k6{C!(`)1%pX{e4uk@BRu= zqclX$q3@;ro*mI7))$PkyHWL19;0&Suo2WH@mD)(nA=jAs>Z{Xo;hKUVOcyO#+QoN4F%$0|G_|10V;! z&*kZ$xd441qa?AJ6W*^#Z9s*tLw@XO*Bm-$oo}x779d#>!r8bjkakZf5=#R9i_z96@lcYZ|sDdnj4(}J2YG}6k}B}cH1 zoRS0}gc6n6x2l}hzc+aqwxBe3CyVZhe> z0e}D6jMP2XfK|{vnJYIL403b7$uL#jK{jOfWwjpm$2 z{_*KBTY=5h2#VQA=QihLZ+cx&dHxL znk^nePYsDFMzccS6jld1U%RuHn2GeQWzg=7QAok#5S8am6{HH|YiH&Li7U7F5bc5j zM0cqpeMhcag<|~J;9AM(UbF5zSTlLUm_=?ZpR$fvk@vJ+v3Bj;!jX%BYW@H!0`unX zFDs>i5SI^mX@ambnPnBqYu39f0QNXqHQ5HJHova9kS7yoMV%hs6(NWiLyxFbRn5ei zvntD1q;+(aNSqNQb&;)gs@{Qt=(q;OIUcq{D`DT~z**~!9YUw-i}>mA;E+$`!gl66 zs?KswBz5jMs!MNZhs6$I$jw{}+gVIhyFsINcb7;=*_|P)Wq}B=%&Ls4OjW&e?oUuk zOvPo8j#$->UQOau#c}3F*kg4<|3n}i(g6JAZ<=bZ~DuH6ps zY?$+9kd*VgX2Lhw%na(BpPOOg_(mmIdD2Yxm2|b?T|L$sGQ+0UAkKfsjl{17(U%SX zuEb>F@bY@+WXChG_A>skJ6BL}mQ(aP{7TedBphvAKx39IqzwuXX)xt=+zkpL%NyRy zEXow7D(fcrf_e~&AddASJ9WuspxU_;6j zdhrhFysYst&}@^ysqcwevC7vnqyMyX}OU{SYm0Ib`}P zJ0Vj%#Opt8#qVq4jHwRVXH4Ux5((>ZvvBN|XslIFYjR@MAj`DvsgUNZA5!_6{c5$H zEhk(#J)k8YeiaGstabhJn;0eKdTS3pi%-TrLA{h|G*+s3ZKG)CJR5}|YF#k=?vO#1 zgQTZ6MczNex}Knf?dtiME^qDH%`?NAXW!}j!m47fEQ?K6V@Qs0OgqTCVP5Ep-np$O zBC+dY(MZ6Y77+Aau@KC@>h-GoUTDEnc3uqfVnUv=O6iDeU z-0wV%MAYLT8eyfNVZ|b&5*oaoIC8Cx;)Pw~pQ!2fmS&S`vIn-+cl$*M1MJi)w!e04 zTc(;qhjL#Uj zd(6-%eY|#5VNU#C=N-o?RI&dI5uQJ7RT|Rj)q$f0% zcRl$=W8I2MFCC)Ly2mqHx=v+^qB53yo{GvCh(g)r7^t}GwaWyUvy~+i2SZq{pSi<7 zr1fC*?%PDGqR06b<`~btZC*Elr0VuPk2T=^V9RkgDh^4ToklIf5hAj9+SBD~=cx)6 zbk|N)cd*xFF3cbSQ_60WyP8?@$jRGp3GBh1Mv`UXL?zcy-!wmOX^8A>qlBd6kI&h) zM`c%KTj7h>YG+5|90u;SDiU|x>P@aE4>{3>JrYqxix=*}zkRO@K)&3Pmvmg%GQqN3 z1<_i*xtCRSoDjj}SL?uE=qj!rM<}ay*~GEAdzF%Y&p*LmEjc84T~D^lExEo-(3X>O zd%Zihy2a#xHkpN+v!Y@GWp?lN=2eC%tBu77{C%tja*1BZeZ&@PZrj~vG_&)Y{%YTp zIxW&+McM+&kSUo-@2ycnsWqAif^=bHh;!dJ`r@fGoM4L$>**r#Q7J}Q-->T93`u`Pbsukv=0m#eqgfu-OthU(sR{tJ8vx>1c%uQdWdUT=YczK@=&VGq zQv5!kWZmBXn-f~-dp9}Kgd0IonmsCqTdtkJP@5_)-S$M|%O>w}xb)`I=5PJzX-3U@ zT9Pfq@Nafi(wxw!K5QaFq5E`|Sn@~2#J-O9l!hb}u#3rb7l`0SYYwUGe25s&dcp;_E<}UR_KeE)In8epe7usSF$tvX4k=)p9}>7^v&_ z)nC|ME;)=$iwf7o2B@l38?x+wi1Wo$!)(w>$YLLPj`Q_kyIneV*$@CLWeQlzgd{7% zT&tbEY~bvNUELM7`urg?(jW@nN3+ti+F8Zho_pFczVhbNCdy@Q2T9+yh0yGS5ZWm< zIL3$Vu8y!OC8LtDzIM|1dDoD9;cbqm(xt)9Td;=;Ttq}OUo(VF9m&1asIFP)9=EO> zVm~VC>jq`jA3~0;-Q9qtojlU_dW)Yzu1)n}xT4=Djms;U_aPlYYbxoNnb+%Q@!L{$ zkBE_RB#m{=RKY%1W$9$C6d2q$Yx1%t>zkx0bjZ>RsBnJ#9FoNkDHrj&^3j3oz8cp@ z^(I%8`SjvG?L+qQ(a$f?)zTY@Xdy4tCbza5A0d3-cmVRF5DH!13$KDBIZ7DZpz!Re zAH!TTj_GNr<<_s6_NgrDY{6;4#ZUfMDpfyHdndBpczOLu zg%Qx}N$&oJL{L9%v#SnjmycG@QiG4?%k)!Q@#pof&LpZU?x&Wy|GIL_W@RUXJWsjDy`RNAlj9c?2a9!~34YrFGS_{iqsDRF1A$FUZ-z z5Vgls6tFvU7nXjAiWPe!V1;+t9edh&;PqtS-}~KHM6|mTOHu7Rix8I+-1|x7#l;Xi zbUjIwJ)|;-`j$#)mC@WixaHxdc0*2VqLQain}l@;H)Nj$THjOGkX<|z(qo$yg1+;P ztOfSq0=OUot05G3sc^MRQCGtQQQFi}burBXY3aJt#4wiZb+rq&qhgsHBIeqlL;-e~ zUQd#zvvgnr;tieRUf>QgLoj3q4gdzyj01}7H&gQNyWlmfg69y|;>DcP(ao<+{5Q-l zE!i7ORjl*{l`|&2-ogQE#%GRw07VDuNYv%nfT!QZ6*2Yl?NRY;Z!b(@t{p`~d)W7- z*KUH9=+~}5k=@#s$wizI0bABJWXDXRTJiUgInIPahb>-Td6CJ9%#n3;nmCD*8n~{T za>$Eyg)tosiv(C!3qtQUbjT_XL((H5wf7*O{`jiRVdnbA zfE90?!o?@4sIhC;Z6_O(MAP@Yyv&9`=-&dpD&bi=N45@Vowa+2o%*ue3{X0D(j8P#$ML#bsLw(p~K zRr?h>qoV0aX2^YLFJzw_)lS%ixwdx7)0008@@})QcRWq=Km?lZd26<=jO;;g|_~V}J%)JgOWgL1E#TNU#0aR!l!YMqFsCN2ZS#0I9+{DJRo2ZQG zL=tPKef^>>jiAflV%DPmGf@hx77GfQDVvm?z}ITGlHq#W<=fWJP-gIUN5f6mu6? z^RDOB&Zh>xb`-<9vOVr;9i7@JXEHYKN|+9LhI!bo&#bGiDvwG6tZf})3k=zbwjn={ zqdsmn*`u$WRLk`~zoVYmch}P^MCRx?Thkcw5?C-+lnJtL5C`=cuK^!#Ok_kMOspqb zx>L(0YS>H-SZel=?QBS~-Ro#;2YH@I4=b0dtI6FwEyuvxFc~H@Fbm9W^F#WUQ;&n; z{872+I(ssGAdFDEDuV~$`H_$?XT1u0?c4<-hD~N*fv~qfg%7WtijLc{xNl#ILSK?~w zJaNGDJ|C466pQ_AYhB67pFVQ{_fozo?kY?pD-qfQcTWm{8G3?+BE6neE1zmC`}4`R z`{ab+L3hHx!jN720O9B~bB6hHOkr$+btS;rz78o>gNi%xkW&j4w0Ngp4^?r5tQP*r z4XUqg1?*%(+gki1c4f%*0yTrRQNnW8w)g-1>_3+hJY*LxBC(U^{%9twq*=~EuUR{c zVU&=KIw6+q^ZSk{-@}BZuo!HYXw}Mo^KD*>T6iKrJjRqjgjPQj@eY>2?BFJVq*_UF z$VwO?6_u|ie$q+E3ze;_6(Z5-*ziUzI?+-xA1blmh&r~@C^_SF$hwlRZU!=Zc*jx6 z^5z8m(K$MoDgUPZ`8TO86UAe4Pg+L~bcSgP%y&zLUvs&;ZXF@}vm=B%fWosH^*ZONSDf{P`jiHg7dEs@u=mN$x- z39ibnZc5A}YX!E5ZM?(C?dy19coj@o+^ZB{ zl+%iPAxZ^O36L4r5CZQeC1dLTOtY=M=vw&aipXZcsTE z6KKA-Q}um}si$w0$}HX(*hCwXoP3<(O~c|UrR zpW5**Jz416F0ciH!*0>bHE+>#IT=&6t8k*n;YPA{U7b4$lPPTyN_Dj=fOP!Aj=*bY|M)CTR{*}9I6DYC`FGpr1W&wcp+k6HH^@REQ}H|h*^m~o zx$U#kUx3Ya9qsgIPj$eTncx-gl}9sO1Wyax~WCNT@8_ z>uGaI7SSaT-fDWR=ZPQeR&*E-BDUbpkK>HH@86|;elbEm%Y@##1zzo4!QAqk1o$>A ze zGA7(jLl+WE>$f)7j$Amb4-D-URin1>sqd%rI5NEsW%6Y|^}aGa7@w*YG^)&`sL0Ff zNtHxP2RfMIa{pMkH5#{F&kLB+{S6IoIwkk+cfJjyHl98S7iA zVzFELu3X%gqPoAD>5)-dgtJIN+~VVV6p6XiOzm7|vpvZs%mRf}VHTBxO_(ZVUkwUrN4)3lm@iB!38SGBBgra^ z-4ov-tE7X-sBTGN`15v-oqp{&S}_dEeCJxCQ4h49MEGZe!jzEQ4yTh$X~?1_+RYOU zxx`OM-u#VIfVw55d%LDvG=%xEy+tyuFcBhJ_oP?3zS^};6Y`Yru5pB5#*?UoPBUzE z$DQ5dLXliEY~2*s412Qh#RqODvkPj)q}oMmMpOY+8xq#l0UKl&2nQ$xxYzZzhuCp9 zO^dl|78jqfK`E*ao0!1-r+cY{J`9lPfbBDySV5*Kek`?P_G1@jS%N#7{=)9cM;?_22o>NvK)ShA2Jq$ zkOOa2{?>McUF2E2ov{x&KfIo{QuNuox3b`ae%=bD2td%!AvT%aF;}_|k1Phn&}%_MIw3lyOquOp@DX7W}}IzI{EhS#QaAD@trp=5D5Op6DCr47I$usW=picg8q5cG<3lCD;ICu-z+BKle0D z=mgL8d@d^F1$Bz%ZU79uxpkzUE>FR^=<+az$;C4$FOFK$SA3{Fod!xeB#(EmM2M){ z6Ug?K)ue(-B1A;V$Ipne>O$CSO=Ue>Iuii1c}^mW>z%O2VD&_us%Juzn^f>PB)hV9 zndHytbbI-u+5tjTb3jIuu&$j+{?sW(Zt7s&j~^8iu-Aj^vuPn`tc!vb1i9xa#ksy# zYZ#FiUNdE{X9viq^(qC=zNa~H8;eN@c79_|%i0*yx!w?^77zKcG48sznyutKA_2^6 zwyN-uXHe7OnD=^Gl5bDT>_+4T-jG%u9CGoi%58}3dp8c$jZ)YY)1zXw-JI|U&cyh| zg8IxVPQdL1?&glTcQZKy$w*TdcB6Bm?d97EvfNo(kh8tWymuo;*oFTJm~W~ei?i!V zmA9yVeebFRNZ;5v{yBMwrK=6360nq@Y3xFCe5^G4)RN)VD&*Wi9lzGrR3ZUTW_L*=?B++4H6kk|Pw&&L7?L+~GE;s`3pA z(QRvr=QXpzM#D(@F+g{Rtw~^XFaK)29Ak?P)+eM|LAL>&*y7B#X(8?2(R7*Ft-K)Q zYqvT!RQJh%dg7L>r#qDvQc?A5S4Mt)&GOgoObSGubL(-$=B>KY>B+6Io%X7$VxCdS zrCdiu(`}GndFnWg^)ePBjfsiAEaTQeg@er>v6hR`(r4_J~AyS*{2Yb0uitF9-pnnO4jF)@?1YPM@foLpbK z!=ZLp4uDEz{o0A*T|34(qU2RLZVy0PIj9HAqR5I_g8zZ}Rp{vY-s- z(d76=v_o)8dpIMrfgl;xDUHHsQxULz+%)8J2T{d~e2@Zwdz#JK({f9mW$Ls_PlHr4 zGNK(J4mp3pdk9OscIDt(^-dl?alH-JJ{GT@%|~2v%9=UYF3Sk%TFN1vEKa04E!n8h zl*npWIhfO>?7tNZp0TO3fe;3_} zYA*vymG*em&Z7~$IAJF5f2}%*7iK2(cH}$ z1B|GCR*ZKYzh)Usv*wc1ypm*cQM!E|`TY7HESu}^u*Gag71Kj(?#5ZW4|x~ZKg_UD zReN+)8TuiGKZmTM5aJlhy-o&a7Gzk(OHthoiy^xLBV-B-Lg}BLgDrs_CeflD6LhNp zkq&LGAWM~oWcoLKnV^^qM5{JgY|9y9A>D01WXZn29rf**H@NLRO+)I)snm+yTqk|3mPqm z@~bkoph{)kN+>_vz`T1Qh*UJMB%Q|r^FvNdSxa=F zlDZ-|At!(x8f ztUH+o@Dh^THr-55B(k8V$8)-hq}mf|vztH2vNjM-TYI}S@8%s+?Q!!y5z?ZTxgUF& zyiR_H+znc2xEn_!mcD2*jH}chK{fkS2A6m`V0YUgxd0Rr+u@iod!=M$7^!bir0-6e zgmh{lMD62s&9>bzO@ez-v?FlbMms|@Y{xPQ@PyE&>aJS|;rVUOXT)YovFL7H1a-Vj zG#y)Lf?Wf42G89WvYtCTg=U4duieElVB1GgF^$)gsUQF#EXhWhfyLyzcHGN^KCDxE zquSMk5UK72N0RkyDKXyLM<82qU5NtRs?YAPBhl~-JS&_k582%nx1PK0YS@BqsO}<} zsIpCu59SR+FvRu|KA40SPMx)9R2j3GPe z8&U~q<78OuZihAz8I*8lSrmb5$56<5Mv#SIAa2HN2qB}82|dP#R47ubo!yLN_tXTW zRj<*cJ_|o<;yr)2pP?d@niV5jd16T4xEit&yS9Gr(QD^!7Ge>WjT04jvjIS2^C3%G zLul^rdA{W~qMf9Th{|fimZ6?+3Ry%tL}}-HoO@=k-Ca|v9l6pDDvLd{7qWO7glT=B z*p*V->8Y?TLg;xin$2Cv{6|O?JwvKmx!2=-+{+OEXWhwn9#N5(I^t)%fp^%yW~{SL zl5P=--nN`!N5%t|?G9K*t&u0~hV0BBR|tu8IfCI;T#^(dUBBP$?_*R zqgwD>I~G{W$JE;m477lZ$vtm=NP2-HIggq7yQ4EOImXzfC@iram842W30u278Nivn z?~U18EsR(?YJ=j(ERXyO@@}%65jpeJ)XY6bWkPPU?n@3KGfH@?JQVw}CH--Ql{r53e?h{0%=pFg zcZ4BVafkbiau-z`6U)?Ru^Rcbhjn)X=$M}^e>^4Da9quV`C*0C8)>Kh<@iN%Fx$!8 zUEGrANAPW{y@EuY%b2}=bV(w}^5B}eYwUH@H=Wy8toaG*h%(1POK{guUrGqb8!(j+ zD?fyM|NLhkC+Jl~e=cd%s?1Fc+HnQQ)s_#jpIa5Tan*Uv7$40O&RBsH%nPK$tB;zg zR&s2nFrR0Kj?kz(ztzNNJ9ZCK8`x}89t!K%dnNbli7VF&XRWd??s=<-@qRl8Tr-ir zn-zQh>uBu65oqro>#N&2Dt7j1vL~!zfvuZiiILQfDP0C<0ceTM4DGTZ*LSCGcV0JBvFA;I>m#9GY4tl7EoYf5;1g ztX(`r-Y-)XK#UI1iv8nhs|=0gef>P_?B3LiB@Lh@){HjBFA$Z^he)bYtLsWZ-VNOI zGhef%H=m0W+_2dp@f4)WD2s*4aq8>qUqsB;lQ7u5${io?PSDB~Ye(;#nFKp?IZOu* zle5nn(c;N?xqTesAZ2gTzlB>j%4<5A~LRPmN>_> z#xOb3)&TQ#qW~f$_}6TOumSIWjqVopl52<N69!A7c|#D-MP@s(2#HA)Ot(fO(l_ z(g-GOA(sn)2$k9i5OaK^W;$=X<|C|gJhWOG2uWEpv!+;hFPBGf(pS8= zQ3e$1K{R1IWHlCXK$pZdCpvF>T1s^rEt}_;@(59--Yiu?`nXFxXX3Ya$$pamuH+}q zNeY?z5I-EkV{Qi0?We&}-M5oqZ6_uR=uXYr!E(q;>caM6#CA2Ua#QsjBpHLnaeCl6 zufkwkLHEz<2iVZQ)n}$othwac&6SJ!r>uH5F5aILK2htht zYlp|<-|B;&@AI$SK@x(q8#z}}3Hrt)DSR6?FRBV7RPJD+(^07syy;WIo)+MY?6VN2 z%7LiQK@o^cDl(21803wNH%#&8fQq%$GZU*&l2InQccmkYu)Mxi``pu9+F6i4t-u_u z9qn~G7FJpCu!|@{_F+8CL93)JAvH>F1wM=!0>YVHEt^p6vwSR4Q*;DVK?Zu%_R% z2z~c@F#p-0XwvJPFO)SokGo-(+IjgG824a{;Gh>KLnXd?oUSx0lPSl1a+_uSc6QjR z>sp2a9iy^U)|1k)*AvTX&$F{X)o-nC3|Q*5JGUY`dj5gF^Xwa^yHP&X?=jbot$WKr zHm4^_E+_AeiL_{`?8oA1w|ovQKBcYB@u2NKYd*y5r@rDLBG=mrAamCKJtq2GLBHT{}Cc$!tuq6y>qm2~qS_(CCl0 z$XO^;V7D7owl6N0D(d2uEtk;qlY{)^pB?!3N{kxG1{>EF9{?~qj%TGU?*?{4QC5(1zC&tL2mktm4MnS(6i=E(&esQ{rW-YnMC>@d5Ln z=TS|=1d&=o&%3aK1GJwYR_)OQQd){b7Ov~{wuISYv5aZDN3srE`WA4( z!F1$=HKY_oR2<7#=8ubfOW#Wrj{ir~K^#2ebVq{1lFC_c^t-`_tQtF{(~Kdz!L(7p zR(BJ&+!aK!!i+*X^Dvs#t^}N3L$VU?kdo_l(_Iy7L(QAI0fz`sA0PZ4JGE9vm`pzu zS7riW-@p#p<#N|mS-VlKDh1Vj(k!Z~;P)EalaQ}kIjZDT5MOXaxc%l$NmqPtCMOr8 z`GU4g#NBEZc9sfcA6NNDCd>Gc{k+IgNRgwP$vfO1c7lTa+}*#dxfIVmZ;u)B=8~8=Ur5)B#0C`JA+x@YeMEu}+fE&o9K?D`f(=;trjDL+s;7P333P?S zA^R>NL?$2;55i2vhD-%jINMUNLVIDnl6H_$uFL?!l6lDLKp|fQ$i?Q2>)H|MQUQ}b z={%BQSf}9a%;E*!C90PCkd1+Akn7w8qiUl=_{R96R&y#+A74KmY#z-Eibs{t6Smx> z{ZHnUk`Af%X2@>ogRF|D`9)RwB&v3NfFjXrW;3^%kc*zta-~J`A^3)uh@cBAzaG-f z4%3dMuS0eyB6a!hdJEbrz{s^`AkQ#~0oWC<0XyduQjFmS$#=NERo`9T^4cF#gjhRI zJ>$*+&I_EwE^AX?_cSbXnq%bzYo)WFtz9QDK>%wAewZUKtRqnbH@svm}^;@VCSJUiQX&pW=qO4LSRe~$0%w`+Gn zBRs8$>u2oCBZYM|q~68Q6Niw38AFUWK!j?Ay@*84m;+%Qtd2~Ohu^u#i zkD!GC%}ooE;K3M`$)r3Xeavt)bjiJ)Gf=lM^ve`gRQ*spHfv%mq*{=WrB#QV1rPg2 z*J+HZAYN4BA{b%M^OzxdjsOvt^LUFp&!08rFGp@;?`jHUT%1#0y9Rg-DMmdZSs`0} zn}PT~2)jp=QFcW6l_4vyA5A3_A)JX@PVIK<7mQ=XWzds+-6;h|_Vu*NttkLP=%gR* z(A&{KoxiSGG0_0B?!=K49V-~3jQTWC4)`VoR)Jy7mQWs5HP0b5d&`1GPW3&`@qu+k zZ`_b}4+k2e@`NU_cmopA`39-{{@$dU_3GMLuO^ATRk;O#?RL-dfMXq4N46vS5&vph z9sM&-MLA627-td3zcZ&Sm@&OL6K)55slu&Wl+O0?*n z=G59TDootsUgfM8$kGk^?qbrlb6tqgX~-)f)|YVqy$g+hTDkksB6515g*)?R$jqBF zdgl6YMgCFdz#3-saL87P53`kfWqxDlx1xHxoWfdg{~tC4w=Cwt?7N^2)Ey$f`DTc@ zD_{h%zB&r&Yb_xdZCn83fZR|Qpb1!6*v4MCzh*m!4&iGY(m3q{~S@S*~V^%eYH;knAG3d$~JiAC^dn%FBsSLR^;6 z(@K}-H;2SfwG$m)$sTMuw-BcQZj?I_4UihYW?C(G3}d{;V{dY5wxZZW-s5BnPSDA+ z-lXuI&IK=uz+p<2z@GdUxoqSBQQGMZ$4Q%mkcx9?k{5~&Dq1+mf6Uy79@5NT&)1Iy z|K3-s`m~f-%RS9$OT*N+&|LGI3s{j)NJhZT6MysiqC>B9rH1!7q2CxkcXII)OO_vY z?TF(PI_yGeT)xgUhgi;Q$Ao-Hy8hZpA3Uu1cD?5~tS5Qb8-enS8&ebgnpGiM=TEtH zVq^wQ$Tkb)X=UB)U_cjSlS((HLOKDv7q>yKUJ}@9l6g4!hEBHCc~UMmAWIgl4M<`PnWqL}UjAs3uDGh%Drlpc)f`aO zf57hJ7)gG>J&kNMzo_JpTTN6|P!Cz)zrgMX!%$qel5n^?6Dn}#`IWaC^(loK6yGN;ZvbQ(8+1lA9u#?cJFy`^jMpwH& z*A)rU<6gG@KDh)FYKjNSQ*V@U#hgGOt?6<6`eQkJssig_r6t(3dCIf=@{CVwqjEIe=>ZG1nJY<}7J{@p8`3r@ zII>}V&Ey|`2ESmAcA)$)LATZTKzt|pX2Gi6{`{$hGBb;Zq2l}3JGbqE29UFnxmv3c ziKa^CxY4|?<}K``GM`0s>|QZ@a;vqFBpTPXo;f69*=^%vs|u^4Qj&a3MJYa{@`-46 zpY}aZT<6$W#Y^f$=3$>=LA8^4Lnwaj@P2=~c0^!(u`?!JG1@L90GO7xIz$W}@7q|F zSHEUEY6nwke=lR6+Sy`M)xPg>-QJgp^ZAO5Vcuhg1ZyU z%+VRU5E>$Ody!J=ubYu)6z17S)n)rbtp4k1A8a=Te9KkA)Yoobfr*VBm8f{;h^gx+ z)5f_<8AxIB=GP9nxg)s5(6@_h=vzFY{$ums?+(rW$8Z1rxBv3n|9095OV1`@*r|Kl z_dAq5vv}y=f9sFbkhvGJQ$i9?PC#FQDn=ls+_7#x%xmS0|Mj>3^;t-@Qcj6jhg!>l7d<*8a`XY#x0Uf!nhRi`{WQDwb)RZ>Wb+mh-yi$`Q6-)4m8?a)|kgY!M0oCT3gyknl2+<#Y$Q}2$sW=uQx$%Z6RS5Pv66OGk+btpW}cuDZRXh&4< z{=krIVF)dK!xW*q`Ax)q&+B`hQAuMQl^EAOPlDsdq!MIifwD6-T&dY+|J?3tP3N zmXiysc5j<(HT5Ag(4)EQS|NgJn=07d89UkdwcGxIIA(u6El;Q?5^knKeN7I*D7#+J zs5;-*E#>YCj;XQ>SS>>;Cu+CAzH$2I0dWaY%+VB!v^YMqo_0}l2pi*;rc78uHEdV^ zYj@`+A?&Ps-rsg!DCE@_pxTk-+U@*b&-?4$B+jAS-UE<*>sqd723thmR0&eupyXIv zK+OtZ)e&32RnJ@f_|@%s?X;kr|A^?y0R=<`2sUASBrS21A{4spja@Va)0Pp^oG-qe zwas2_%ZU~SODiS$vfF=2g(LA#+s@>v`DDSP`??!S!7g-HS|JJj+AWw3msu*opW!N{Qtgxt5ADB5h z@&St1zj4PFNV;EV6n8T{V0R>GqiQE1Q#lnWelII(cyH^Hy>@g~!?p(ddG|JjG&i*q z2RIRC2ku)-lWv`_Bgeg2t%{_#b{Ck_dG(hSqjTFMrCuK{lK8Q5onh7j^-OC z7pI{I<)74Sl}91f7lue#JeodU*yH9&XH%H)&U>{vbKz!gBP+8t`dPuhp-x!SaFvX&corDs3GAdo}mf7Uk z?y7-^W1ikGqLP4su?ZR#8M%X|A(BNyidC#9d9SY>7cEZ6;vS6{z&)RNe*Nrgl%wdX zn?}i4=5b$7iO=>1leuO0w0$@OVqw!|d5&JGcCa%9NXzmvhxl?-RQnX+kOdtxPa5}Y zx1-V7FohvTwKy*XA2d$6ega%i%(y}_*KW~u5EU4ow}qee=X_}V16dIanre`*Rf#D* zRaia?t&Abj5kiVyGg*b^8`9>yc8XYAVMF2O>6}0|%Jn4k-#oGFlHbwD=-yuBJ+I;y z<_4!`r5H&fGQ?S;A>A^!o=m`J-R`LR`dXpQ5SFZS^KD(w~)9a7k~e4zEXRsKGJ9JVU` z+ReBO*=-3SJK`8Z_+8)6qKCQ5uYKhGdiN%nu-sKN8)>IvqS`qJh%}8Agh;erUqtjc z4Tdov*RI$bB5@JNVE=RCiO3%>CJoxs5Pk|aM#ZPYF%Wi4Z)pG3L5Lw9ve>mj@y>Uk z0g(uD6N-U$z&RurH-wD70T6SyG>rQNj!_A1vPXEycb8-BsIq{aUFi4X-3^izTg;## zsaYTrAb;-Cp$)P@&uJHrLGfdya*F%jQrMiYT+1Co04N`6cW`ZYwAb8rt5#bbq^4(E zNK7lq0_iU8n1DoW>p@np1>s(tK+3s}ckrQe7$b7yRfERjPB&B5ocIN)ARNDGgv6s8lERR&Rfy?tZ3zM9`goOhwUa0?CsD3yjZak4D>~N^U8TYNox@0(Z+^#h zyepz}OVDj}+Eq{IPdDWiPX<}d*4IFnQV*$6Y;%4Veh8UyQGomMCa6N2-r4Rt!NTUg zxvOw;53BIt<{XPR!v?T4gl4LnTZP=o*Ae+rJ1_SiMX?k_opaM<+1C3i1Dln*;)R{P z1P+Ap_qn6a!1Qt|XBL6xX!>kstSUZG3_U67aLIKoiFFzrb}J=1kl*h2T_0$rWF&h$ zb6J76eyk?_zLzUhxcx-*7apN9_?ZoMu0PTp&qq4=WC&uoOyALXwj$&Oq z8}bc2YpUKEC&%`4ibKkCt*0H$zjiAE(iOWEdm(yO4&gr=%kS21 zwQqXj?%e<+obOfC1blO8mmTvwcG6DixAjt#c|$N3%Xl1i5~Df1m*c6` zvkomvb0VhP6b51NlWKHx@**bQAWP1=-7aLTf9;l(5|&`KZcOCUX$(j_zfHfSOEe6* zo|k-b22fvNu}bo({Qv9eWX$EcJWnL~6XHDHsElD3rce+P0`+9%I-d^ty%BPj$+T7y z4BJ)znrXr(Tm4jvmGzb8EZ($F>~8OUv0bkFW9!REB@f?DbED!L{e7G+1C9{5cjUvw z9W-+XE$iJ&r%bXlmTWQ)OSh#2QVVZx1d~wljhnC9%|`}Q`Z{5|16KgSpP#4A7hmo*};g|(ViP1S*mxyyE>w@r)btV zO_0B-f}AgcLwBp!A-DSkVkU2X!Mdqy?cA!dp1i|DrgYN|ClxijtCcXeYNXhwQF`~W z`hpN4yO$76mjg_xd*gE<65~lFRKjU7e*)yauP$%9i#6U9=Uw2osDw)@oP%`CAVd&9 ziyOb)hwUKG_Q-Mgu>{6Id3ICIBB=Xzt!6$~>~+(+^mvSbl}^ILzS8182kU9{@M6qp z{U>5GW8|}I^x@O$RjzRY-f2yW3L`3nXfXiRb zEJrwv=KbG^3(V=bra5u1Eu-l~L^-x;OvYLkRbm5{Cm6eIe^wi}jh;cbjhBA~;Psno=n<-R|c^_iO zKjf_5s8Ae6)Eib|whve-SEa*zO~|M~L+>|4z>W|?L`c(0ki|ShQjM?Kiqc^C>QQ}@ zNnF03vfPlUi@F)-*^j|+TKBdjv&7GKemE8P1Bq0gqOjvTX2gBJkE^DHraB1a0-cFT zM(oXi#0{BvSSmk7A-VIYx{@!1o8^VIo9yUiXo~OKL9CxsRg#b=m3dCrQx;Cmu#c%* zSG&YBX~)93W;(+JA!oBtOA395&;@67!YY1_%2i^`RPnyOOf_~C@R0lP6r>y4ZkTM9 z>x<12(`k1BD-{&osx@SH#p_!z{iX%gHeT3!ySth?Ab(UpQguyJfCaj@6S{aaM_ zy691rJFndZi|YAl6WAsBU_7#oY5wbaceHKoe50v_sy^hg1}*=Ml6!MgPDS1b9N;}m zAS>!-E-UJ6E2+o38>}dcKWAI77R)TtxFTO3(R5~XU z#vZsqVLkH@QmUnPwAS0%9az6{vO`XoIbw0`3dc-Pce;1&?6tSsS-G#BP{g%!(do6@ zv8Ty|$+qGSQlwdWCs>nrv^i^Cy$du7)p2Vw8H89W8 zY$4veF+uJiN}f{p0)+^Cy>=u?tANXP11RoSZgq$tVKc|VU2tnX*{Zi|yQ=5iFD<8YSy62EA5SI|gG$pKQV8jWYYNJ8C?wdes1Ni%&#|F4XnJ`fX82%R5bT zk7u|X8_K<7I$ae!+IC?gb!}0C8CE+8M{>VbsWHHv{tubTL-IaoSt9`%Z=0>vgSP9<)_KvomUF#N*oYkR4ZzI|z z=Jib~#3>anZQ39O{f1Otc#k8e<7QMe$$FAMzV~O=-T*j(59#uTYbVM5un7;g;ZB+B z$fff)wTq6_bqABLl@#ht$;x#brPB-Tf;pg@NN389gwVV>DMeV;(Qd}{=WM|GJll4C zk~G^$;B|mvo_N0b`ov&0*NvbGmR+JsqE(w6a#ch|K&wAd(TV29w9~z{V;bF6t2#*a zhBy{}>?JVJ^Jwm+VtSV%RM+k{g6piMijH~hWV=o95xppNP3$WDJ!hKlW zy*h91?#ewIYK1OnXpGaE6%Lmygh^+d;87TT?PM!YI{a!U%z98&r1H9zD3QV7VLiaq z+Ucy4H&6gc6T3hb<_YNvfsjdRFCE4hK5PeoN2L%pD${QILi)R%-r>)_N@ggj9!5R8rk8K z8e%eeQ(-%r7nNOmJvnr7&!cFX1q)WC#63^cw!UCh2dv#kWgoqEw-hv1yjr`2?@j0q z;2oV9=nPHsVNn=Aow+obTr1P)B~_u4T|a#4r$%4n)a9Fie}!>^4Ow6OY#j z&hyp9vZ|-%Zm=(P8x^r*N<%hyKzV@%58CZ7h<4#+h^RrsDjiT5C#3d6lBw73$qx~z zg}0(2<~ArRXtF}??t3&Hd3f!*60W{%)+P&8XWCgzlx53xNUsMek@2;w1P#X0f9>YE zbys@_a&MedM$!)N;7EO`DO+D+tJhBC8W; z`rff$tA(*AA3+yehAA|;NnjVBT#(jjIy29B47xssMnL$ zKfOf=bUdtS;jEuDEXA5*S_RJPN^K;PuT?KKK0l){{mD7l?xWE86&6*$)a_9XAZuT< z>Z!6y8bImn9#>>)G^Q4RwM`MOxtFg z<#exR6WP8noU;0oHeWX;hLEBu+qUB*CGWi*XN+Mh)<#va?FL26)Q+RP@=g^?k|+ zm59gpyut+`Ipm`flwD8DzYoc0JdR$?+OWdj@vqzC?rqF|J0bhA*t#*<(@Xxt+*EaA z*f*b|lBc?5a7dyp45@mlc7jbO0CT=uWLPEnMwQQ=01R3EUdY^ei1LMRoT`y;UbyAA z&$L}LUSA7SM?{ZS+>zTro_5!{#z1&7A|B;EZI?j+4Es8kar_2pFOZ13k~z4=TOxM| zmeNrRRahsQa!R*f-L~e1ajOOeU?l?2Lh?|MKy~jmQO4Ce*fE!g&ys3cd z2{z0NDlbg)i6c8bsY!5mpg1b#z_sfeJ6p|FJR@Pf&9-UElYV^0-&S{UP$^CnM?gUKY|}kUHW`?BpVB^{ZjL%O(!et_j)AeIY8a-{f{M z?4CEbqZJVHY~oOLZNt{2142W#fs?RBDX8e?ao;ef>iU8X2>ypvY)cjAzV zpBQN-nrK9W0+1L@LZ=o4U_+Q_H}qC_@`wOkJvA!Qt9EvCm!8(n;m|fe^-#5JOM?Tv zv%c)5EbvjSR-1^}{U%7_1HW3R+Zzoa`yJ+Xw$`(VNrKf577#RXcFpFyIK+7iAjQwE zLHg8KBl1Qkd6;l*4Q9lm<7jqYTsw-5vg(RShrD%&s`r~;PGIdgikDg_d}!8swS}x6 zm2A*f^A?Jj8P~J>x_-S836h;5V(mI{5XOFZJa@K2r?+mCQ7pM3grUWLEH3)j+$OW9 zN9^EkmZ0P=%baEr7v%mFUK)ejk*fzhkMb~gk}zU%a# zix$&tDMI#QTdYFcA(PX$5&55~pCSp6iJ;6cJAO@ zoqK^8#b!@$8mndI?RbP#|KA7>SPK4xURr;00 zc%BOeTQOnKj<3eQ%N82=&N{`>yL!D>vEHYHNl}j7UXRFZP?$QqA}S??Cs!|70O7@c z?QF%HDxtJ%N7B4WFXviM^!rFme;zc z5l1mZG&|)QJ58#R^h->}aBaHViVTaSXBUxi19x}4EGYk`k;Aq#013hXF};icns#1iimrY zjHwK1LMIvggg>k@ps3tWbL}J<_O?n^vlSU1lY{m`pABvLvqx^N$-_2bMoV6}L+@ly zTneccB}8iDEWV7Ljhjqf0CrSVM^tvkd)g|hA@7J=PjeN+h`PIWFRL`?5booR+C_Xl zj?nm4z@A-j0`uB?3!=)3&}a=5X2p6aT7tf-KV((l^J4^nKEvMiw8#kw}a}YXCd71`&TA6;*KU#P(Zo z$|1+FWnsqcni!aKelaFvs1ue^DV%=D>W4$BQ@wT$@V5#~)z^$)67K?5AgUvwgJv93 z0me0R@Q%^HGNr+3d9jS9Co zPA|L515w&-!0gn34nf_ZSyZhgW7uh>QAx$!Yf#G9?oLFY+0m41$FXc%!ZN<=T{K<{ z50aI3$c|!$RCRal2#srpKjS!}W#=?dVVsAYH4Dify>^OQTDY)sR@%9#=yoO(>Bi}x z$lK%ZzVE0Q)EgDc_Dl|48_KyH9w zW&=oLsD-*_Sh5$SXzY?vNtK_Z=YyX#qI*vocSZU&lZ3oxvRIR0cTQD5PE z6Y?1#+`1C!!mim|_j0zyLnLk16IoK%X#S%egR@uh=9jlfijFlP)id@y(zsDVx&-%z z$slZDV1-4a5(<4t=Sqew@Q>!3$yGh{`zrFZxnlJpPpqF!s@pC_xkquC?nR{d@72V6 z-=I_ZJ?etu4To8NWpbuh%i$U~Smhjie#=b>8KP+vIvECey1HHgIQ+gOZB?NQ#NL-V<2z6$J*}7bWtuJ#@$}9BLkNONQ(wvyfMf zRl68q!xx$Rr=yy?<+W$@MI)w~hLoMWb|gX~ z2)6spwCiIYkPJF6CXCWAJq(rkR84W=)A^&yNeH!t#{4lQEkHzR9;U! zst*qgDK#@hvgD9X+|;hv)*)Q8{Z21`NXi9;827gM-`{tef)-jcB%0c;3YoUadQ7~&&RRH)bDy74GBBy3>YK{#1Wb-I>e+nWiHEL_*XtBnbv22M>n z^VtS2u5`_K;kV1#B$FP+jCvC^EU1%>A|-9#)c>B}5~;oRG}wLX0gGNxpo+>FxHitk zl?9Pj$7IbUdA>dFP+=p;u3hXC)%KR%f2lwTpUiS9hvAxj5GBjoeA zO#!`ig1rDAw(Y)!Lp->4!Ws7}%%*QD9e%t~iJ0FCaD*Hmikv3|#eHOhw%sBGj8` z5Wx7_EfsnbScy%YTlZULu2URbI%k^P`_NGVe=g~HtrR)l%LoGBB(Ju@HngD*nAO_G z6bt_R0IphHF?@2Un=4}PERvmjzd_EkPNQ+$JkG%7;F4FgRfSz49h}!wQa@7y;%q}h z%8p&&B8=p{cI5yA&b(w4?uZ~j9pzD=T#zJr`F%@8l~PZ$Z`ziV@%+&tEXaqv3nWo3 zIUAK|2Tv378MCSKekZ`1TNEs~y&E}yu{zkkla($w3ow(ngdt={K)jkQdF#zl+_7?) zMQL^El>62Rq|C{X9VbS^I{hBUkx| z0m87;l(6LlLspQWCk}dAAirlWpET+F;BAVurZg=y?ZIZ)ZEhijeQ%sD z`nqkbRJVoZSz565WY0h3Tn#GjnF{%+v$a9H`$02x2(fH>u($_A{m{u8L8W7U*f&+S zNURRo?T6Y4h2P@F^xPhC=gN?dIt-~Y{@#!C_S*eyxZRjk zyIejU-3KcM6q8z4e=i_?U16oDM9@-^npxjN3d-*JQw^M_q+Tx}$3u{c-nDbRShvJQ zDP(d@J4Y0tKIeMJOV^nM=WWs+R7?Vu)M78FqvSO}ecDN4VUK&e0=m6$YxE|ei*W-q zXf|V{ITF}SsBpKivhqIbnsxM17242FsQLO9jB7o!rEkv5<>oU+=uvYxm2_d0y+8pu1@y9{;lC1QC%NJPlJ*GIJSuuMDL=Mtl&dX5yBD8oeSBg)HJ&paT4z|e}X{^uUIsmvd%OeLCcTcnJxnN4@QT+w6uxA!08 z+6-CmA&v%9mr0O!4O7_hE(VP+qWT06hDoH*1Pi%pR>0z(M&!kC<>|0~M4XLy0t;2K z6QbNOV;!3nbi8)b3e7-OJcUuJDk+r*U=7D`9IGAig}CVHnkiyg%@3?4jp#WK04@t; z(SUoJS+{b!VojX>*456+KpgRCa_fBjCR(n%V7m+tio z5z#(Z#CAUED22T|usI+ZqLN?SfguRr;9?^bZ9Q4cyvAllrZ)8-#yx3P#8eh!hNw1) zxr^82_S;WtXLhzd>@IND5ix^$c?c45Yl~ znlY$iCu4g@e!a45r&~Pjd5x%w6iju>Khw0ED50NrYHxnAQdB#098`f=%@*N~Nbd4F zlCx-(kQIZit0l!iyQRElcU~oAPCP{5xDgpzdE6$mD%Cltuw8Q#l8zgd`p(fjp@v2| z7&^`0A%Q_pPj`)LSo+j(f7gz@y^UeBU-gbL~0}V zvPOLm^Oc@&jMa@-^=X9B6 z09|wf(F>LEkQXM|;m}*8q_2SB>j^}!S)T`d(cF!k3Fd%lLuufgOGU!uRi+>}r?@u>U zH#{f^`|vf|S=Nwt*bQ;VH-frNrk?5jTkNt@0~kyjU{~C~0g4_xXp^ng>LBW;ON?s9 zkGe6cZura-(Tj(9EFQ_1n|yDO_#gz+o!w&{ZfjRQJH^+_&6|eo{shl+O-CZ>SF_8z z{r*CFI?`j^4T^4+QHjOHUGGBrc~bw@jw@MbS6TUe{#X+ao@YPy4mFqO=QE$B%sQMaNkEai_Pz8XC1-B zX_-BV3>k6IDO^T-YylHXY=7l$RL8zS}}uCV_qD?hG1PiKxq&aX%ffbK0aaE;zq1LffZwZP5BbyXeh(oxTT0M-*2Sa( zayO80!CDY`+yq;Qf`I$N0BqViEYk#0F|iTRB0URYIEP%o4Man<{ET+<=2amXjzd<+ z7qS~_qGA1iocm1@#d@7{18$Vf`g#(PYSr@YPNwV2Io+E`R@S|XSBY^^buUySV6HqG zi<=6u&QqoBFj2t!gac;S!H4ar?ea{ICk)AimMQ)y?tw;?-;(mMKTjXQ+}qKzWZ{;c zg-EBg2^g3(+#ycy?VU-_GD{J$YrJ5-!FwFN6c6~*zU9>qFJ84uy@X`4VA5y^@*Bi`jAS61^II4j8a#qcIB5JD2wJGWOKft zM#F?G%xcb6u^iV4e^-Snj7cymz3bu_V5X%p+xTA?wdzkq1YxE9Tz^IIbEUM**LmW-Mj&=u0$WCBIliX|p z$caLxv4uqXtd%f=PG7K?Z&b%%%=-xpf+Oz^h3L#JNzg_GOS#sHaos9G`qa|(GyaCW z!_N1#qoTat)0R2Zj!_pA8d2faF7{ZPHBmafqB6VU$a`Z| z#J3T+6B2Z&RHN;MoB2DcB0-~C1WG&U*Th)1W=Zf6_3^J=9^s%H zfMVSofrjbZ)L&KWr;wt@6(Qq5nkBpFY zB~NmjoUz)F2nXVGG{VsJm9OZBhG1It5F~Keq%?;GN+Hz;d)?lqfQGICb2-AWu6JcFcKb4%3peqkuqRZjyHg`a3p-|8$eOXr&&zgy@~8q6SvXb zn=FMs#7y*jKFucxq-4U#q`s~hk&IOO5l-JR}b4s!l?Gar`p*M*V9f20ag&y5*XbM%2KNA!=^6FYr_d#&y^`s5`f%;8CmB*>2*`}>Wy&BN@=YaweRCJpuBnY`_B4b+ z9A9LR#fA_v^pM>fZSukAl7j`F`93llIyn(n4QEdB9qeeV(^_*gNR%9CN_rP*c-tvObBC{kfFFhaImLg z?BYKFyY~DgZ+inTrc{jqBEqdn5kPuRQ%-ly$$e8e$j~c z+Rn(?9Wz%JAm{2~u$>Y!+sv*uYrq75TY658W(xtMnG<@=1Z)~Nwk)`!ndD!B&?Z<- zwgIgWGKBdtRRD7v%k7I52km8*?W|pAp61&ZhpL&g!`G~`k2!wojEW9WV!D!Wh%GqF zoytE*QDMST$zT54@KPImmPv*AScL z+U-h?VO=7%Y1rojqB_&8*?VKRZO>3K$2%a=sP;TRY)kun6(fG%(V@LvwHY_(s?A#A z>ZtmDqaQfQt%4f2vKd3}cbol-O6+o?Xi7vS4bAJ#IHmazSwHMmYV5^M{3vOoYq74b zQ>mSd;I(6Ho}^_hCB}=tks1vW6-#n`5jQ7&pCK%cxI>0@xhqEeK(w4~QAn+nUs$re zo-AQZ57`m^kWNV)a;yRK9lOKCIj)^BL(_!s7G#R1vy`u=GfE73g?Iia7T$h=lxiJS zA<-erSVU7b*u9@`r{7%78i*BOf=asBF`ckma>&hZ$6zg{-_Ox% zXzy9i{qzF6qZy5ZdbfXep0`#ClHUI5qQHwc*k$+p$4;m^9Myu5e&2HfRz!V%!%aWhQ0u=5& z6)gA?8y1vIusGHap6!lCS;;2kk}#-t&}zuD zTzHf>mo43d(Pj=KW`*p8mo-pR(*SOHw+1b*$0_7+N!xvF!ON3k_XSy|#N7O_rK?=F zwhsb~Wmm8pqP}2zL8R&|0oXL?CXyVY^Q%2L)^DvJaJ*kBTCY4B){0iPUK3hBX(fm> zZHx|K#U4@`{k8LlVJa)*GF16CnsI6P_+HM?uqz~Yu~r3DavXy8b*#-mJPlEm9AlW1 zT|)w40Gi=-w?L6B-@L~=R3NW4|z$mL(1O7bd`nR`mz**{eg8$$VzpN?-g9 zKQ>j#triBr#I*>38Dk+h^&Tdg8fP%g7wxmKoRn+!57u1*Vr7?6%r5DhO{m zLy9q=5=(hVF zp?tCSuuSf#l-b_nBtajtY85oyPCaFXYGJFe1p~CB?V58Q>FqPfzJ3_el)c&8;U$>I zB__94_q>Jwn@(}mb!5BzI7Zc})cG9)LM4#-s1{ER5v1MBNzLA3!FI=P?N;uJO6KgQ zTw?I#yJe_VsQ*z+!f zgvDXeF^Es>JFnMnfY6HTORE3+@~2PB_#oPGhnn+vK}c`aw6$ABaflqv>*>=nj!YfH zsKskdS5R@Ub0=*=b}gA7#655NV9S1n$!{aVQkd(MCKn-{qee~}m|cGtAWXOJ$?uh1z`9t;s7mNO$Bxf+n&3{s ztm|@k`V!W226vsafs)@McBzCO*S=p*Gwg=Ew?VWwHt?0^*J`&8X;sN(-J~e|DqDCG zFkMylH|*1d%iIU-8iE?lQpd=~@Y8HE160IlJ?~Pqh%o2|$ksdYPa55X6fWG>YY)yW zg{&}IJL}!1f~+8Ri2F8gLPRc3aypX{H=+9EEBE1$u7B`$^?l1rT`#Q{Wb1BF)ZYpG zKP6%6h=qQ-1j*NK#+_yysCswr#yTdtoGV0mMwplF51iW{7!apD)3T=nAsJQX@6H&x8;0yFcLW z*Uh){Zk6KOc`!DR|JwlRmIP$`e0s!?-}L}6H>_Vz{&w4p0dPYUCOgwvnl9EQ+`b@J zmATtzWv9pBLyj-U!#z)d*fF?38kT<0^{{JuM~YPIUpD1^c{ZE89`w~N$izESPA(5QAr zdr0CY9z2r_cG5#6T@M5X$uJ+7UXIK(`^W~;)CXxHUM)H#!yiN&Q8g!7lf33++xu#2C-R)-pLy3`&` z&DKsjJLa*C84;N;%!qvrH>i)w4cW0*$SMUQsbaELYTdt=liEDB!9#A}%R@-t?R7=m z?&T!aZrroG@9mV>KCJs+YPUMVdM9~bJ3-R*q?G#v9~*K-o>47MtDW@yy$fx2%Ody@ zrx<71?4HN_9);~1BdyqS zvBmGGI)S-vmMBJ|r12_5MLABli%(ahgP%=Y9=QSNAqh9+tOQ6EQ$ucRK#KL>gg=V| zmO(qJ+ZjVJoxa&F?UmXcXNFb7JxmJA@%Dnxvki@^g8h)WkA80*?r9wDmKSzc?V;HR zR6`a|*J=^nXvR#(VhqPA^xd*c^~GWpdF6V-mVgcspTPzYYSEHIy2#2`N!Y~YY8!<; zyc&CtveV*34$rPmgxqIjL-u~X#Is_-!9rEKYHpd!Ddr zY&Ju2L~=Ygd5({F3ctwL48Pb7mtQj*^d^g9zs`lgZ;@R-)~3o1FCSyFu-gI^Fz4+b zEA$TC!bms1#VTYQ!i0%mP5Ubqj5m7Nt_DJv93cNjt4P^L54U zelq{=x{7F)7OI^wt7`{e_c#$nBVSj}8Jsj_Biw>c|1~HDy*KCd{PykDu#0wrYWTpo>_+`7lxU-z~$^#yb&ldkK$ms3xFqUF!~ zG=z5Q%ud+ZGLH>*Mx}P$407#MxST3x^BtGV`d_=9dTH2R@@7}$ei|;!A2v~LHGl04 z??%;EpIT1(FxK=uq0ye#7LXpW_Y(9M*#o6wAUotd8m67y2)Pg2AhC!8N)Eq{@}h># zV2LK~sZ~+6_0yGNA#S<4WKs`n5yDLQ4JZ#epk*Gidmz-XdE(ARI|sqF=8ZX`wcTc z_L|*EL+weL`7`_R-k8698b*D{O>lRauPdBgSH^T+r&en1?M;vnS$hn!v#k&XUhNi0 z#l6uWG4OTe9LaT+NjWOHh(j25v0=-R%cI?H6~B=a{7om1>ZDi!q0*y}2}_}S7D#iF z;cZLStmCO!Xt1XNQYsme5VbW8oYUl0tO4Zvkcy}9K1X$*n)FAJo*Mw;D?M0{4kOpj zo80cqlr3~yU!5wLh)gv`z1UfD^*(WJNLH><63FvH5HWjiC*C;>h{%oTa{KoeO?mpW znB&ux($9Apae}*?K`-x+;ri#IA0mQcGw61{dNh(d$5Y1s@su25OXDT(>&>RMo~g9#?i$Mr-&)sFr0 zttBoKJsH*!@YqfTj5k5Fu*Z<4$RTPpKV{aTvWW1>X>*6G%n3w_-!5AbUu#L&UQfU544m2xdW@3NqQrKZ z>OOO1+A?T8saXA{y}6xqvzM|{y0q^qfKc%pT0qFkt3tXMq=AK9SN3=^A27jbjmlRJ zC>-3=d>clq^>k;;VFh0z5@Bjy09ay(kMA8KCx7Nqr9Id^Dgo^zS?SQpSFZl4i;kI$JHIfX)lsE=^=HDOaQ^cmi@7r zP}uB2hy=*j>`q_9oH*)*iDlCQZjF$kNdthXnmc{Z`Dh^QFY^<2iei4x{qbh{C-v+;%a#O{e{lnYKlq#92% zGMjH*#4Uf`xH%E|SOV27NkH_r5CZPz&Hc3RX}dMD+3h5LL}xQX$l7>7vsK4HSU_hY z7gni?CZ0=rM@9c1XWDr2szI)p3yuAMJXbJxN}d=xkIL(+P1RE(XM)wF%vxYScO7VR zGDAE$%J9!Lk9o48r{?)>U1o8ZE5uT}dy5-9->8<2cuGkiW_kNY+##Sh=Qj-nf2XMo zlvG?#k_IiY*V(nMeo!`cOzp>g6@J+EwGK#uJvEu|M9+`$mr1E79`Bo#?%2QQ z$^6{wk=tz#o$7r(@f6y64R~rWUH3h1p^t`cB{nY8QAd? zRaBJcCh**Le$FA9yyhow`2Hup|I z^w?by0>K}jge+9aSZ7P0$ok7^4WcC7)E;L`9*N5Ye`G_iSu^7E1e;t{99Bo0N`LBr zaL;!^&E4TBHn1zD8&g@oB$lN1$%e~6LVh(v&N!Lwdi$kILkor#;e9)_Q0)mjLAE2a z`7Xj@AZH2Ok=l*$?X>jaUeTQ*$B4|zPnx^i?^sxgPD3?joqHkjy>ixo{*unc4`;6s z-Mca=#n5a;B?3|Bsc#|I>uB7v1jEnccG4OZbEBRhoyotxrrgAF+|%M5e3?5P0bzGip7MVMJxGyeKDbI(p4u>%%)L!%<&%qr1xw?MD2 zokfUBuBBDZsT(Jhf}81O2D(ywyNpuiUgzkAsB8nq zVe8Itq*sUWGHMICcVw=2;A99dZZx}jyiu_Crx#fHs<#esBJGH7X^>PkDq?G|EQhX-71tv+gH){RU(EkK|3ivjeuJC@>MggCG^-SH?G|hF z7jt42OwLQ-)#ogY=Bs4V{x%T|x!7AjOeXr_mDfil;B{S{g~D?FzhvD@vMsr>o$GqG zB3p2E_!1AxYJo~>fJ`bK$xLGZ&F=RPM=WwvWFhAo+krp;4u1ntiFKWek|q-TC`>)1 zaMz8JUD0aKU53cG& zx48HYH26ogaJS++U|Z*>nEcC%+X1<-H%QiM17|O<(x~P!X^0JfPvaoAD9q)GkFFhW zuuX*}Pg@$w?req_Th;-@+K=XiecU0(3ytMS^K3ivC@ceg*uLWzavL3$Y{^KLL{2<+ z#kvthRE#ock&?A4D;Co6qw9GdI%F3ETvtWSqhe-1s_e2Ms|?nYfj8l)rCZIg3LnGd z*l$pRxYtfVhekysT7QTH(!@d7V%*wkk5?dKu}7sh0ril%quE}U8U$g2dp$u38zE$} zj-l2~4g)GgYD5yvc+Qk_m%oYXNXUSTg&{g?9?1?S)~sWyttM=V-eE0yQA=X~`ku^$ zv>}Idw@%HdA(%rT>)?_jzLp<+7MLB@a9nCqLfY{-{dmaz&+ErV) zcKp)b+2$xndC%L(?VxIz6UoA}wQ5i8D4vCQGdFYY8myv%A?K`xpb8O8KH(sYbcQ=@Ev`IKZU82!^h!i7`#51pgj`R~M81LNV_jD)mzxy!SjJ}UHo2tQ-IiY0eW1q+ z^G<$-Aa%P*;KnCd4Jt;Cip_QJa%r=W7s)U>f^l6@O*beOaVtlUT?)q%u4oM6{`TWJ z*zUOsTUDh#MHb@KVp@wRwTKJ2q+Ds)UeBcMR!CH~Qm+T;=Dn%l4p4-MG4y(>$NtgI zcME$N*erJvvJ;mBcD_q9)>X5KB%Zy;6@^?^UbELTiPaE9rHJ$t(4BP+>Du0F_nf@2 zF{`N-{l1=546G;dgB!T0!PhQbbe+Fwju6{J&N!| zdz?jhG+F*POkw_e8M-X9j>et%HNDt&&3?6T&h8n#+vi^2cliNRI1z$sBS&7xW z%g1eFVhTnLm_Jl*?=y^$?6xj}U3a$u zlAjAWVHYcf8QQ3@$*rKQMOsK)qo7Rflq-CXW8Y+O!b%)Q<+}g3^4H3?y!E3_P7$Y* zX9~3Lgd@Ajd_DG50B=Ph)b>3s<6!dyyCA7$-d>C99AL;@W=h%ao1I3~hZ{3=cC#e5 zY?Pu8m^fr7g+jKzfXA;U;#P&%xw}EuYFalx^le!zw{F<^sU_WrQf-hpWwl~s84P;{ zOT{{_N~wb3FJm#Ra%vXKYZ(>Jm~OOJ=XC%S5S>um%^U#wu*u9~O9-1N4p6y^Ve_CM zN?IS%MN2YabjG58iGht0axtx>Yg{2%y3ai5+KHKKF06rG1Jm5BU_86+ECH6Wf)Sy=G&bOmk7@`nmHn`jLQWAq$~T z9zxzHQo{dJ-cz zeIxI1ui{p%dler^X{T1t`?(}JcK0+hc#F%;;>kp{+jEVQPuwOfzGHB`2^Dsm0Cpk& zWZs*D75^Zj%I{OmprX+Q}_U8=|e1GBwYA!PIk*$5N~uu^yIy+ zwYVj4q3TVF+5QG8I&v(yquo7@XuB~<*uR%6dDi3p(9mvD%-qBF)wWGRf)`b%{WeR? zy#wAQ$0n}G>9e|yEoGZ)MbUTFNzELvYARFxKbwG(>4mc_iUgu!W?oNHEjO1AONZy#Q9BXOZEEXiQ=Dci$1vr67jvT8 zWeP~{kSM^_e4hp7?!ZD&AOE9}CZ>^ZZ-%xV-RABN88bOPm#{t7k=ab7)&q34*P~wlEF%osMQQ zaYC-Fm?SF4eS05bd?f%O%auV$fD?mZ2`iX!BrNq*zz)#IlkRcd6cHlve|D9MfqlUg zRzj%pEuQ3W6$D8Ml}KeQ0$!d0WcS<{xr5hCG&V-iO~=k_#znYibv_YmfG+8XNOU2! z2Vp^sYL}7@D71@Y7ks5HBg)T%?Y#UD=E@LGblTF>7J+Ui-$^o9@m5qN6`aA2sxKi7 z;ZohWckDbGrocB$F5{!3`PX~jI(|I~yZ*l`H(x>j`^<7H?@;g`ijn?5*sZ)+a33il zyDS?`9%YWqH-`@O%)ZOgGpx;iw(Y2P)v4Lo1*JnWM@FM`vYD>g>xzHaD?rZm5HqhV zVaV=%)KMohuNf=7H)jr>a!U+l&4jGxTSt<@hxj<`*G?#`ndY&qY!8(=I;u|pn=#0k znA&?K{GdM`YZZ{66$0tgcy*)_;YKOw-vopt*Vh$+be-?4Zk^l0HvrZ4F+XJ2XK3eu z?({*oIq%RyZ%pgVriR_7N7r5FT_){->y1H_xg9`-rlWM#hH9c9D-{Px9Fc?&rCaT` zDu#%(5EglpIl*wdO{`@;6O2a~<4Wmwwmd3cdiI1k(mn?Td1uN%tAC1!9_;nXITzxD z5ZtNvDmx22hpbj~U2*(R5=uezIJu0K6RjQf6XIH*HRE-jD3NGdQVEgpLi<#HOC9GV z;VNzbf($1H#mmpc;l_2ot`V#vYcAS0E`OQRt)GQRZ#4x#nn~W+4Lh@DQfeOCG2zU9 ze=k}e2k`wj|N5DfD6>(l+IWa+s<&NH+&_efj7bu9v{nx*ahE!V$y(ohsDVD&B6E63 zxqm&8BprjPow;533#MLYK`VXn?sb)0xOyCj^-e184fZ%$@@B2!W;GzOD`F+%ZDwy! zH1osDvS79tVbTO;xFYgUoQCeA;m@#_jtwN>=F&{{v1*6g`w9zafiHQeRo`!|on zBs|pF-F{RO60ky!y_#C%H{r{Dg{|B{d$T;yfgU6t_~!XKRthFr<@V(oI}m9S}P8*#kUBseE7qrDj=&(8`blPcYtR! z36>k?zFjcPJ6i?%ZmyjlLQD6;45?G8%Iv>(R~j1?g}c||{4~K3PRe=`p}sM3pl`qU z$6dgKO6D;p>oJ+xez>$T#_vTZvLWU0Zk*h++b~xy5!Egv^+Pu6dLqf*7Rsf1?N&O3 z3Qr~ewaYo`dCvn>e|zjh^#6>K6NIKr`7i9)PGCN3w{V>wkr z6eZ=A+hj}Kp}`;DPLMP?DpBq@)5blOL6pSz+xZ3M>YKxJ0y1Gd3m|N&txl()%H6LO z>5|;-AE>YvKsvfCSD13o7_0+f+Zj5{2@Cnf2GK5?bZSdO48m5-E}?z))gZ4$*W9NT z>;GAR_TEzd4cZy{Yr3>9M0EMshc3J~+%0^1r)|zwF~WW92DWdZG!3L(&4~93d57#M zKg3G+f)zu|4yP3u(OwY3i>(p0eR7l~8yA$gKkuZj(;?I4yXq7otaqlv?)0xCzFIt1 zXqHuRkK319(rx#F?`HVZfW?3}PduAOP7xup8U!Kt=Vt35h;!Pekb7PM3q|fF*UGnStTJuev9Tea3 zxr^Uf^}l9yPq3uTjE@5vHje^?;r92cdb z+{5E=%KM}*C!rlOVOrPQT|-xv@qus~kMeC)BrnXT$1v_sB zR$ym{8lO?ga%X3V*zK;8+S!?#c(2P+y}k;HMkV_2klnBZQI694kzh&Q+YdBT^F_=p z1%yvl4FV8mZQ|pcS)h4n&wYdKN;_1F-s0hZqDrr98{w~*k*`<4*5gPHlJ>aB$X8er zb_R89`~(#tc8kdQwk6SUnIB_!c;fony#_tG>$^v^_)S287p=|>08|rojTG8t7JFFX z_7Qc@^pMWhgxoa)(G;t^cB?`j)xLlbRpCnuDm&d6|CObV(FjfTK|XwHFeKO*Eg_w# zf-$o!)?bPLS@{sj4l%fpDI$o(;Vd8+*=4A(3ftFC9puf+Ql+(90bc_ZnAy>tu${Aq z(XW`Q-d7C(QA5)-q*~^Un5?&0)Wk!Ch;B@dFvd~@UPqy7MJlx4F?zRHHdW;4sTr(Z z&2Px&KPt?IH~z{_T&XWaMDwPYrF-&33}YEIR97N`YPZ1FZpTLJDd#QLhsi$Q7`l;V zh|_&ZCh3cL?P#d`TdkF$UpuP)_|pk9q5_q8!EFY|`%;jstX&p`hnX+OLa~1eKI~(5X6&4n&0TH(i%CzjO79o|n z4Drl${d^`gEaCS!Bfn`OsFGa_z2y=0Bn5NrW*XGfs~C&utYvG}Vz1e*Q$yrZfQL}N zHW4JV#mP)?R1Dl?IwVmTa$z7q4#1ns zrLH5Y(rjzcjZ8J;*4%13DtXg{X}+~{Sx1{4Rk5lu#zHR1^Xxsy9S=rwM@zPxyO%%6 zGopE3tIfZYNf3*4Qbc|Hlqd{aoq}`}>o%Enj*Dw~hin2Hr`Ovt=_FK_QG_^{c0EycNemO!tkx6f{MODM-fd1WX7TMGVIQm- zvQHaoCp&Rc6JySggNX~g-pg0kyOn;u+ml1iM$*%g0FPIyaI5#@!tPG>0c%2ZZbvLH zcQJz9cYlrg=EhPrngjFhp6LPxKdChx00m2gw zX~w)bR0^5mC>pj**4AM4q!8PN;JF_QXZWdt(ChiJLsPYr(>r99=R+nljYN+(EwwA) z+&hSC;|#rTS|Ap`7f#2QTYxxVaj(~7vIJl|a1fQGQwZNu6`7tqCXcPr-s%PsEmU4d z{AJmykVHoaHfVk!N#VyV*=!(^rWN*1Or=9ASPEG*b~M7%Q+Sm(W%br>cRWS43(tqF zm2KXlpeXWi41#Jx1eKV$6@E z!jNSqLexOM_q$t1Vb=VFmT1QHBt036ZEM|_*xxsww&3o&(GL5cSdl48`XXPEs~`K| zPza;tmYvY*=nhD!#IgOpz!$7a*v>{&c(lb+PeEk@-sxF$Vh9-^7vm)O=5hCMc8 zi^m+OD%x$4@4ysUdCNds?|fm{wi=UsJ{7PQiq24hkRV z>(#F zDld_WDoO|2@$}4)j&uxJQAo%x4?@Fsk3D+%`_}KUqUK>vM64aJycgnt6kEBTGRs5W zx%xeCyvQNvrg;5*p+q~SBF-VlKM)s~)Qn5^&9=SUT0%N1wzpeR zbjSjXI^qvC?yA#rIUpGMES=6Nyg~7`6G_4tt9rzCBw$-zK%_f;Vpr*klel6lD*%HD zTxWkdRj^wkAQA!z8;2Tpn?~$t8Sj!k=JagiJGxr<6bf+ z8!MzrssSb6ZjhuzQ&(ztjvk^#Dno>Z*UZ(oH*Cv$lC4n2gai52+2lHZ6R=F={;qjF z^J%}p$(6kfOInc;nd!X7P3~R%)oh({gi0hrONi?y zj3Hz`&}Q^RA&gP%4PiT}KdRzQ5PLq^gyy6=gfF;vhOM$WsvA3mv{+AO)L=*RQFLv|5p$Z{|cySa`s zT27ybE!PSwo4%eFj){uzYj2^!*{uyb!ggx@!cwDQsxt2N1edRO)`!R&8g@i$gQlY& z*UqhtO#-u_e0NlG_Sd^zfcrx(>VrnECousNTa81{06Ap31W?d&Bwc=VBo~LN+0JvW zSq0Dko|@S**Lmhr$VouRyVctw^TrJG--V(&@@wN-a881O!b}JI3?lmB1tBsOEe$oA zE9x`{77+uj~!JVP;ibGcMP?%U!mJNU+?L`ymC?`xfC#Q2AlcY~zNl zsvURU9sWZWJt>Lx2B2Kb!pJgofi}no~;8 z9MNuW3n&j1B4ByViUHiygx0TbfxYXyJ3H2mncuv*!R16Jk{cu*UqYt77v#ruluaA9 zrxno;S>;8D_1*RqWki9BRnM@QqQel~t+f5Px@qe#5PqAVvz6k(B0FQL-Cyb7Sp=fn z7i1=Y_5q>zX7|gY5(!Ba37mIBZ+&-bVXq8R^?PHeN}b>*A9opQR3_Yi1j&=r{(hfm z@l!EuRC?tE~BcBzViV(_XUey z4>qG0LUtU`Wg|U5kJr2*De-VmyF1Flwi6LuwjiZxlg3Pvflbp$&Ypw`Utd>q1p$4v z?fTyGwhOkUHRHLCcSw#djgJXrzt84QcKkI@3|2~fhVRONLnbh6IPv9XfLB^(+{lM* zPr-J+a!A>ws5*mkJuT!3>5k6VZgsb)UI@QYEn1WxykK7vuG?p$ss8!ebydg4Aje4_ zc%C0k43@5*V2Ic*M2hpB_wbM1g03%EUwfW`F6K2VH4aU2g$(l-{*O9^o#Wm6FZqSg5M6R8?Wp8_O^qNk)=@{RJE0#ZG-*#9#WgV~GGj$a1;7!d~ z#@7*H(ECFC%bx%3>SlTZ*pGyDcD|pVIr6OYsK%RQhY;Rqc3##1R;7OfQ2KMvlff^6 z*(74z*^RDY)vPz4KS(f^TCW|c5i>`{qHE-d;wnWUX+9}rt9=KS$Y2VY}ka4L{*8-_J^Y&M^(8+09_Qpjsf&A1G%6&EZ-tzi3We$ z?UUFmhTRaqB(HxwE5M^JcnzsAx1D^VxBi+m2qV;+T~|9o3|q~(X9-=NJ%d+cCCKjo zMMBMgFLoJR80i+9*ulPKd{{&h1sQdD^_FcsKRLdirO-=)eD_ z2=?E3SJSTkm0@w-5~(8euW4DSk~F9m9}1BHs@+%d04~R`HWs#yRLWHOLrIBo_9mPl%wY>vLUauQXPHzE?Jungb6+OH1Bfb&e*Qb z4q}6ysqHOqVG42V?X2UDVxb}jnqn$c%xLWvhYb-9x+yM#*R>Ha#!l}d<{}5YcIs1m z9)~oJ7@K!ZYHydjn|{$wy2mz$_#-aMN}t8X1z&nAq?Gx!lkw>N(wO6y?@&j`IetO_ z5&_p!>woR2v)As73{**g>*+m@8{7={Jjk^ZC5~fZOCcC19Trm=dC`YFI04Gr*u2Xd zCu~LOsP1b6sM?`7Q(4rtBM#%1wmPS>=fTuzA65z~V5h<&TD&(TH@Iefero0l3uH&N z!&>dyDWkXv&I&xln66!w9rrkz`TDv>mf%*Ct#R*Wqutu=it{(dT`K5dJf-W}IlSxI zcD$Y#leBp>uE750GDZrM}U zPDnbxe^Xf;q!^j4V7pzryKtz@q14sm1f@v3(VT${5#{KG+f+rFLT2egNT!BuYwSy4 z5Nh*W2^(mQgbb2m{!ERa5U^=N7JRzxOCR5h!KyZjibH%`j9U=v@{M*6z&e^ZPFUDi zEr51E0%Xx{h&*S{n~=FNx{fQxCGy&7*X|Cl!q{((%J$tIB@o-=X3~^4rX0;@dz(pl z!u3TY^?J7NBAHQ9EJGYvz7gQcPdHqWLeHx*Y|Fbd7a>I@LZl*_I^)c4Y@BVejKi?i z;NfOPjfd=#y4X9rDiW7;E+z|e#_^=DcW)937*{BQimi71Y&#y!H=D)OW1XhFD{ZxM zQR_)wawHil*0Ngc7V4eohjIOGL7fh5@dU29cdw_uwh0lOxaTKydN&dHeQ&cNrPM-J z9=KOoEeXT`?&XBAW)~pmgC0f)w|4Z3~wrAxzKPsal=l^a5uCK*}RUwR@ZPcrpC-^e*)7A^R|NGq_M|Z&IL}Mj_@W^gJcs zEJVQW_JKLEQ*|}3rFZk(rLQ5P2Mx32!rr91&eL@z3QFc8VhzSj6>L2s7M~mpgn7^k zBu8H`&uT7X7dEwBaBX`YkcfONaLrUCQUzlRn&(DN#+(3m%C|Map4ob}Q?qvO>n8S3 zq)QmKGf;`ZttU62#PdVi7vhp%*Y6Inpq-42XlbaB9k~lJ|JO`}VH3xLxJ}o*PXD6n z`mZ{7^6ds7=6~%Zc5VQa#5c@5#`Q(dT)P!DZtnJ_Up-Z^8K4U27Qu3?_C0K$BJ+b2 z{VmJh*5w;Fm#SDl^_T%#N1UqIQtNJK8B%O;$ow<^bjSPFRR;H{ik*$9QpB2Jk0g_h zVzeREsI=$89v5a37&mZLc84KcB{^)c1$CxoheF=HFK|d`a-z2OOX0Y)c5hdZ@^)*fpUF4^VMqG{PJ<9l1w^kIMHQnGB$Xpg4y?#6 zVe?*%glG>W;+~>2+TlL5KI-kYR=cHROpCj&Z-gkvHkdkKmNlf>T0o>Ve zE5JfHr4o&q$ojxH#{eA6__Xv}g+&ImG8`j6k)7b(BnBOI6|v3wawrtWtyYjY`{ z>dJ-x_WS?-{SO7TerMTZ3jYzG`rWvd)&AfAv48(h|K;yy>hHh*+y4J|Z{bpVmMSLs z6NfXOLd{KgW4Dlh%)!2!-P>KceL+QCqFF>R1lyb2AvqTzBvcC-)(zvsD#dtI4=I{D zWb#!zF|au$ji7_BwNt~$H4M?|A+wl5wky$K^KHVgDZa1;2_WR?^~A9j$_QDO6V0;u zH%{>ea||O7tT-x>{~IUWawB)w#l0Wa8>6Cf5d3;4?Q9;18VhTnCx6`g34P$ykR5Nd*^gGj^}I2zG6 zn`~W`0Sw6+kA}9w#WAwfe@4Q#@OMIYsYE3 zcA^X(hf3b*2C(wBkUmVJC$D{})1ZPJL8{^{-H@yZ2y5*IKyddsVWn66X)4J-lF&wG zTP+6=R(W~YU2z!FA;cl++-s-NFb(zYw5~#ZQCd98<_c!lh^Lur~2Y4hc@9~aFYTgQ)l27&uHc&ouJ6~OeA^676 zr4vx8E3ohT>QB>LyXwl;m*_F+wY~(@uN|BDq{9SU?HIF%ROQnUN<7)`b;TNv4~wxs z@yi4?agYTkBjM<;S&6HxBpA=Y8~eeXkB8a*+%yjsviD3mH!lajuYMB^_0Nz8`xa(=B)ozg$(_CN7?bo|fzx7mx zWRL5Hy1J%-K6xaPN@j%ZzAgihp}l5{j{+1D_r}%IyoG`7mSPwwVw0g#iFVDD`N`mi z+~%xw=SPgGXN)~z_RHE`SSFub(T$<>2`$=+!bS#?yVn(991NJ18IT@d zs{+-nOW31g#5B&3ZM~{VQj6;-C&JSdG2h5h>2-aHCJ=v7E%AVgncLh!ma7hVrBuu) z38ywF9^Q9dL%w%eO-SEhoP89D$jF8XTd6B-#w<&6F`5ma8zsFjWVNSg+^4W8K-dXM z80*ZS#JP%#HUNR(UJtTdR7gporlly_q%^GZju5tDtPx`QhRkFhVh*p}_-$0mUN$OL z(M>uv)&%RR0*cYRoh|CVY5-j=^woO8&KU7P*3-J$q528RBy}`2X}pn8q%s z$ubl}1OglSw0m4O;cw5-slx9+(q(2FtgvT9A`3bK&?_fgJk8@EB7^Lsb){J9sMs(K zid2-(AJvs3B}|uV(T<>=U6sg{+B&Mtf&{EPD{oL#WY04jUHa4WUI`zFYuD z365xooFVK4lB{9o(l;ykCSD4=yB|hXTnBRAR7lmxnL4{{^V)S(Z067MKJ~PFZV{0v zH_AoyYDU6;a!Yg=m%+NVWxIH_RsfMxZ)@vULlOn^_qH|BQYCJf+NZS=*lLX8h+b}p zuvTLf>Pv061nIw640cx&Kx8ScID~L)mMr}OCJ^24aan}(R>SOtvl&a+)s7?Y<+3&V z%uhe4d=cFh{}~Lz_@>Q}a+XacOoZz?cR`<*fq0kqdb^Jo@{4bz zUEc}euTBg6DHrs<^@z*6?vI3G;E>*Sj7vz%s|@pP`An;_=;;PjWJB*0QpH0^A0=&I zwR?T7mTSmDjHp=u*V8=DfTaIxCbqDy*e@p8b^Q|!buJ`i0YesCG7n7sGp=mx-5eV> zl6_9Gsd88^6Rmt(0wScdTy@Kl%G^N2BdU{?rBWZnA7W08N0KUD4j{xs49=EFJDE73L^*`4_TBYWU;90OKH`O zo&6q{O~V|U^A+le>G1h4IP$oYI$vtrX4rX5M7;lA1|#k8FvRiA7BegN+2!K==Tfj? za}DAi^11=Ul(->8Lj56mj15!FO?+Z~IR(~K3BYt5ve`CEw;#|XYYApKY3rcjszSPNg9a$zD<=MkmJ4PV#(JpAC`GmWY#nuW^(Jqw zY$34|%!qJ$OKJ!!<%YN!B^EMnQD*JT>yCl-cDWu6(^e^y6%~KAm$4CxK7Z?AXSZ!Y$l930{Jact*iN)s8)oSBZY(DOrIv04Hf`); zMLQL6<0Pf)%lxE+8x=FDwTe&aq>!!^9}v4;Gs*Z?!6X*DAJGyFA#4T9soA0>A(r(u z>uW%3R!B7>1w|*hSxYx=apz;ssvaiI%5LS`>~Uq+wOcXlkm9C8&KxoBT@!TJuH?{; zr=0{U<+e==DOwRwLc5NHvu?-0Vx(cW=v4LBdExw;;h9(ruYDUEHn%jaOD3b*=?ehC znM4YhrPCI=VuHHrTwq=8OE~MikmeS+qVpju--rp?R86LKLPw*rK24@^@9;4yXX0;F zx~^n29jdrBD0x`l9SGS9+=jxvJ7?X(&B8~b;`!Q$1l{KGhP?=WyG^LP{`LSnt#zz` z;#@d13Ilq00$qHh9kyEi5MuviinK~E!K>^ndQZbIRqKZBKB5pMJ3XJvfaBMb!A288 zR@csU$fP}NI^QN*@}!=YQbVJ#1P3mW>jp=q33af`p& zcg@I)8|dB1nrt`6HwhKGCGEQ=b<1aB#`6}Wx!Oz-xg!#0e@GXP*G$CV6pqJLH4sJy zp1gPcQRBuUw=oQJz6wOp?^BGcV%b>EtExAu(;eD@B%xar%~BrR|LEKh^2OWI5eL)eTugRF)=M(m!m1~166 zV;N!Pu7@l>1>pgF8}zT$(%kd7M92D~ zLTw_W+7+4FsbRl%EQ4#Ow_8r{cMb$IYajldtrt%X@8pDg9- zN>H)RZ{#95aVumWKQsd8vW{DYJ6K4WL+ z!b&(ARWXunY)B?o$UP3A?0M6|Mcqk)HA^7!VtMG-cU9XVTtE1f{ACmL%n(bbeuxF^>EwjxEi)fEuIyvAXU+bvj zBtduazpi_MAq(h4(*<@zzAtSxlLxJs>clV6+9C)%q}CsH+zLy>HU^$tGY(OH@sJ5p zj3r<6-o@HwUB_(Z=h|%$h2Kb?A-g3jns)5X0kPhq7x<~LqUZ5n){`vHLzdV;BOCU$ zd*&HzfdTFK3hf2RDd)`XE+K)CYTr0lWe4IC-7qcH4M2A2hG~VHszN4DXy6Pt?goh# zUNgeuh-3|qG1&X9dGV2NkXP{&REV#a6HI8WLY}qHsr-om-(c-U+W5~d?qBU)MGpCBCi0LrE{2fWjIVLLxE zY$g+A*LDn+zy7?c859KQH_OtT1(rx1P5AjY<&p zz4AA3V*O~8$KGbN!3FC##jD!wZODbTEIyFH-}}*_N5l6xkyKQo+&ZcW(6w7-PDn>N zhn$BB!9KGpD7S7YYqL>S_oZ?__fa__Pta|58YWMdO@=Xzn)XsG3q>s6pJ8Z=xd%jF zMf(l89pX`?fI(Kb?SQ|PT^vz{UI^=@*Qx6^OyI#-hB|L4JFG$AF`rIbu|-ZO+Vf|0qT)AbSMa*9WbGQu5CN7$x?*DpvwzPM z1zgTsJLXKYQc7SO60#$0A>j2SbMjdYY=v}DQJHNKR9)dSWCzM>_l-ad=cnB{KH7D* zqUSkERDL()Sq;)~ucJ3Dh|ZksabMg)NE=O8SnH8m6c_%Ye~Awc{SiR5=(fD)|JmYniN(sW!G)f<1MNIPFxSEUNfYk z9?KlIZ-j((x9_!^O$#YVF=VH_(1^WklW3O!t}Cp|q6^py0`7)gK(4{I`^)k~w89z9 zjFt*<3$$Z-F-IaGp%CKrECb|SjRceHc(S<*vZA_ROdKDV0qnHf$s(TPsW5Z9t{eck zW*unQ?8^>D$=;uok7&CXlpY?@iu@z$ z?uH@zJYI;n@|K{ohV11(i!jqW1alu(nGFWoTZP!&W&k2#)d(u>$58+w;jbrI`Y>U8 zBsi*t?@w058RCu>;mi=nCEmu<{9%RPYsOx)5u&<67Oc7J{MM7eLjod3Yvo`IYlg^C zn97FKC3Yc|4Q$Y|=97}GYO~a~Tf<%YI?M*ax{!VCF-xkf@F7!skP2k$3)QZmi|Tet z?JU@=D^lTl5)~U_dmL97!^PqmcdPboROcf?7A*)_IT2w{K z%?1-EqH6yQJA2Ql_U-4Wc2^!6HQPt?Q?>&0z_qix(r>xB8GPEk6cdC?e#loPld^3d zP~CAjR?IH986ujlCn{uzgV9L7pLYveF+dpR9hC^t%|ZsQ_oK0PYj`wWz|i}_=E#Nh z#fl*-!Wr_JiRBj?LEqhb)(>6uuwJxwo7hp6PaQI$Sv%M4?Rh-VTY17tInWX;u*qKn zpo_lS+ES!VDAuKKhKO-L(Sn;_SG@0=&|KIF3I5p0C>F~Jn;q(FP|iM|D?lXeqmD2I zW@qZi`Q4F%%klhR&vK;qeIdxHG%O4R@KVU(dy6!+`2%~U9Kh3z$vKng9 zp2RSyYtS0KKzj1LM5wyRaR&Wntg`FT4$vh=i zsGUUao&B6WU~2diiBvzP4E>i7(Ul*!MMBJUEAQuGv^AqShMa*iB;ys$gmkmcPMFad z)~%ewmh*%tmx}XH?IzifhEOC6)BrKkW#P?5E3 zZ^dXzC+-c)DmerlA|KWy7vUV+a*`(D3f9o%4FR-x&!73*D=~-MQ4@%WQIimjT)iD$ zYUnIJ*i9eiT{0@FS*pe^5tKqSfP`dkBTjVcPqCOSJnr9J`B9Nx$LY)Z0C=I-jI=%7 zK9&A>eXsIjLGgxi%w9L$JP}j|%#Yr#xK=%7vzn&>x#&X-X}}$dMnWgysP*JVkt13n zv1aP78l%l*QPxiSAkJ@l*#h@8har>r3Ah>spGJ^;`LM|Y z$c}PFwTKWJr`eJjJlUTPX(Kd)^8gY8UUVr|u-HZ()s}ao$vsikbFNDT!^jK=SoNSZcS; z7`flH*tw5N%yv}j0)(Kn+il{tyZc!}n(|w86(G0MRxWyY(0sV+`9?qnUN+je$aGpXIe z{W^CbH9ia}!w%`(v=x9<+*?BW)3cILF(a<8&I_&G4zg=!X>Lbw4B~Z26Wusl`$_c1o^KIC^{gjXV7+#g z39nuEB3wI4rCq6=yCl|boSUJr1;;^l^(YiQ-FJQLwq@?M>VtbCZxS|@8wi6r2qjGe3J=CDUVlE(;+)5bQ^&XxVKa3-Q(i>MXuy6 z?t6{4#;yv|j(d8uVgsFICbp^WZ7F_fygCoOMM!>;8X<0gJvC={%C^HO>U{aAcKgqS zg;`ur?mj&lA%IWrIYiz#iJ461YquT53|W~`J>3@0d{KaNJMU_U5?J3XC`-BCrJh=K z<6LqWjf>>Jaqj$V&r^MSqoNvm8(U&`uWNUQc0xYpq;PhFTG;NjK(+HiYbP?X_uKuy zLzH+tE|USh&bvq|-dMD41L#O`2;=)CwCFxXcbtD4)<5pv8C0}cTn@QVcc#>~o+-c( z$I~w;lL_}3wCsP}T6>&v!8{Cxo8xCNhH zqwKIqEZ8l<^35Uc4tq4+QraLB#8aCMiD?}o9&@uK&v7==uWr_yFE_Q5p!FsmnhC`D zf{8{nbP-WI#r;Qufje~sVFY5>Zg`);Q(RW)!XRAxd}lEfc&jYNuMjnY@qvWxWNXOM zE|3a3uNm*{x^hezlR?CWZqH)r8^GJ2^RO1R zLABzY`Xa2-3JwG=4->Mh8X;Vr79k1otd~kwipYj7)@dRW0?&EHI^qIpOs?ALBNGBkZD_nzjqoHLIJn`?$2u9@w8&30_IuGQ8}{CJ!L0yj!U zG&jnsv8*R4CyKns@v7QIkZv}+=kb-}19nl0vq8;J8?qa%Ld?Yglb@6fs`zVIj(Lcp zo$FjC*9wQ6^FZ1&urCg}A#K%CFe0htPC z$#te}uL9xnpDm-HVO6zZ6~RXJpF1=d6^Y&y#}Z6~wX2k;=b4RSv+Mo7qiQzz3`3N# zHi9c0Tu)-d7vCY9RiKQj3n8~Bd2w;97hZb5-TjNoyeOtwqck^J%&)&Jis=bE+Mumi za|~hy&K&il8#6+%==IMJzr`{7iy-OXqA9p;SCh0jJGJGl?dn^=j_UN%?asG0)Zb0% z3YZ&wX(St|l*nG@%cMXg49^0%o4hOyFFh{yuw8Qs;r6yke&`7wDBM2t;&OmMfO?#M+m9W zi-atg(d2BFYRCRKMik9y&%%;`xTn4Ab?wUKgCXqhgjBxWrwggH`nI{|N+J>(Psw_M@^XjHpbCtL0`P+?VknbnrcI zTw?$Im>Pm^JxlGb<7D>!vuHQ}|*v*;S}#S7dVv#B?gd4PkkHXSaxI zq-jA^MMDRW8Fs9Q<=p}u5<^3r0~m+xn+d&4ST_K#-9GuIl)fuE_Ov3UqIq%C8ER5y zD@-6*vPbDzCgv^)on%=dvF|u2Q+jgcETE2On2>1HYTSojM7pyqK)m)0!$R08IS3=L zR}r0FTr;Ft7GBv$BChYMc`bt1e1c6yO~R;?N)21bT}W7?!bNFtn0S*(hwv2cVGGNI z$lRXDJh|%LVRdguL(9Y{`IdPnPCw8LwjqS>ZT=bd6)*KP=Gwn;)Io%P4+HFM2E?}R z%~*X^7e%8A?2I2+b);d8gH|BdxmzP3jJ${J`>_xipIb^)3uD3fM|Pcd%wjwi!rwY% zE=365eZzEUpoxO0MiD=`S#gOOu3tyb z1V!{S%$-;btEBnNdsm@3E^gh5ZZw^eeF{nAq!Vei?1>|0he$OQ4(^FuH`vH zp3T6I^1cdNHUZwX=}$nE%-`F-4aXQ;6256#`6e|(#ht9$(flbM8*WRxlxTxAJ&Vz| zlq>RtsJ*+D6RmDhAnY2?Yoneg6Gn?~qcSX-g0$$ko2=cL8pxa^%~blFT(CZ?nVY)E zHb%rVjhTs7VJvU!RaS!x(a{&9;MuheNz$2ZCPBofL6w7=q%d!JG!7+ZNZ%T?`;0iu z<#BO}cgVIKa^J+-8K5{94eD`oiP4D zLz>xExoLQsyla||qk{i(vH%h-2xR!Ntb{MkWS<5TCb@~%-Si0+XDVHw3CmG%u` zDQ~xG*HoWa_GIu@?mB?$GyCV8=qD|VT6hb8On@roNkFT|&6^#^sfJsm# zCOANIm$!|o5rf>dZ4kozL?_R;6l(1R?5~~TpX=#va_4e{Je`;jot#$~pRX1G zRW%4>{G1%VpEoekL((h_vvh9$Ud_6i3Lw7MY}R*^BCvht1HsVw&}(%^ej8-R3Daj{ zD@|PzkC`?Nw~vZL#F{@Fj=%Ke6bo-uo5Pk${G?rleAoCuDhKFsrf|X4u~<%N0%%GH zvRkeKHfw^{`AFBw#y_TCs63jnmw8~ydsqGD#*>ce+}pq{p~r>^Aip8*hFpkuJQeTA zWxQ0HOuVtDVWO<^FgMdZh3<^!kk6`Jg&qodsGCR(x;tlJ%z=coiQEkF(RRcfAR^fy zAukALO&n8eko>kR?pEod_aO^zLDbMEcpyppTQ||18&Z`OHKPI_&~4;HE~Zl8+=5&) z1r0@BhFv>Cp}7rtJ$bprh_(I~9?M%DiICEv)H8Y#d3W3lD$NXm=7Z#LB>+U+P+J*}Wn zJD&dyz@@auU&Vmd?O4NA7t%=VrXu+mf>e+KwUWLSlk5 zz}C|Yu$g6j9H9_bJ6gj(7oO@<2=xUiKfJ#&*APNxfYf!NDN?5+g@&LJ>+=MkbcCUY za2?l-fpHx{PW5~#pQCE3FxwJ~Av+mhb1s@4un#f@BvaqxGL9w-`r74k9*HNkaY-`f&1i4k=9xL@*PvqFKIA8Q4UkUdkTJg5E6mW?vc*mz|A$`pt z9w_Eth+5y4J_#nqe9{_{$rYkp^q%$;v5}|fv9^si-s&rY(Tm*<=T0> zHM=8wnz3fvNOlJ2a!=zh+$eWG_|0CYS7hq3wpX~>OQnbGGeCN>$Yu|+OOUP|p9Kqr zWh>WCu$KG@DQFt9n^yu#)?PDlm+M^V zC2yihqek*oZIDhEc@WKF=WRVxg;~UP-%U5IJC(JXg|K3KLw1)#NO6)OD<2IpvrqNz zvW!7bW1n?D8!6R)ZlP~-TfLf%q0(vTp@5RT%|SXXhJxAlEhwbT z9#EA@fTd=(L)`sxPqU-vIfU(w`4pHhtsQ6VCc%)iYcLf1s;AlF5~asu3DN1jZ!&4I zbhu_!Jd9WK@@|wwbZl438;3N#eoFgJHPJu!v342ERT`wO_K5^CRb5L$f!JE&-oX0%v$j3UFD^=&Drn_omjN0`D&U%-aIx14Fw}WIRA#pJNNcep- zKf)?(iAcc%vp7VE=#ZUf2+7Ke#)jRbhpp5)Y-yN~3uQxSs`aFhtlb}iZEl!%yFysD zx@Kh74S@Z0vt+~Gys7oTQrFelU_FkdR=fL{u8s(+dp!|`d)%MnwtF0oxH%^Y&$duC z{$99rzK(u1qdwybOULQLbrNUKxZ;Pl9fUn)0XHlc8?zD~TJId{qmuq4 zU_-jvqQ1*cJw|BRLzGU8M&S5nSK8+BYe}(a0N-4C_3KHt5Hn?%qxksZ-5Sak8&>wZpfX)BwSS=JOk) z>b{>a2Lx{JRE?wsM38p?Cz?gwA*9+jPFXC9mh4n8^Tuf(YiF@PW)WbmC)4^)Ecl+t zGu0}iVgwU{VO8JG2Em?(tY|%}q)ReJW9IBp$V&j#uJBHn6B=K;ssF5?ucve9Az36X zsdinQv39FZ4B5xR^(5GNJ<%lj44G;d&qhT|cte=@>5b|>au_lxfdeiBmL|FFQO2@s z%+XLc@e9Nt^g}5vegL@-i-x@G=E7bq$f2Mf2G|WVh`g;+ijXdVT1R3Av+ToeqEK~q zbySyZNlg-OLv|Rio&>%VTqPq}sg22KubG)R`6>t*=c8GXS~TyzAPUSe%~l<6@GfRY zz$R=!mrn(pK!S7-G`&Ycw;3P>D=iDmZg^dhP0Yfmvd>XzpE+4iukT%odhMiB9#!|} zk7~80+L`h5H+Uzvt?=5X{;Pai@6?oq(YvJ5A(aCR*zqkLG1|zV4T|QyuCl=+QX}$! z%ipq__e}%M=#1}amgA`Q3GLc-f55h*%=^8ay?@Ua{&`FvT}nsJ{0yv1aDtc(qoF0Ng=(x0M2 z*N@0&qC)`MlD5Sq|eFClp;HvS+^9W$kuJL(+B!06dLEc+&n1z)YV5 z7+)9X;YXD0s4Ift2Ibt$344RPVc!W`H0v?WVKMETPZ)E};U(+Rl$hRz6k5_wnR>xr3r2v6#s=gW|vf+cQ} z+snLqJrY?G^5#w=?sSl=>tY==;z&<*E%JESiFO&>8-NXVR))~r4Scbc#3KV~a;C24 z#Dy%{x&ch^LE_MLUCriemk)(V1 zsb;?#IcNG*Pt(u^_i`EvE3F#!o+vCeX%se*tUEd-IaY?_#?F3dSdmQfuyfw|zhTeJ zFlHWo$j(3Mhz0rD6L#`!hr1&%5x!=d3zHci2vbhU`FnRI7psS?NN^7dgr)okR>PCEkaz zrgYa14-Q!YaL7yDqmuu)+2dF)CKI-AHbmF`JhkKlM@4CE=!HPD=>d{bXUV~m>S1aH z;uzu8WnCePTe4zgd@3lLo$+pd?E7IS@G~o`VuE0S9>)|cv=G8*Is_-&(o}5K(KJ+e zt`{uCJX;Pz@b|qm;T_~ad+ao!{d6|E=Ixou_+R(VpZqI&>= zoa;u-#xbw?*~MWE;IsW~^LQu0)U|fnsZB{1csT*M_cYWw&#udp+N5;SK0C{d z*HM|>G^(yL{+QljcRUzEi5wN%F z%M8VOSNwU;cYW`@9A$FS(8q?qQF1t&f>vx2D=+2^K#Xy3D=zz*m5aZ}-7VoY%lGYZ za&1TDfJFS9<@ijBovvS3T|CmmL{-`uS*6buaj5=UDb~5Qlrudo%$8bg(F&aLtDPTl z9Hg5%>WLn?wG@c@Ci8h_)f$X1QLR`h;el3hNA z-kCT^@FO7eCAt#y0HiZ6fIE>JZ(D$aOQkOY2%R1cr& zSM}+6kMu-0lLU$8HKu&IiHijOMwu=y>g}|Q#QEpB5qSB+6h&L4c5b<8<|LsCv~ACK zHeg6vy|*)k74RQ6O=HFcFTb8n#(3QKyyyIvx}3XVRGnc?W3XQ9$;cC(A^&WKu!NK% z0jaIWh|P7zi77hk-m?prpZIfc-WhWC-paHM)=qm|%|*5p)sfiGu^u1bUh=NL}ar>~t;k*D)T3$JrCb)JE$f<|eM7yH*Y`F|q9EO!FB=Sha& zyo=(b$syX77|^sFmx~T2DwZv?c+zbRSH-;o328 zt{uPQ+Bq0;5|3EFIWNuKi7D-zcS!~-#O+cs)9M>)S4mbx0;NYJ z(33bXh&o3LZ&ku}!{p*!=YQ$0oKaDU>qxpk=B!>|W{r03scW~0vZs;H*NjE`WM}t? z)aCi{!~-ar9tk6Ml}s)>U(>huNV_9EnS#>#xmwoq8p zE{dt*y)KgJ5G3(=2*bfVRDLs0q>`*=FOr|#psJ%ah85qbBWav#<}#{0+3Fx>H&uY( zjhl6a54)pJJ7-JdDM_P!Cj%m+SWgh=*4MY`Io^Qf8umP?sYJp*QSA`z`rfB*(Wu2b zk%V=XMQDd(8KT=qv2)c7VKHITrv~cQkaE5W6?Jy@ z{D*KwUpq7WsFumo&WjxHrK8uAiqG3K_S(%=XSQa;?j>$ie531W$C4XCT(uFzRc9Cc zjq8kK~|p|@Lq%iX7vL0p^A|ZaQ7%l(VG%>C|*QWAn$s<0dje7fXnRF zD!-*2X@Qwex0pE>X(QO)D5^d@Hl*+IdRfjs4`>K2J}!f?T&|t65jzWV-we@{+Dx^4CeK(h&623>FS0UBD8$;p+9pG`UqW_rBbueP098ZWYDw3nMzVg2YmR6Po$d2= zL}0FKd*paSS4&W9cVAShUDv+Ulk%zNe2(|EfeaC(%&dm z^52+5eQ%U{Q4SVwg1YgZKF9(Sh->O6xiD(8#Z<`8D$A(uRX2r$eJqd(Da*##2L z2Z9xxh!s@&ohBgV9uiBvpCtf2oJ!-M;ffj*e?26gfXD^MmpaXD9#TBJc6-pH`t-Ai zIC-JnK4vhQ1oIGu?O(eNY!1uUh)Ut}Q8}%gzJ|~k>j?+l)2iuRD^^xK&l=o~3ZBNG z-;0q>+nSJ8^x7G3W3qp`fTeb(x2Hi0U4+n?x9bEB&QMG-z70%8JcTNye?9FeeC=jZ z*HhPK-1Ej~*E?ld?+%~d<5GPC7ILkbi`3pq5;IXX$$}?d=4Z&uOI9YVJjEfF_Yp2YqtfZ zN0)Mj{Cn5F(ynIuu3O#^+O+1b5}BG|ibiQ&Qgk8axn@O!E)og5Q?@WJ5|{UHiWv7f z-#DYo(nEHVGmcW;SBno#{c?wll0*MLS{~Db+w5A z(zsUakBZN)89CI`GLmMTm@!Iwh;&d-yE()b;sE5*H50qK1zy5yL>)7s0fyB~slhu(L!5(ez$~tY`Fwrh5 zG`ZD^C+VG#&Z=!@=;3J;Z{!S06R*?N2SM)67g;~ z_dEgLHe;IO z0CBqJv)!>o{F;AIBncIj7y}`1twYpm#AH1LP5UF)C^yLF6FWJ^^DVs8WjbKCG-)7~ zHX4TB&k|(bL`8NqPA`h-4ynd8M4*jbhejyG#zL&3yaleX35$SknzF!~ z6xbq+O=h9?AviD&aib+<`E3Z1Pd;ph`Tc=&re+aN_@ z4hyCd%@gRuq=fXP zxVlLW$yW#|ZLkq6lpXS%R6|(k6C}Xi%s_0OS`pq^>b-6mhLDV`dpq;fgl1%IHxy}| z@PX{(g4)T`9gR@)g$Z&k=G`*bcCHo`L;I%J`rX^zC$sb|1oq9QSFbO|;6CZ0om$Km zA@gvI-m$M4^~KQ0mK&$j70p30vwJ&xpw|;!*#*-&Vzf4KohYHVui4!R5SHp}5-xZT zc@7j?XAw6D{d14Y{>k-%3E4c$<~BQ1eu_v(yScV{@>c>^=V$oy89PM1$7Kp~AgxcQ zLC_dT8`~7dSPj!u@5&m|RIA)rNaX{`SN31h4YD9e$c05hno2-761|T0Ey1w!bt9U- zgmgyhx~`Z64cFC9GbmI$P!U#9+>obUF6$A=N`jH>!i9UBt4w;kDY*8Ar8Zs@mtL@U zmB*OMZ8FHaATUhSR=bpCo&e;SCsSk7+d7+_sS^RBX?07zW5Jra@ukN>P#jee)FBHB zM$=7o4b$RpqCnE>UKg+>Ac>dv30UoGt=O?Zv?E< z^;OvYhV*ui(E2@J?ZEA)-S>3OI0pAPneTg?JIRj9agNLm>ZMC&8&V0uYj*YHLHj^9 zqUGQtdR7}G^)#eqjprz)%KwJ#ve%F^O0~Nf9^|asT+_EMu<37eKLfOqra3(Ur4sam zO-?qftm{UJ)8dqRT7U-?ju~(XsF(mq)=U|jt_IgLo3Ik{N$Cw z%D6dXmX9I%-|LC8zt`n)HcV8zG~bW}DqE-ez6Ibgo&f_QMGe8uQqW}HAo;En+2@3C zp9(XCP#K>DlNK375VV#&!48^6w5w4A&UTpgJB`~(#pVQ*Oskc+*gf8@Qa5UM*qqYz zgxg@8JRS~)qgu1PYA1|#Ps1?xZYv`}!Z!Vy5mxsmDg{ol?L&rjr0TTLDv?@xdPr)e zwIo6r6o>8jSICTs8s*IrtN5l8c0vXf zL-u;=V!ZXf>j3MiYR?<-qo7z z^D7~JmhZn06OhKiVdY33)k8AchU}0Q8q*gG57Vh(!5HI*?A%L;J4z2(fdGUpo*1j0 zu#}|_E8ae&V$~4)_76icfJd{^?`y|+vpT34#n+A;wK^dc-q#aX$;3l!-qCxqFNiVI`O+7U3} z=-!yuuna{=2a-crWsQoTRbk(?Q!ClnVR1)Pj&)q`-Om$%A(}cQRh-tWI98Q0`6Wi}`)-h8apj7FPzYW;O)k;vG4>zpXE{C~1LEKra zJPilo*#7O1Vk98~fyw-BBahy8tKM;Y#)wz+W((R{acu9ffa-#Z%^hTSeMDnhe|-t- zTwj?ZM>Rc=%-N{c_mfKrnl}b+<4FpIgWeF;;`|d8hBst&a3Ob7c$mPZHw^30@sP^_ zk#l!LaMC8NrjKo+WK;KIJuaD+*P9u-OUgw%;n z#lcgMXfpk;8NTOE1a(_g9mxqA_z~gPY zio`U-dgqI;_kBTg2+^{h%H{-k`x^jH>=+7m(F$H~4#=o>je^c)-|lfw`%=0&ztJ$< zuBXMvhEyWmu$@sjQKRG}hK5{SUR0}L3SzEIYH_uX$cWl?mS?vPpz%GFZ;*ZcWL;sS z>s+1jhgih5+xgzw9dcnqe=V=Z(`_7mY|9icx6jnic(5hGZl0OQo ztDqeu2v`klNCIOd>GIKF$*-&Kq#hQR9@RFU>|AnTNOuoL6OX?UbT)L*K038AWzQl~ zasQg_!%!h5-)ooeRPZaTBMn2AWrQ>Z1Gx5Mdr{A`xVZE=&^2S&WUNAV8Yg65t%LkA zn73WyxpLiKIUh3T2X6!=-V+b3i|4jG zoHk^|Ll-63DZZ#=nok@Ns3-lX_7f0zyZ5C~-O90%lOoKvVUlwNK?ta2L{Jga*Y3*Q zLOSi*8`GlF5a6Czg_1>?;$CX2s8mL7BSUjSv%dkE8}pKHb* z+@*zKmGy-Kn6NYK z#FM*`ABaeIDQ9jfE{QbZF{(q#3Ed@8xnO6&@(>$j?de7AnlpiS8 zLaqG?UAHbYWHRRh0u|6C>3uVAM)ZH^_rLxAzkmNjH8a1fuEYcWBLMh2FXsRI<8S}> zf9&7?(|`FpIsNzF|84*OdkjyD?Hdl=tYq2BA%T{#+0{zhbDMwM9iocQZh}@B!NL%Pvq`XmGD6si0I!L(PI9GExtZQlzk=T!Dm%oQBfuR{C zeInZqJGO$^sWrR$RYZ=WrD+nl)rmsP*U8Ilv>Z{Glta=HG7SYGqHZ>oyWKqPa|$;~ zX2H7R%iL1A%NM)4cx|6}sGkNBz<)kvn_x)!z&d2OA(ie85G=gKlZv7)!o&FDish?nR(5e%)3FRJ9ZZW%uQxT zv?Iw;?WSVQR64g*qq$+imLXqXD_@yZr9~i)6~u>-B`QK*Nm}JHsn%Gd(&{R9av~F% zVRU(bEVl?#K*snXDY1|eGNw1Gg+F18VG}ikff5y7vry})TX;fx?zQu{M}_|*l5b3i z;NKW)h{B3POy<|Ds8>Ygw<5ZtJiA3{+KpS?`N;w)ta&@A45iL#I|;6}%YV@mWY#Jg zw~QW*65eg&#vf&~fQQE*q84HIw2?B%0ox)PwwD z=6nS-C%DTj>mb`_$KD$P=d>!@RE)|25l6joVK1m&`OfCJB*26zqE=zlrw<4Sx6Qm=}jR7y;y?{1onju61^%D|#$swyHOOG;jG4{+@|>v&4?RF}(z~Y*Y6cL{&=M(`1{JRo?C-e>PKc zNxLq^8iUfGWs)Y6T6G5e5XVXMgvp)*ZLSq~tSe^8EejR^T|lD0J5IdgL^_gTeF&v+ zqm({Q+&5 zAFwD|@KRDU&vf+FaS&4{3Y?iZ=d~o&8>GjzIpfc1SnU|@>xndbqkLB`qO$f6E4*7f zcI@@e`G{2^yNsp@cvp(Rc+w}cBx6&~G9lJgv4*L5@G!<@anhHbG2Hta#D2Q!8+)IdPN| zUAyXC6GyI~yPn)7-b5vFX774lvF66f#@aC(?YL=ii+@yNxA$|ZD!ya8^XvD1?oRsJ zF(gm%i(N&1sbVD+{GVx|?=L$8ykAy74R)GhFH~jOTWB$Y+iLu7sShzI(C@Qa*zvb85qc zRqV1QF5$b*|4}Wt4|)~3Jt3WPpKvd>&aAH4&kbSEGf6ZxyKQf}^i*?8T#dRJR)%uA z*%n(xui0CXUb-<8ZmdT><*UU)-+X#ebKy_^*fy+ zobz-%(vPL|nYI2#FvdHx+lpTCQQ4?t18LE-60P6Ly)+Z$ZcLDUf)8TU37}{u&*{jo z*j-oWoS333tA;S(jB*?ER$T$=v0~MDk2ie4=u>+$+q}yKFU;Yw{!Q?D+63RU3psQ1 zoS6|ybyx3inM5MR6MBxUKW$X(xFrj@+IdL)9D?O;LkJ8nKM;0C%0kTbE|$_`*7p>2 z$ootfacy;v%8{ot!7%W&7CPQdqOst3n=&LZc6}xFAR+;`nLTkcAI6g&m3jvA1=+6I zNlA>>jW@a9i2$`?#kN3h^sG@OW^E)0>$R;_Xp+?t^QGW<~zY&<-9mzx^&-Nx|#a=aI{5GiMOp6}UamSE5 zIU4eLWMOS@OL(pTpxJ4sslYj_!KDa^T>nH(?Q#BbryRlxxa@J|Afn0zX^{4QtS`<< zwY*Wf!X-sl<>{LgUtDfdAnoJY3G|%kT+rZ_d^HQ}tE_HRPA3<^sQ2Oy5c!;Y9&_i0 zSyo|g8}fIfq{Si$-ZFIJz2#Fe^8XWdFS)uVN0y%Z90g~fB!fv7+ZusdH2^_^8ifL+ zoIjxFUFP48H~|Pk0?F9xnEU4!bGy6$jjF&bq_8^^?`UY7m^Ew^7ZMGCM}0zN8UR3p#N(AVww^RNGL)#kWDCUi8s zqZ2f^M?D|DAeQmh+9|znEg@MX69ze9Ly(-r*iC#iOx0Q?u%-pmw@*C!Ml6u6%o;f! zk3)l`Y@RGEniSGQRmbzs3ReF>s!h;3t?{5Wxhh7ip3B$TdfDKE!C41_zc?%BmD_L84`J)Lf5`o_f9j;Y&ZU=-G7 z<2pkVhV*RCLkGtv(>p|a% zLpJltC(~?wGbQ>y$pRuy1es?f8+5Jun8nNp$;c(incftOB76D{6cp*vK z+Od5Ee6kTLgSb_3Apv`3NqkkQq^vy&*{{H8C(vszA^hSWJtk+NudY_YGFnrdv0?A~ z>_w%Jg<(R(ozP5OKAQJ735=ZMP}Em8b5wMr{R_Fpv(taH;EdgiP|>X#(HsTg@2Xhp zH{k=rcy~PJ!2m=LjyVbBCLN;L$H7UKVe@k^=dOjWqn?QNL z-_tOu(_;J=>yb!JyoS9+mr`hYnR7EX?dipo``nGv0iGFa1l*S9k_ld+Dn#t&EEv&| zvmOK_&PFAJPcK*lzfH1s0>=$=nU{7Q4MTrDk%Zs(#B~xtozlmkVuH5|Y};c-nlNUx zduL^AR8sb1GDi6so8qcR#aijO{h2vq*>tKic+0TRYL&%IozBw4*Z!m-PI?J4opKiH ziCL^hmv>G%@3{mJJ(T5Pcozce!~M>~?6dc+k`&_uYkf()>hX}R zv9m8Ow!T!MHtv`t9eV97@-R}QHLmyh)5)5JJ|H`y+PM*Srg~Q1B3_tT#9{4zbefcL z`;MkJtoxpgIk}%pF{_k#7Zcs66q%pq<2Kz0)Ht?O6?zY#>RdMLh^$$1 z$^NHTRbD^A~1478crJKRXZw*PWl|38YrXdjXBzQkJZ|&ES~YSQrkuxq7s<~%Eo#f(Pcw0^i#uh^*$$pw$MgH=mu@=?uHgbo$FhKWnLj{wEJ8k zwEZH2DHk`WT4$BTh}5dI<|1nIl_3I-$Js)agoaTXZiPcpF@EiR8duznV*%N{7f7@% zinU&u6$ty^*LE2RAdzvk#x&~nLtkfV*Nmb#ozMQ+-`P!lE6aUAMQH;%SNAOqFap^*I|Wyn282dJ)~4d|Ti5Ww=jhI|arC7l8N636<<9J#MC zcyCNDTs%OHdQ|-^WLT}%e`H$bbk~9w3!>E#_)#eAxAxFVw&8P{wUyp+cYTtG% zRd3J^U^TSSh?n+pC%Ks6wL3KhTTbre5KAel{jzq*+zfz_$obzEr{al-cs_aUrnt)z zAyolSnB3c7A!gg>s;K(f_2f(lGq_Vh6G>O;DLIqA>wCL{ipuETnA~b>x&2!Pc|=OH z4q**GnOEREn~e@!65JYaOiwGitI_9(mud&2*>xj;Fw|LyjLcn2wQujTBRwrYI5zQ) zW!4yESN702gr6lM;@*C%2I`lkqavbPCu`qJ3?Z%vcIHW=e!=t9c|R6ADzz~em0%{t zyv|xzZE7cSP*0_b>|(1~__CjNhvAIY+#>cHiy=(5*nmD?*YW~Y?p(9?!vxY-m6*2) z&T#{P5OOx5Vu8Y5A-%j%ttjMa6SbOWf+brBwrkmeXng!^b9=b@ zMHpr{=EF_x7mlH2#8zq6#7FvyJup+XjEhr@Kf5>i^ zVi@W0uN^x*f4$RmQ`z;Q{_fG-TJaO_NU&aGjxdFt$HXoX#KaK)&)1x;@)bkMm4C=< z=as;=>ZsQ4YR86b+ga&+&e2o=yFD<4-5fC&HB{g2Pf4p|M>_uwSKC(98jFf?H!esy z^&ykke+0@vHJv|V?b(q1=4#xZwKt?4sw38PQNCfTO$p0m4-rZ_DzT9k9U?%mc2?+w z6D$F{lhjX6MI~8sXOflGK0vx3va{7Iu=l-HMs(cDDn-QCyhGC=AHX-Wojig*ajgjB z#G@108xT?L3Cn-WrZEOA7P+2Dpx0_ILN$W2gHZ{9 zy+I0+n=PaWF%sN!gQO|W0y6L7dnYOvDvg6ZHhrg<<|{Hej8@kfxy~9mWOD)R4TPHI z?=&jdide`9Uu+E^%P)i!xIUV_@eIlFf9-a;HQ7?wa8v?CJ_jj}J){dFL%L>p?OeMl zY{+@7bR?<^z(AIOpB1vJrXl@yMD5uB)e_f^l513X1oJU?>;IwHCPW_PXz=Lg!N_2? zET{^*MYW<(K*8nxy>jIMRng;LG`l7r)<%x1{C54U5GrJ9?;*Fx8M2j1994%sb9Y-> zPjvB+RkN*c<8F2~c`|B(`u4awj2(|clR^OPdsuy&?j~A&*XWT{ zEObDD0KF_oG$d;;gh)Ha(2QMrSgHO|EkqNQYM4VX;(Dt6&1A_6G(rMX!`(tMk&h?H zls{-;=QpFMNKe|OhbOC-O*gZ1_Xaae*k1pCqxu;X?)UkRE~$mMgw+QkCQpqEMrayV zebSi$5+F^7;aa`qko*0w!d@)jYeoy+21^G&s=`-IkRr0db-i+Bh?DhwjxBSGC2!y) zHmFrmdis+CbR$T!>M5Q5P9nSM+_v&FQ)uSU-KnVjaB$30o_>r-M;9(@*-gu7USGeJ z3J9Ux(e}rde^5?sL=36;j!I^~&@Dnl5Z^ zYVFP|ryY~4>*yIr)@`S}ugxP$gT5`lNAOb{5~v$b7oqEz+c(~<)$S05Wy?f$`5GqG z!Zdd6erJb9WjEZyihSQ>1sqzDG2?n>)jwbbjrtW~ykm#xo>_<86=}QOPiQux9&6o( z@bqHu46zp!LN)m{t(&&R5b^Mc?u`h@MYp2K++J7Dstuc)-uc*0_Bm1H^|YKp1Nck= z&)~$8j!vrlf9T0l&{BuZ|DU;;Uc+{Yt&!ZL=MZVJEfcB}*09!lRFYD*7IFdfdYX`j zBqUniKKD+qSl{b?ZwqP1W{Z{4(Dv);er6>|pzTI(;7Mo5?gD6bZz|x89vBEw>}s2$x~kn|v5*qJ$bv~5Lu8p76=XG#N$`4V!fcp+7b7ZW zd7C$@<`9J!DLXbzWt-Cm6;NF}n$Tux$EIyrSP;xFNRi%|YLd`07DJRGpGP1wvRnYF z6aIN1Vo;+h)1)WzcESOT1-~D1{t?!K$H%T%G_@iXqRiJ;`@$LRddIC?&RyL zqpVWKpm5qOc{|c$a|b*`Jm6L(qR;N=R^+IANtq4t*ASM#r`7!OPpii&s3?C_-r-qKySs2b&Cg_SWRKlAmATy# zQvs)pB>3!=wIVw2dl)reiQMl84zJyEuVL2ls6?2WF=5r!%D(sO0ok$nTb^D88{X}V zPn;T%zy)=?XF@Yb0Fy9WREvGUy+aA9K+q5(`X0HazDdH6WmojGJN`rR*6UfQc0*@c zs2qtINr8f5XCz5$M^}!E6`KL#5XQ!(oKgo60xgz}hPrJGj`_-%!xFs#yN3nXZ-a$M zT{K^UFq>dR(jre1_B>%rwHqU7)K=cE6Kp3^-4*}VTYxcQbND?$}kf;9w7G$u%|D-W3s8nRr~VGD2%+k~}~iMpN^(b1F3 zm5rfxKYK+fHqv@;ponHp1?1R-oOS^0#h-v`4%TMx0)^abK3$NVt8mOTnwaT0EYG^c zOm78I+yxx}mQ>1C_oAYb%DJ{->mQVM9TDH~h~oSx7Rs&_D?Xn*Y$3t0IlH5pYIVP< zXwP*-81=OtUw+M2As+ObL5*k+NnDD`ME?01!3!^YswIgUB zB4F^^EpnhMq0Bgw+FosBNY?t0QYnp69Sj~@SK@fB9mjW3UhVSE`r8YbYvlq|hc(xj z?Q?@H5(IfYb+v8n-uxLg+kwJH z4AOd%7dD|r03T!nD~QB%AtgtBT(T`qa;xcC)*3@hmu6~1Tmr7=XU<@Hk6p`!-w8ICJFxtjj}cC^I-qyVF>v|Xo%7psSE3qY!l9?<_H65q zaKP=Y2~VN7exs82tzE|a)>6B@Q~;42x+CRlQa}2#`3u);caA`D;}>X4O^}PL3*RGNgi)A*+9k#?8#v7wz6sWpflEs$F~=!kBnS zM*k2ixG6V=(x6c#_}6ZC3kXT^*4O~e5=tQjRBr4mp-hy@k6rIXT;t4e9=lrfd#6+u zvoON7yBZZ#u0q^`7SWqbUT8di+7C=35eH!WkH@S*3ks|5rG4Prf3kcW1^NBCI7@Il z%2>KV(Qt`G{JS)Xp42hl9$$252zI-6iqTU0sCp}T?e3RJvVMe8LVnRE+A;pg4XUM$ z7LUlwNXG~$R%0H|upO2J!4SfIjUPr1>Muc)Kn=)g@7N|suh|ofPU~*qp?cyh!)LmQ zb61YLfw}rKo@Ei;iAaP@x)6RR1;u@L!Mt-rjBYw-Gw_OwoZm7??Ue4!seEavtHL~)o@{C{f&wJHzL8} zn8ozZ!Ly`SGPz|cg_9KKAH<5~ke*0V$d$ykw&Gr+5mLQ1A;6|B{o9fvh?Er-^Ca#j zNhyd*_68IxX^<(Y>~};qpfMS(T=^lrC=eoYAJ?Jbb?tzf`EG{PdH)y{SL>+MUN&7( z9xJeRu2bJZv#Oav^+kDbbx?IR`;act4VieyQ>pZZS+r%R(WG3$IOHs}W>t7In%w)= zd(YBdI|+c>sonpNYGL*^(Z(gfzF(K*z?qk24i#sj6V7`Rc zj0#BDa;N3*98KfWS+RBuMJ$FbZXK5F8&U*4Dq7MiM00u_@{FWmDFRTb$!oUlgDhdV zuBT?XQ9Vj)K4GUY=UN$l2pzhf1Ou)o9CZWeg^kw^o1OF~WNuLD?hVrcBu(|y6~pzU za(q%TY`3?KQxW>L<5R@?kg}0TcIAxz;FfOHL4T+E^aShi_J~y2ot6>HeuxSI{h;Y) zaej{1x z;?%iSW>t|@7^!NYf2+?F5l-OuAHw>^2auBA@tGLVTuG3p7vf<-jDA2ZqOKMNP!Jdo z(2ugeX0oq5-msK+R5JCxAF_>Nh5ma#gSU<>W}jnrcdmkp`Uf!Fj$O-4IgDk^@{Z6j z9nRPx!0(4xOs)cisBn3wA)kHT5%GO7DC$IY%S1%BNda(F#(V7`PdisdTu*n;7hmwk zPmuY~vm<;))k#rAi+-gCQ#l1zLMAozu$)A|{Vq~{KJ^kdi3f8D)dXucmWJeAT-U@- zYDsqEq#~+}`C-*0jcS)$B4oQwc6SEf$kni( zxdYohTS})}3u{LUH3EoZaY(=49CBDKbP)yjirV* zW?ga3ZX0$NxXxt`%sAQ78eCU4n~jo8I!^4IqhAEWY?_RX%lYiswb$uL90Q;8O@-tv*LSB3;bC%eoi znOA@790e`j3-j8U(;hM-JEWg2J{p>`b`pYT5Y+Cv>dDr>jA#)dL=?g6Xcvn^dhN*a z{oPY zs#x2oIF9Sd_3&FwhxL}=9$UDL--*<2mv2FmB2AcABYdKx%%w~XP7O)&7@sI^+{Gu3 zgXDplE|+YN&pK7Kc^_L5&Yh~&yInKSmuBshPtz5pNxWJ&fDnjt4G`ow`M2;&&Dx9w zoKVd*hxiHav_h5*n=TqQx*^r|+e_?S@@>#waAh^^N5MnnuKQdkbsLZ&#*A@>U{{c4 z1sDO%#eZPFt;rH~0ecAwi3?=MspP_w23Ki@h{Hnq*h`{37SN2Ju}z|Lj|E`gjw>xC zN>O)~>?S!@yiI5h!y)uZ^;=tJEH+XrFMgb|W zv*}Dy4>{ed9S>3@9i~1u*02nF4<#x|oFPW?dSb}D@AU}6dKcHd@Aa$D8@T8uNoKQM zml+~6e9|1>EU2J!)@uq(nx`9KwWCQ*FJ!FYh~Vg?D~;5{H!Y~Dc$@)QzJ5!5)fJG1 zx6sHco)Vy3yT=)oz`wkwc6)*@q#W6R9=#3NgWc9LqV5ibNr4=dQtP7<9lHUzppdPO zHC~cVJE5=p+HAAqvnwo0s`>^P}Ug zojBf_Ibhe!1;raCC4VMaiC+ePU9E(u&P!9R-EL?el97gnPCuh1D%>_~soC0L?)9`= z2DP&SHzcms_dP{Sx5O&}i)fKwES3$u$$f{+CDIF5Sh|(d$C-OQxo!E56wmp#MI7J` zf#lS^w0!lv_ysQpykdYX_Vjpk24Y|6Rm zRS*=9hEV_~d!&Eb0>kdTo}|&QhRB&G(_YE3&WC(g=86AYy%TJK_mg)x;dtNqyV!@3 z%x^+R%_Uo;5GC>S=3^=}hU^`$kdmmANtto|TqI0}^GVA6GC9NpdaW0lZo)@nK%WL- zv>fKHQ@vX+$^7+H8QHb-u-4ky+%tCc70=C}JDObK^Pp=bc$!l9^9Hx=d)nJ&i}i?Y{*jZ*&anCa zD5g==$wN=y)879eXcqyF<&x_dqGIQ6j7gf1NzyI@2Z`gFe_^qat#04 zbqlfH@jc8J@dzqH#nd3L95&Z9u7}VqJLaeujMfoGK2>a#+uelzk!!n3ifGa$5b}I0 ziHccw*gX~lNI;@dA7uagewXS)<}6_n7{jB!xvKN_A##Sc4T8665{PpDM&wMNc?cpg z#Oy$Ve@AqFCPamw{Z~gz1hpuTT-QFAL!73D5p)fzjBdZ=0a^Sx;bi)*M{BcbFk%_UM9E#S7t<#S(Y`z8DS`}C?wGPW+8M1VG>r|jN zq&)Z5i7z<46}B57Q5B&J;32M~CD{TBgx0h8*D(r=f4QDqb7`kS9KKOaEDg!9)K0K_ z!YgbSG{U-3wsxLZUr+PZhb&PaO;Mejotd{Pu%);4)2Pi(?(RYcq$ zm8}>R0e_>aItF52R;yR3wWE74*m1$I^--wj1Q>{S3%;&j)J zD7xu6cWoZ_T{$QkLUNi5M$a{YaeS+vC=t+f9>MnR2ZP|FJQVVvjQ|W(n&-%Yn7z^ROZ+$Pcj5Z7-mV zz=;Rtw(T9PC`VKjbIVli<~u-w5X}VA-NR$Cy@eOXX02T;_RWs*8$cn%<78)Vsa-QG zeM_zku0hEv?fkTIxvv1x=p*q|e0mk6!2Npq*RsYgdPokvE$Brh(Ud|LO^(b>aMUh+ zm~SzRnHnPZf2<=e)lyQdi_)}pX@P5pv+sLm*(jMei^wz=hO3_FvXy7F0EH}TmvYb2 zh0#ed25V(*83fODf+4FLf;d03PhpPgnmM;k2CzjD#aa?B;ACbw__I#K7AgOSs>Xiv zV9gexfq1UzI`W7@iz%?x3t?}R3;)8zVVWJwYpx7LHC`2nS$30|;>TYR-8`l^Ob+CJ zy>EV1j8O!;aC56Eb$^J$-|e0?pLv6-HtjcAVoMMR9>v9lGO@@>lc5fHkbY4A@UEWU__ zXL27?Lz4u9^!9Q+Qxw;%yXbF_gy+r8&o`agk_5Ox+P9My>MJrGFjKbDO^zYoIf%h_ zSn7QT0dlvVAuI5X=J!QmX{O3B>#@E0mcJU3bFpRW_v44W(`ucn!x<#LFd{MhhwK>G z-MzD<=Ur#LQL0eBZE;usnAbjCGj+;w4z^sxtpnu~Z9#s~hNLj|?u2GZ&oY9rsx|dB@W@~#ssF)MUaq{OSG7< z-Is$Ak0)u>eVmdcps(F(!)xcJ?Qy0BUPcAx*x%X-m!0foG9Qa^=ub)BEBwA^L)~QA z7(@o&o}bZfRCkNIh+X>&h~#mm;`&XG{dOl|PyK9q*;;ko^B4g?zY&$`yd^Ii@vLDR zbe&6lV+&SdmR-$6Pd^JlX!Le!570%$u8PX8+)Y^)z@1-+LV*d|?1YJeuq}BBtKx*U z>$j<97tR0P_nuPbZ6wb(277K)<$azp!31tG|Kx93l`aPm9x70@^dG&#z!|Lae=$ZF zXEs3wId2BCYCs6J`c#P;i>+~j@SQ6fE>4FOz}^8>+`XP4?_4J;+M7|GY*`d+$l}(W z+Ph_gW_M~rsy=+}ifgqtORhD{J^CC_NO=R_^N-oLi8YYw0N;${5W@~N(a{L)yiv{-MRQM4rS*!%>PI~D z8ZD3?@Nyh=U75^?+`T)hy`mKrF|cnfjt`ibbt^6uT127BSqI?NvcFx1b zuVJo1AJzTVRr#4ubQ*&<&L9E-Z!W4!a7WlG-s}CICWG|+%f2^mL9=(sZ|#cAuCIIO zAnPa5646~dO|!gf8@=kPj_*DqbU8NW@yTed2seSKTi?)Af3{SwdC z%KP_+R7n?Nhn)p9e&ZUyuB(0kdr;45jp!bl>mmgEB1AmuzV9@jK!>dgwXV7%H!33D zbVG{NY3CL}n*jMNby&HIK@0f+_OMmRx9L0-vL=LS_w)c~^p;Mxe{t6&`hxf9geN{M zD=mcoUBIG#<|qF6#HHa z42ZJ^w7?-tc%raOXU7!NOM`_u6&sUFbZ^GrYZnZ%qv3TOAM)n%jB6)eaif&@du$-j zv!29-8fDD$0#U{JlHFldw>Bs>$d3^@4TqHQ8EdLr*qVz#^x$I{tK-g9w$Nk*;U7-B>8^ZC*xtNUA8rFDQ1jA(B*E^_0Z=qKalfe^m()HO$OPa`rmDJOs?t zJM0YO`=xkD_Zx;()|Jv>vziPV4D_i~rE#ZtB|sh(uVg(5B)16Kt@=m1rRQUfijAHj zj5Chvp4dU9GVavgE_C)ig5s>XhBr$%+hJ-4vP5B2_t*gBa}e*f)_tyvFYD?;qB#Yh zS5>MhnmvgUjSlZP!am2++XkoT#YoSC;GI9DOmN>X#c{JEkrMB)NAtTgmbui|7Fim} zcN(`ow=w4~Sc<(ruOB+{*5p?+>NBoHxnfx2L*nmjE9WaNBb*YmeewI<5y#|q>Js}% z=$>!F9xm$W!RR3@W(w6E4XGw(h-$eZN_~E8ouk1#k7k!^^s_SQwStgiiCrS<)`>&c zu_Bz$C2kX6-}{Az`~IXm8bxzoyRHnaog&m5)2`{%Q*r6qi6z{c5HNQ%TF=ZxR9wRZ znI#upT2JEnx57SiW8#XR@qubD3e|3PqS}!$9qhdNnY}SoZfb~p%^RoxyuL8^t@*+y zi2SVCea=0Q+b5B$TTDlfrJ}1YSo~OW*=-?fh9oaHfN^u;wsSpEngh8lhwRlORJ73v zj0?s=zUv>!gH4!+l@&Dsu_J|uE!D8=I<64dDcG8VGXevK2?=@pY((sY6Pv5?AI%C( z&@jd~IoJQ5fyUG@Hy8PXRyUvZF`FsmtV_r&h>+P7Gg;Uy*k>62JHuvo6GoLh%=}4x zuJ3vCSx6S;wcD>0qar@BPgJXm4Z-cE$LLv!Z^*L*KzS~8&SOqyK@vL2uP@H$`f~sEoC^Bz7@womNw24LEZ)p@ zdd=pugk+qh3M-Sh z1%}3V84zWlM)Q;xtn+->k{^&n=#bvU=ySqPkEVkAhMBiF1KZAY)$)uH(YT|-OHG+E zvU1%P;rJ}%%`Q&5u2>2u$qcypMT7?%!q-hdY?j#c$i$iI2Cyq!Ff#QdlE=1A-1bis zKQzXv9RKmj%~crH*JOWRQ(fG!bCf24vyPrxjImCV35(tk+`x#(_?>5&Q=SE>hioZR zu*`;=+v*+bdp{Ev5xFb06>{NZaUT0~#dG~s? zV`iLH@kcwyF5I&dE0XfV9E!63bC;Wo6+W)!+0Df6D%MIq(pSrLhE&cs4Yo&ohwS*H zA--Gpumv${*NGgmTEmdLhh5)EN(dpfQ&hWU#lzgCr{;`mg<2t3I}h2tcL6Gw zhr+lKqf+hgsLG|)&NOdG>Y7fCm*#p)MT&Hf53;)n^;7|J7bx$w%^|lcEo|yIs7Fjj zlpW)53UGfqdd?6);m1x|JlCmitU%!$}K;i zG;D_kcCQ_UOte8NKUq(!c-51j;LjM?Eyh(%#4{AHTq4A9*UnX^))GQNe`DX{(J-b^ zvW)KJ4X>vaCk)v$n`l_7pBiTqwV&L@d!{|}VY>&(LQRbea;GkHDc}5HLc43{7w-CA z)rV8P4oDW}kdnH!tMF~(M75W)!jh0tF??dOkhxlrQz#+NgwJ4_gblk^djhytZvM_{ z`Q!O~hn6K?0g*59uypkk4(@}J$Gzgx!c>#n2uglWbWuLHDtk*k!I{Bn~AmT zt&RKKgiaVgbImT*31H%Ce)y2im)!CMkSPf&7`d#vR5t9 zFl`?LbsigKjJg!JNy?xEH5Qpr=%sR?KtQq~C zks4Fks2PSZDUJG)5ZHTT5H?qbjj6W?JVXW309^2O#d>e^SZI06b-s)g0K<20j)Az` zaL89Up0_*m7`D1OR6N}F1w!fTh~nLI=Id#{ZWX3D;(e~TY>3@&Sqh;&?YI{R0RG|A z;ev73Ilni}n@USJT7fz|^|e3%EBykI(d6_*B;pc_4QWa6)jY=#n|MdPr@~s^%4v37 ztSP&M*&X!Rz3ReZ1IWsn8AS^>9n$ORAzdPSUG0iU*rd(cjiVv?X4m)hi4AK~uN`Y( zeTg%*PQG`OLAB?VAsm-cN%UoKFpejCTOf~MGZo|y=~{ea;!(%H*6@rii0azMzXF793~YrHQSEi2 zA?fgtGuuXUY+%V&y&2WrnuXl&*3`SCSM3B?;xI_@_EvLuD3X7P7~z|C6jm+Vu*FtF ziid@`CP2$UR9SZ#A=#eSm%6v>OWLH7Mzv#wYL9`hr`d93wM5;_*L|k5+h7uA)i zLnw&WfNUu$aDDB4wlG&VTTjOP67>+J1Fcl9L!l!`k-eI+vX`;mkM1nOmE}J@&Z606 z|D@gNY<5r4v$ONxc_`vpZVi=iVH2D!)&Q{X9a=O!M%DK^zjM`K24qkZ7jdWW$+3^- z>ckt@|H`J&)A|WZtAv44JiHiHt#?-$N>PpzMn0e8$l&J(YP6L0+r6abTIGXo|#FV&->@C?1640I6sjShvDDs z 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%0D8bGnWEX=&1U%Q%cSAF* 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

tnorth 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

%hSe#a|9It3t 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

iifzapNVV%w(jK2^ocJc%p%?5Mc?JpOfM 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 bO5_YPhQj`d@~QqnZZHUofkEc!`}ThTd@^cb literal 0 HcmV?d00001 diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 26b3257f93ec3..963dd644b7d25 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -588,10 +588,14 @@ class PDFPageView { } toggleEditingMode(isEditing) { + // The page can be invisible, consequently there's no annotation layer and + // we can't know if there are editable annotations. + // So to avoid any issue when the page is rendered the #isEditing flag must + // be set. + this.#isEditing = isEditing; if (!this.hasEditableAnnotations()) { return; } - this.#isEditing = isEditing; this.reset({ keepAnnotationLayer: true, keepAnnotationEditorLayer: true, From 3109abf561062f591372e6c14ffb5efa79c3d36d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 9 Jan 2025 22:21:45 +0100 Subject: [PATCH 177/338] [Editor] Improve zooming with a pinch gesture while drawing It lets the user make a pinch gesture with a finger on page with a drawing and the second finger on an other page. On mobile, it's pretty easy to be in such a situation. --- src/display/touch_manager.js | 68 +++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 12 deletions(-) diff --git a/src/display/touch_manager.js b/src/display/touch_manager.js index 2d5db615d5ca7..69f6a9f6d2022 100644 --- a/src/display/touch_manager.js +++ b/src/display/touch_manager.js @@ -31,6 +31,8 @@ class TouchManager { #onPinchEnd; + #pointerDownAC = null; + #signal; #touchInfo = null; @@ -78,7 +80,41 @@ class TouchManager { } #onTouchStart(evt) { - if (this.#isPinchingDisabled?.() || evt.touches.length < 2) { + if (this.#isPinchingDisabled?.()) { + return; + } + + if (evt.touches.length === 1) { + if (this.#pointerDownAC) { + return; + } + const pointerDownAC = (this.#pointerDownAC = new AbortController()); + const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]); + const container = this.#container; + + // We want to have the events at the capture phase to make sure we can + // cancel them. + const opts = { capture: true, signal, passive: false }; + const cancelPointerDown = e => { + if (e.pointerType === "touch") { + this.#pointerDownAC?.abort(); + this.#pointerDownAC = null; + } + }; + container.addEventListener( + "pointerdown", + e => { + if (e.pointerType === "touch") { + // This is the second finger so we don't want it select something + // or whatever. + stopEvent(e); + cancelPointerDown(e); + } + }, + opts + ); + container.addEventListener("pointerup", cancelPointerDown, opts); + container.addEventListener("pointercancel", cancelPointerDown, opts); return; } @@ -86,18 +122,22 @@ class TouchManager { this.#touchMoveAC = new AbortController(); const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]); const container = this.#container; - const opt = { signal, passive: false }; + + const opt = { signal, capture: false, passive: false }; container.addEventListener( "touchmove", this.#onTouchMove.bind(this), opt ); - container.addEventListener("touchend", this.#onTouchEnd.bind(this), opt); - container.addEventListener( - "touchcancel", - this.#onTouchEnd.bind(this), - opt - ); + const onTouchEnd = this.#onTouchEnd.bind(this); + container.addEventListener("touchend", onTouchEnd, opt); + container.addEventListener("touchcancel", onTouchEnd, opt); + + opt.capture = true; + container.addEventListener("pointerdown", stopEvent, opt); + container.addEventListener("pointermove", stopEvent, opt); + container.addEventListener("pointercancel", stopEvent, opt); + container.addEventListener("pointerup", stopEvent, opt); this.#onPinchStart?.(); } @@ -125,6 +165,8 @@ class TouchManager { return; } + stopEvent(evt); + let [touch0, touch1] = evt.touches; if (touch0.identifier > touch1.identifier) { [touch0, touch1] = [touch1, touch0]; @@ -158,8 +200,6 @@ class TouchManager { touchInfo.touch1X = screen1X; touchInfo.touch1Y = screen1Y; - evt.preventDefault(); - if (!this.#isPinching) { // Start pinching. this.#isPinching = true; @@ -173,6 +213,9 @@ class TouchManager { } #onTouchEnd(evt) { + if (evt.touches.length >= 2) { + return; + } this.#touchMoveAC.abort(); this.#touchMoveAC = null; this.#onPinchEnd?.(); @@ -180,8 +223,7 @@ class TouchManager { if (!this.#touchInfo) { return; } - - evt.preventDefault(); + stopEvent(evt); this.#touchInfo = null; this.#isPinching = false; } @@ -189,6 +231,8 @@ class TouchManager { destroy() { this.#touchManagerAC?.abort(); this.#touchManagerAC = null; + this.#pointerDownAC?.abort(); + this.#pointerDownAC = null; } } From d73ec667b5a76dfdacde384448c4583bc8ba84db Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Thu, 9 Jan 2025 22:45:14 +0100 Subject: [PATCH 178/338] Update dependencies to the most recent versions --- gulpfile.mjs | 2 +- package-lock.json | 231 ++++++++++++++++++++++++++-------------------- package.json | 14 +-- 3 files changed, 138 insertions(+), 109 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index fddd72bc7b5c1..5fd1334347dd1 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -97,7 +97,7 @@ const AUTOPREFIXER_CONFIG = { const BABEL_TARGETS = ENV_TARGETS.join(", "); const BABEL_PRESET_ENV_OPTS = Object.freeze({ - corejs: "3.39.0", + corejs: "3.40.0", exclude: ["web.structured-clone"], shippedProposals: true, useBuiltIns: "usage", diff --git a/package-lock.json b/package-lock.json index c6c7681cc7388..9d3e8bc80618e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,17 +15,17 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001690", - "core-js": "^3.39.0", + "caniuse-lite": "^1.0.30001692", + "core-js": "^3.40.0", "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.3.0", + "eslint-plugin-perfectionist": "^4.6.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -34,8 +34,8 @@ "gulp-postcss": "^10.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", - "gulp-zip": "^6.0.0", - "highlight.js": "^11.11.0", + "gulp-zip": "^6.1.0", + "highlight.js": "^11.11.1", "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", @@ -56,7 +56,7 @@ "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", - "typescript": "^5.7.2", + "typescript": "^5.7.3", "vinyl": "^3.0.0", "webpack": "^5.97.1", "webpack-stream": "^7.0.0", @@ -2525,6 +2525,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, "node_modules/@tootallnate/quickjs-emscripten": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", @@ -2608,9 +2615,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", - "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2624,10 +2631,11 @@ "dev": true }, "node_modules/@types/vinyl": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.9.tgz", - "integrity": "sha512-KCr4aTEUkzSF89qw09e2oxsC/RXXT3K5ZPv4gvj3XTiWVrxNoi7WrqNTahNE/Hul5C9z3B8w+yWNTQgua12oag==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", + "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", "dev": true, + "license": "MIT", "dependencies": { "@types/expect": "^1.20.4", "@types/node": "*" @@ -2645,14 +2653,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz", - "integrity": "sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2663,9 +2671,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz", - "integrity": "sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", "dev": true, "license": "MIT", "engines": { @@ -2677,20 +2685,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz", - "integrity": "sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/visitor-keys": "8.18.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2743,16 +2751,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz", - "integrity": "sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.18.1", - "@typescript-eslint/types": "8.18.1", - "@typescript-eslint/typescript-estree": "8.18.1" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2767,13 +2775,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz", - "integrity": "sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.18.1", + "@typescript-eslint/types": "8.19.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3839,9 +3847,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001690", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001690.tgz", - "integrity": "sha512-5ExiE3qQN6oF8Clf8ifIDcMRCRE/dMGcETG/XGMD8/XiXm6HXQgQTh1yZYLXXpSOsEUlJm1Xr7kGULZTuGtP/w==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "dev": true, "funding": [ { @@ -3877,6 +3885,19 @@ "integrity": "sha512-twuUuJRrIrsELHz6foJtZlqrz6FC36zoHZJvvThsrM1UWPKxyoilw1Rka6Hk0AmPFKHKUoGwGfAtvNZNtNZu0g==", "dev": true }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/cheerio": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", @@ -4112,9 +4133,9 @@ } }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -4661,6 +4682,7 @@ "resolved": "https://registry.npmjs.org/easy-transform-stream/-/easy-transform-stream-1.0.1.tgz", "integrity": "sha512-ktkaa6XR7COAR3oj02CF3IOgz2m1hCaY3SfzvKT4Svt2MhHw9XCt+ncJNWfe2TGz31iqzNGZ8spdKQflj+Rlog==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -5180,14 +5202,14 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.3.0.tgz", - "integrity": "sha512-8tQ/wn1dFelul2WoXL/NQOEwvWO8H4Vjmsqpt3fDQrfgybr8kQ5Vgb9BQyVRB33ywQqjUApsiwi5Ci7grMPPRA==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.6.0.tgz", + "integrity": "sha512-kOswTebUK0LlYExRwqz7YQtvyTUIRsKfp8XrwBBeHGh2e8MBOS6K+7VvG6HpmNckyKySi1I96uPeAlptMFGcRQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.18.0", - "@typescript-eslint/utils": "^8.18.0", + "@typescript-eslint/types": "^8.19.0", + "@typescript-eslint/utils": "^8.19.0", "natural-orderby": "^5.0.0" }, "engines": { @@ -6172,12 +6194,17 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6667,12 +6694,13 @@ } }, "node_modules/gulp-plugin-extras": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-0.3.0.tgz", - "integrity": "sha512-I/kOBSpo61QsGQZcqozZYEnDseKvpudUafVVWDLYgBFAUJ37kW5R8Sjw9cMYzpGyPUfEYOeoY4p+dkfLqgyJUQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/gulp-plugin-extras/-/gulp-plugin-extras-1.1.0.tgz", + "integrity": "sha512-T0AXOEVoKYzLIBlwEZ7LtAx2w4ExIozIoxVeYEVLFbdxI7i0sWvFDq0F8mm47djixDF3vAqDPoyGwh3Sg/PWtQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/vinyl": "^2.0.9", + "@types/vinyl": "^2.0.12", "chalk": "^5.3.0", "easy-transform-stream": "^1.0.1" }, @@ -6683,18 +6711,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-plugin-extras/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/gulp-postcss": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/gulp-postcss/-/gulp-postcss-10.0.0.tgz", @@ -6763,15 +6779,16 @@ } }, "node_modules/gulp-zip": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-6.0.0.tgz", - "integrity": "sha512-fPGvNve2dBoZxGKcviTU7mOa77eQibyhwgGLTxnF+ZCKX8RFaTZKkPbdPnmw0r4TNPRjPCkQB/0VuP+MzgkEYg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/gulp-zip/-/gulp-zip-6.1.0.tgz", + "integrity": "sha512-couiqfO4CSM4q3oKnihLhYq5mVmwyXfgLP/0eeM7oVlN+psn45vfvJHcCL3AkPgTi4NojnUFV2IozYqZClIujQ==", "dev": true, + "license": "MIT", "dependencies": { - "get-stream": "^8.0.1", - "gulp-plugin-extras": "^0.3.0", + "get-stream": "^9.0.1", + "gulp-plugin-extras": "^1.1.0", "vinyl": "^3.0.0", - "yazl": "^2.5.1" + "yazl": "^3.3.1" }, "engines": { "node": ">=18" @@ -6886,9 +6903,9 @@ } }, "node_modules/highlight.js": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.0.tgz", - "integrity": "sha512-6ErL7JlGu2CNFHyRQEuDogOyGPNiqcuWdt4iSSFUPyferNTGlNTPFqeV36Y/XwA4V/TJ8l0sxp6FTnxud/mf8g==", + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", + "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -7425,6 +7442,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -11343,18 +11373,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/svglint/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/svglint/node_modules/dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -11885,16 +11903,16 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/tsc-alias": { @@ -12173,9 +12191,9 @@ "license": "MIT" }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -13021,12 +13039,23 @@ } }, "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-3.3.1.tgz", + "integrity": "sha512-BbETDVWG+VcMUle37k5Fqp//7SDOK2/1+T7X8TD96M3D9G8jK5VLUdQVdVjGi8im7FGkazX7kk5hkU8X4L5Bng==", "dev": true, + "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3" + "buffer-crc32": "^1.0.0" + } + }, + "node_modules/yazl/node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" } }, "node_modules/yocto-queue": { diff --git a/package.json b/package.json index d403e9912f39b..61bba91f234a6 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,17 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.2", + "@types/node": "^22.10.5", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001690", - "core-js": "^3.39.0", + "caniuse-lite": "^1.0.30001692", + "core-js": "^3.40.0", "eslint": "^9.17.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.3.0", + "eslint-plugin-perfectionist": "^4.6.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -29,8 +29,8 @@ "gulp-postcss": "^10.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.1.4", - "gulp-zip": "^6.0.0", - "highlight.js": "^11.11.0", + "gulp-zip": "^6.1.0", + "highlight.js": "^11.11.1", "jasmine": "^5.5.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", @@ -51,7 +51,7 @@ "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", "ttest": "^4.0.0", - "typescript": "^5.7.2", + "typescript": "^5.7.3", "vinyl": "^3.0.0", "webpack": "^5.97.1", "webpack-stream": "^7.0.0", From 7fbc4bb236bf74e158f849dd0d8972e3b2dfcd58 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 12 Jan 2025 13:01:54 +0100 Subject: [PATCH 179/338] Re-use existing helper functions in `FontRendererFactory` Currently we re-implement a number of helper functions specifically for this code, which seems completely unnecessary since there's already general purpose ones available in the `src/core/core_utils.js` file. --- src/core/font_renderer.js | 85 +++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 49 deletions(-) diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 8d788dcd9b650..f03a274c83263 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -22,36 +22,23 @@ import { Util, warn, } from "../shared/util.js"; +import { + isNumberArray, + readInt8, + readUint16, + readUint32, +} from "./core_utils.js"; import { CFFParser } from "./cff_parser.js"; import { getGlyphsUnicode } from "./glyphlist.js"; -import { isNumberArray } from "./core_utils.js"; import { StandardEncoding } from "./encodings.js"; import { Stream } from "./stream.js"; // TODO: use DataView and its methods. -function getUint32(data, offset) { - return ( - ((data[offset] << 24) | - (data[offset + 1] << 16) | - (data[offset + 2] << 8) | - data[offset + 3]) >>> - 0 - ); -} - -function getUint16(data, offset) { - return (data[offset] << 8) | data[offset + 1]; -} - function getInt16(data, offset) { return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16; } -function getInt8(data, offset) { - return (data[offset] << 24) >> 24; -} - function getFloat214(data, offset) { return getInt16(data, offset) / 16384; } @@ -69,48 +56,48 @@ function getSubroutineBias(subrs) { function parseCmap(data, start, end) { const offset = - getUint16(data, start + 2) === 1 - ? getUint32(data, start + 8) - : getUint32(data, start + 16); - const format = getUint16(data, start + offset); + readUint16(data, start + 2) === 1 + ? readUint32(data, start + 8) + : readUint32(data, start + 16); + const format = readUint16(data, start + offset); let ranges, p, i; if (format === 4) { - getUint16(data, start + offset + 2); // length - const segCount = getUint16(data, start + offset + 6) >> 1; + readUint16(data, start + offset + 2); // length + const segCount = readUint16(data, start + offset + 6) >> 1; p = start + offset + 14; ranges = []; for (i = 0; i < segCount; i++, p += 2) { - ranges[i] = { end: getUint16(data, p) }; + ranges[i] = { end: readUint16(data, p) }; } p += 2; for (i = 0; i < segCount; i++, p += 2) { - ranges[i].start = getUint16(data, p); + ranges[i].start = readUint16(data, p); } for (i = 0; i < segCount; i++, p += 2) { - ranges[i].idDelta = getUint16(data, p); + ranges[i].idDelta = readUint16(data, p); } for (i = 0; i < segCount; i++, p += 2) { - let idOffset = getUint16(data, p); + let idOffset = readUint16(data, p); if (idOffset === 0) { continue; } ranges[i].ids = []; for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { - ranges[i].ids[j] = getUint16(data, p + idOffset); + ranges[i].ids[j] = readUint16(data, p + idOffset); idOffset += 2; } } return ranges; } else if (format === 12) { - const groups = getUint32(data, start + offset + 12); + const groups = readUint32(data, start + offset + 12); p = start + offset + 16; ranges = []; for (i = 0; i < groups; i++) { - start = getUint32(data, p); + start = readUint32(data, p); ranges.push({ start, - end: getUint32(data, p + 4), - idDelta: getUint32(data, p + 8) - start, + end: readUint32(data, p + 4), + idDelta: readUint32(data, p + 8) - start, }); p += 12; } @@ -141,10 +128,10 @@ function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { let itemSize, itemDecode; if (isGlyphLocationsLong) { itemSize = 4; - itemDecode = getUint32; + itemDecode = readUint32; } else { itemSize = 2; - itemDecode = (data, offset) => 2 * getUint16(data, offset); + itemDecode = (data, offset) => 2 * readUint16(data, offset); } const glyphs = []; let startOffset = itemDecode(loca, 0); @@ -201,8 +188,8 @@ function compileGlyf(code, cmds, font) { if (numberOfContours < 0) { // composite glyph do { - flags = getUint16(code, i); - const glyphIndex = getUint16(code, i + 2); + flags = readUint16(code, i); + const glyphIndex = readUint16(code, i + 2); i += 4; let arg1, arg2; if (flags & 0x01) { @@ -210,13 +197,13 @@ function compileGlyf(code, cmds, font) { arg1 = getInt16(code, i); arg2 = getInt16(code, i + 2); } else { - arg1 = getUint16(code, i); - arg2 = getUint16(code, i + 2); + arg1 = readUint16(code, i); + arg2 = readUint16(code, i + 2); } i += 4; } else if (flags & 0x02) { - arg1 = getInt8(code, i++); - arg2 = getInt8(code, i++); + arg1 = readInt8(code, i++); + arg2 = readInt8(code, i++); } else { arg1 = code[i++]; arg2 = code[i++]; @@ -266,10 +253,10 @@ function compileGlyf(code, cmds, font) { const endPtsOfContours = []; let j, jj; for (j = 0; j < numberOfContours; j++) { - endPtsOfContours.push(getUint16(code, i)); + endPtsOfContours.push(readUint16(code, i)); i += 2; } - const instructionLength = getUint16(code, i); + const instructionLength = readUint16(code, i); i += 2 + instructionLength; // skipping the instructions const numberOfPoints = endPtsOfContours.at(-1) + 1; const points = []; @@ -899,11 +886,11 @@ class FontRendererFactory { static create(font, seacAnalysisEnabled) { const data = new Uint8Array(font.data); let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; - const numTables = getUint16(data, 4); + const numTables = readUint16(data, 4); for (let i = 0, p = 12; i < numTables; i++, p += 16) { const tag = bytesToString(data.subarray(p, p + 4)); - const offset = getUint32(data, p + 8); - const length = getUint32(data, p + 12); + const offset = readUint32(data, p + 8); + const length = readUint32(data, p + 12); switch (tag) { case "cmap": cmap = parseCmap(data, offset, offset + length); @@ -915,8 +902,8 @@ class FontRendererFactory { loca = data.subarray(offset, offset + length); break; case "head": - unitsPerEm = getUint16(data, offset + 18); - indexToLocFormat = getUint16(data, offset + 50); + unitsPerEm = readUint16(data, offset + 18); + indexToLocFormat = readUint16(data, offset + 50); break; case "CFF ": cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); From b05f10cd0d568bc050bdaa5d6cbda7a43a948a11 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 12 Jan 2025 18:44:28 +0100 Subject: [PATCH 180/338] Upgrade Puppeteer to version 24.0.0 This is a major version bump, but the changelog at https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v24.0.0 doesn't indicate any breaking changes that should impact us. --- package-lock.json | 85 +++++++++++++++++++++++++++++++---------------- package.json | 2 +- 2 files changed, 57 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9d3e8bc80618e..36005f5385004 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.11.1", + "puppeteer": "^24.0.0", "stylelint": "^16.12.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", @@ -2483,9 +2483,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.6.1.tgz", - "integrity": "sha512-aBSREisdsGH890S2rQqK82qmQYU3uFpSH8wcZWHgHzl3LfzsxAKbLNiAG9mO8v1Y0UICBeClICxPJvyr0rcuxg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.0.tgz", + "integrity": "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3746,6 +3746,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -3754,8 +3755,9 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -3952,14 +3954,14 @@ } }, "node_modules/chromium-bidi": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", - "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.12.0.tgz", + "integrity": "sha512-xzXveJmX826GGq1MeE5okD8XxaDT8172CXByhFJ687eY65rbjOIebdbUuQh+jXKaNyGKI14Veb3KjLLmSueaxA==", "dev": true, "license": "Apache-2.0", "dependencies": { "mitt": "3.0.1", - "zod": "3.23.8" + "zod": "3.24.1" }, "peerDependencies": { "devtools-protocol": "*" @@ -9887,7 +9889,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/prr": { "version": "1.0.1", @@ -9896,9 +9899,9 @@ "dev": true }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, "license": "MIT", "dependencies": { @@ -9925,18 +9928,18 @@ } }, "node_modules/puppeteer": { - "version": "23.11.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-23.11.1.tgz", - "integrity": "sha512-53uIX3KR5en8l7Vd8n5DUv90Ae9QDQsyIthaUFVzwV6yU750RjqRznEtNMBT20VthqAdemnJN+hxVdmMHKt7Zw==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.0.0.tgz", + "integrity": "sha512-KRF2iWdHGSZkQ8pqftR5XR1jqnTqKRVZghMGJfJ665zS8++0cErRG2tXWfp98YqvMzsVLHfzBtTQlk0MMhCxzg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.6.1", - "chromium-bidi": "0.11.0", + "@puppeteer/browsers": "2.7.0", + "chromium-bidi": "0.12.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1367902", - "puppeteer-core": "23.11.1", + "puppeteer-core": "24.0.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -9947,13 +9950,13 @@ } }, "node_modules/puppeteer-core": { - "version": "23.11.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-23.11.1.tgz", - "integrity": "sha512-3HZ2/7hdDKZvZQ7dhhITOUg4/wOrDRjyK2ZBllRB0ZCOi9u0cwq1ACHDjBB+nX+7+kltHjQvBRdeY7+W0T+7Gg==", + "version": "24.0.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.0.0.tgz", + "integrity": "sha512-bHVXmnkYnMVSbsD+pJGt8fmGZLaVYOAieVnJcDxtLIVTMq0s5RfYdzN4xVlFoBQ3T06/sPkXxca3VLVfaqLxzg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.6.1", + "@puppeteer/browsers": "2.7.0", "chromium-bidi": "0.11.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1367902", @@ -9964,6 +9967,30 @@ "node": ">=18" } }, + "node_modules/puppeteer-core/node_modules/chromium-bidi": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", + "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "3.0.1", + "zod": "3.23.8" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/puppeteer-core/node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/queue-lit": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.0.tgz", @@ -11738,9 +11765,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.7.tgz", + "integrity": "sha512-2sAfoF/zw/2n8goUGnGRZTWTD4INtnScPZvyYBI6BDlJ3wNR5o1dw03EfBvuhG6GBLvC4J+C7j7W+64aZ0ogQA==", "dev": true, "license": "MIT", "dependencies": { @@ -13071,9 +13098,9 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", + "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 61bba91f234a6..ac4f90331ef5f 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^23.11.1", + "puppeteer": "^24.0.0", "stylelint": "^16.12.0", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", From e9ff0fe0f9943e6ce0f327e47c52ca6e1c3f842c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 13 Jan 2025 13:03:59 +0100 Subject: [PATCH 181/338] Improve performance when reading very large TrueType "cmap" tables (issue 19319) In the affected font the total number of mapping-entries is `1142348`, and no less than `997473` of them are duplicates. Given that every duplicate causes a lot of Array elements to be moved this becomes extremely inefficient, which we can avoid by keeping track of seen `charCode`s and directly build the final mappings-Array instead. --- src/core/fonts.js | 15 ++++++++++----- test/pdfs/issue19319.pdf.link | 1 + test/test_manifest.json | 10 ++++++++++ 3 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 test/pdfs/issue19319.pdf.link diff --git a/src/core/fonts.js b/src/core/fonts.js index 8dcda2a20ad51..67f8c2b27c9a8 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -1760,17 +1760,22 @@ class Font { mappings.sort(function (a, b) { return a.charCode - b.charCode; }); - for (let i = 1; i < mappings.length; i++) { - if (mappings[i - 1].charCode === mappings[i].charCode) { - mappings.splice(i, 1); - i--; + const finalMappings = [], + seenCharCodes = new Set(); + for (const map of mappings) { + const { charCode } = map; + + if (seenCharCodes.has(charCode)) { + continue; } + seenCharCodes.add(charCode); + finalMappings.push(map); } return { platformId: potentialTable.platformId, encodingId: potentialTable.encodingId, - mappings, + mappings: finalMappings, hasShortCmap, }; } diff --git a/test/pdfs/issue19319.pdf.link b/test/pdfs/issue19319.pdf.link new file mode 100644 index 0000000000000..98295cd81fbe0 --- /dev/null +++ b/test/pdfs/issue19319.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18396493/2023-ESG-report-eng.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index e50d5cadf5471..89ab0677cdb52 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -11254,5 +11254,15 @@ "rounds": 1, "link": true, "type": "other" + }, + { + "id": "issue19319", + "file": "pdfs/issue19319.pdf", + "md5": "8612d3f0cf2dd067ea4aec9c8bf98763", + "rounds": 1, + "link": true, + "firstPage": 2, + "lastPage": 2, + "type": "eq" } ] From 3a3ae0c7dfa058041e583acea6a8992e7908e735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Mon, 13 Jan 2025 11:51:57 +0100 Subject: [PATCH 182/338] Enable editor when double-clicking on stamp annotation In Firefox, double-clicking on a stamp annotation triggers text selection (selecting the last text element in the dom before the annotation): this triggers the logic to make annotations not interfere with text selection, which in turns prevents the double click from triggering the annotation editor. This commit fixes the problem by making annotations non-selectable, so that clicking on them does not trigger text selection. Freetext annotations were already non-selectable, so this commit doesn't change that. However, we need to explicitly mark text in popups as selectable. --- test/integration/stamp_editor_spec.mjs | 31 ++++++++++++++++++++++++++ web/annotation_layer_builder.css | 3 ++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index afbc1e6be1800..edb01595eeb38 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1814,4 +1814,35 @@ describe("Stamp Editor", () => { ); }); }); + + describe("Switch to edit mode by double clicking on an existing stamp annotation", () => { + const annotationSelector = getAnnotationSelector("999R"); + + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19239.pdf", annotationSelector); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must switch to edit mode", async () => { + await Promise.all( + pages.map(async ([, page]) => { + await page.waitForSelector(annotationSelector); + await scrollIntoView(page, annotationSelector); + + await page.click(annotationSelector, { count: 2 }); + + await page.waitForFunction(() => + document + .querySelector(".annotationEditorLayer") + .classList.contains("stampEditing") + ); + }) + ); + }); + }); }); diff --git a/web/annotation_layer_builder.css b/web/annotation_layer_builder.css index 3047adbb2ecfd..21c953b4f9bbd 100644 --- a/web/annotation_layer_builder.css +++ b/web/annotation_layer_builder.css @@ -108,7 +108,6 @@ white-space: nowrap; font: 10px sans-serif; line-height: 1.35; - user-select: none; } } @@ -118,6 +117,7 @@ pointer-events: auto; box-sizing: border-box; transform-origin: 0 0; + user-select: none; &:has(div.annotationContent) { canvas.annotationContent { @@ -315,6 +315,7 @@ white-space: normal; word-wrap: break-word; pointer-events: auto; + user-select: text; } .popupAnnotation.focused .popup { From bee8981408364267db28b0fea7e2bc80f8957c33 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 15 Jan 2025 10:11:57 +0100 Subject: [PATCH 183/338] Access the number of components correctly in JPEG 2000 images with color space entries (issue 19326) This small typo appears to be a regression from PR 18204. --- src/core/image.js | 4 +++- test/pdfs/.gitignore | 1 + test/pdfs/issue19326.pdf | Bin 0 -> 37546 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19326.pdf diff --git a/src/core/image.js b/src/core/image.js index d384935d75361..7ab44bcf9006d 100644 --- a/src/core/image.js +++ b/src/core/image.js @@ -219,7 +219,9 @@ class PDFImage { this.numComps = this.colorSpace.numComps; if (this.jpxDecoderOptions) { - this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComp : 0; + this.jpxDecoderOptions.numComponents = hasColorSpace + ? this.numComps + : 0; // If the jpx image has a color space then it musn't be used in order to // be able to use the color space that comes from the pdf. this.jpxDecoderOptions.isIndexedColormap = diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 3cfd7a0e0fe52..74bc63780255f 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -529,6 +529,7 @@ !bug1743245.pdf !quadpoints.pdf !transparent.pdf +!issue19326.pdf !issue13931.pdf !xobject-image.pdf !issue15441.pdf diff --git a/test/pdfs/issue19326.pdf b/test/pdfs/issue19326.pdf new file mode 100644 index 0000000000000000000000000000000000000000..800d86883866bbad6fd08f88118966cf027642eb GIT binary patch literal 37546 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 Vcl<+4% Date: Tue, 14 Jan 2025 17:54:37 +0100 Subject: [PATCH 184/338] Allow searching for number-number on two lines When a dash separates two digits, it's very likely to not be a hyphen inserted to split a word into two lines (e.g. "par\n-ser"), but rather either a minus sign, a range, or a date. For example, in the tracemonkey PDF there is `2008-02` (a date) split across two lines. Preserving the dash, similarly to how we do for compound words, allows searches for "2008-02" to find a match. --- test/unit/pdf_find_controller_spec.js | 34 ++++++++++++ web/pdf_find_controller.js | 76 ++++++++++++++++----------- 2 files changed, 79 insertions(+), 31 deletions(-) diff --git a/test/unit/pdf_find_controller_spec.js b/test/unit/pdf_find_controller_spec.js index ad5dd49f81a5c..76ac0485fd5bf 100644 --- a/test/unit/pdf_find_controller_spec.js +++ b/test/unit/pdf_find_controller_spec.js @@ -1104,6 +1104,40 @@ describe("pdf_find_controller", function () { }); }); + it("performs a search with a dash between two digits", async () => { + const { eventBus, pdfFindController } = await initPdfFindController(); + + await testSearch({ + eventBus, + pdfFindController, + state: { + query: "2008-02", + }, + matchesPerPage: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], + selectedMatch: { + pageIndex: 13, + matchIndex: 0, + }, + pageMatches: [[], [], [], [], [], [], [], [], [], [], [], [], [], [314]], + pageMatchesLength: [ + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [], + [7], + ], + }); + }); + describe("custom matcher", () => { it("calls to the matcher with the right arguments", async () => { const QUERY = "Foo bar"; diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js index fc6250c65c854..0b46117e9f986 100644 --- a/web/pdf_find_controller.js +++ b/web/pdf_find_controller.js @@ -117,10 +117,12 @@ function normalize(text) { } } + const hasSyllables = syllablePositions.length > 0; + let normalizationRegex; - if (syllablePositions.length === 0 && noSyllablesRegExp) { + if (!hasSyllables && noSyllablesRegExp) { normalizationRegex = noSyllablesRegExp; - } else if (syllablePositions.length > 0 && withSyllablesRegExp) { + } else if (hasSyllables && withSyllablesRegExp) { normalizationRegex = withSyllablesRegExp; } else { // Compile the regular expression for text normalization once. @@ -131,22 +133,33 @@ function normalize(text) { // 30A0-30FF: Katakana const CJK = "(?:\\p{Ideographic}|[\u3040-\u30FF])"; const HKDiacritics = "(?:\u3099|\u309A)"; - const CompoundWord = "\\p{Ll}-\\n\\p{Lu}"; - const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\n)|(\\p{M}+(?:-\\n)?)|(${CompoundWord})|(\\S-\\n)|(${CJK}\\n)|(\\n)`; - - if (syllablePositions.length === 0) { - // Most of the syllables belong to Hangul so there are no need - // to search for them in a non-Hangul document. - // We use the \0 in order to have the same number of groups. - normalizationRegex = noSyllablesRegExp = new RegExp( - regexp + "|(\\u0000)", - "gum" - ); + const BrokenWord = `\\p{Ll}-\\n(?=\\p{Ll})|\\p{Lu}-\\n(?=\\p{L})`; + + const regexps = [ + /* p1 */ `[${replace}]`, + /* p2 */ `[${toNormalizeWithNFKC}]`, + /* p3 */ `${HKDiacritics}\\n`, + /* p4 */ "\\p{M}+(?:-\\n)?", + /* p5 */ `${BrokenWord}`, + /* p6 */ "\\S-\\n", + /* p7 */ `${CJK}\\n`, + /* p8 */ "\\n", + /* p9 */ hasSyllables + ? FIRST_CHAR_SYLLABLES_REG_EXP + : // Most of the syllables belong to Hangul so there are no need + // to search for them in a non-Hangul document. + // We use the \0 in order to have the same number of groups. + "\\u0000", + ]; + normalizationRegex = new RegExp( + regexps.map(r => `(${r})`).join("|"), + "gum" + ); + + if (hasSyllables) { + withSyllablesRegExp = normalizationRegex; } else { - normalizationRegex = withSyllablesRegExp = new RegExp( - regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, - "gum" - ); + noSyllablesRegExp = normalizationRegex; } } @@ -281,26 +294,27 @@ function normalize(text) { } if (p5) { - // Compound word with a line break after the hyphen. - // Since the \n isn't in the original text, o = 3 and n = 3. - shiftOrigin += 1; - eol += 1; - return p5.replace("\n", ""); - } - - if (p6) { - // "X-\n" is removed because an hyphen at the end of a line - // with not a space before is likely here to mark a break - // in a word. + // In "X-\ny", "-\n" is removed because an hyphen at the end of a line + // between two letters is likely here to mark a break in a word. // If X is encoded with UTF-32 then it can have a length greater than 1. // The \n isn't in the original text so here y = i, n = X.len - 2 and // o = X.len - 1. - const len = p6.length - 2; + const len = p5.length - 2; positions.push(i - shift + len, 1 + shift); shift += 1; shiftOrigin += 1; eol += 1; - return p6.slice(0, -2); + return p5.slice(0, -2); + } + + if (p6) { + // A - following a non-space character that is not detected as the + // hyphen breaking a word in two lines needs to be preserved. It could + // be, for example, in a compound word or in a date. + // Only remove the newline. + shiftOrigin += 1; + eol += 1; + return p6.slice(0, -1); } if (p7) { @@ -324,7 +338,7 @@ function normalize(text) { return " "; } - // p8 + // p9 if (i + eol === syllablePositions[syllableIndex]?.[1]) { // A syllable (1 char) is replaced with several chars (n) so // newCharsLen = n - 1. From c16c440336296f1fac344d83a2fb64af6167391f Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 15 Jan 2025 20:20:11 +0100 Subject: [PATCH 185/338] [api-major] Add openjpeg.wasm to pdf.js (bug 1935076) In order to fix bug 1935076, we'll have to add a pure js fallback in case wasm is disabled or simd isn't supported. Unfortunately, this fallback will take some space. So, the main goal of this patch is to reduce the overall size (by ~93k). As a side effect, it should make easier to use an other wasm file (which must export _jp2_decode, _malloc and _free). --- external/openjpeg/openjpeg.js | 5 +- external/openjpeg/openjpeg.wasm | Bin 0 -> 254794 bytes gulpfile.mjs | 16 ++++++ src/core/base_stream.js | 4 ++ src/core/decode_stream.js | 5 +- src/core/evaluator.js | 6 ++ src/core/jpx.js | 97 ++++++++++++++++++++++++++++---- src/core/jpx_stream.js | 12 ++-- src/display/api.js | 42 +++++++++++++- src/display/node_utils.js | 11 ++++ src/display/stubs.js | 4 ++ src/display/wasm_factory.js | 63 +++++++++++++++++++++ test/driver.js | 2 + test/test_manifest.json | 8 +++ test/unit/test_utils.js | 3 + test/unit/unit_test.html | 1 + test/webserver.mjs | 1 + tsconfig.json | 1 + web/app_options.js | 12 +++- web/viewer-geckoview.html | 1 + web/viewer.html | 1 + 21 files changed, 275 insertions(+), 20 deletions(-) create mode 100644 external/openjpeg/openjpeg.wasm create mode 100644 src/display/wasm_factory.js diff --git a/external/openjpeg/openjpeg.js b/external/openjpeg/openjpeg.js index fc26a60149b17..cfdedd431de20 100644 --- a/external/openjpeg/openjpeg.js +++ b/external/openjpeg/openjpeg.js @@ -1,12 +1,11 @@ - var OpenJPEG = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; return ( -function(moduleArg = {}) { +async function(moduleArg = {}) { var moduleRtn; -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;Module.decode=function(bytes,{numComponents=4,isIndexedColormap=false,smaskInData=false}){const size=bytes.length;const ptr=Module._malloc(size);Module.HEAPU8.set(bytes,ptr);const ret=Module._jp2_decode(ptr,size,numComponents>0?numComponents:0,!!isIndexedColormap,!!smaskInData);Module._free(ptr);if(ret){const{errorMessages}=Module;if(errorMessages){delete Module.errorMessages;return errorMessages}return"Unknown error"}const{imageData}=Module;Module.imageData=null;return imageData};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=url=>fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);function findWasmBinary(){var f="data:application/octet-stream;base64,AGFzbQEAAAAB2QEcYAN/f38Bf2AEf39/fwF/YAF/AGACf38AYAF/AX9gA39/fwBgAn9/AX9gBH9/f38AYAN/fn8BfmAFf39/f38Bf2AAAGACfn8Bf2ADf35/AX9gAn5/AX5gBX9/f39/AGAHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38Bf2AGf39/f39/AX9gAAF/YAZ/f39/f38AYAZ/fH9/f38Bf2ACf3wBf2AIf39/f39/f38AYAh/f39/f39/fwF/YAd/f39/f39/AGACfH8BfGACf3wAAnMTAWEBYQACAWEBYgABAWEBYwAFAWEBZAACAWEBZQAOAWEBZgAHAWEBZwADAWEBaAAHAWEBaQAFAWEBagAJAWEBawACAWEBbAAKAWEBbQAKAWEBbgAWAWEBbwAEAWEBcAAGAWEBcQAGAWEBcgAEAWEBcwADA80BywEHAgUABgQABQYEAQUEDgUXBgICAgIABhAGEQQCCwwSAgUCBAcEAhMDFAMCAgYCGAMHBQAABAMBCgkJAwAJBgEEBAUFEw8BAQMAAwYCEAQUGQIHBgMHBwEBAgAECgYaBwQEDw4DBgQABAICAgAGBgABAQEBAQEBAQAAAAAABgMCAgIDAwMDAwoKAgIbAAMVCAQEAAgDAwkECAsNAAgAAQEBAQEBAQEBDAAEBAUJDwESEQEAAAYDAwEFBQUFBQUFBQENAQEBAQEBAQEBCwQFAXABcnIFBwEBggKAgAIGCAF/AUHQ4AULByAHAXQCAAF1AEoBdgCpAQF3ABQBeAEAAXkAqAEBegCdAQnRAQEAQQELcVrdAdMBgQGBATC5Aa4BqgGYAZcBlgGVAZQBkwGSAZEBW44BjQGMAYsBK4oBiQGIAYcBhgGFAYQBgwGCAdwB2wHaAdkB2AHXAUnWAdUBSUnUAdIB0QHQAc8BzgHNAcwBywHKAcQBuAG3AbYBtQG0AbMBsgGxAbABrwGtAawBqwFSU1VbUZABXEBZjwFYTk9XMSy8AbsBvQHFAckBxgHAAboBvgG/AccByAF9wQHCAcMBWqcBpgGeAaABnwGaAaMBpAGlAaIBoQGbAZwBCsmtDssBggIBA38jAEGQBGsiBCQAAkAgAEUNAAJAAkACQAJAIAFBAWsOBAABBAIECyAAQQxqIQEMAgsgAEEQaiEBIABBBGohAAwBCyAAQRRqIQEgAEEIaiEACyABKAIAIgVFDQAgAkUNACAAKAIAIQYgBEEAQYAEEBkiASADNgKMBCMAQaABayIAJAAgACABNgKUASAAQf8DNgKYASAAQQBBkAEQGSIAQX82AkwgAEHnADYCJCAAQX82AlAgACAAQZ8BajYCLCAAIABBlAFqNgJUIAFBADoAACAAIAIgA0HoAEHpABB1IABBoAFqJAAgAUEAOgD/AyABIAYgBREDAAsgBEGQBGokAAvQAgEFfyAABEAgAEEEayIDKAIAIgQhASADIQIgAEEIaygCACIAIABBfnEiAEcEQCACIABrIgIoAgQiASACKAIIIgU2AgggBSABNgIEIAAgBGohAQsgAyAEaiIAKAIAIgMgACADakEEaygCAEcEQCAAKAIEIgQgACgCCCIANgIIIAAgBDYCBCABIANqIQELIAIgATYCACACIAFBfHFqQQRrIAFBAXI2AgAgAgJ/IAIoAgBBCGsiAEH/AE0EQCAAQQN2QQFrDAELIABnIQMgAEEdIANrdkEEcyADQQJ0a0HuAGogAEH/H00NABpBPyAAQR4gA2t2QQJzIANBAXRrQccAaiIAIABBP08bCyIBQQR0IgBB4M0BajYCBCACIABB6M0BaiIAKAIANgIIIAAgAjYCACACKAIIIAI2AgRB6NUBQejVASkDAEIBIAGthoQ3AwALC8kCAQR/IAFBADYCAAJAIAJFDQAgASACaiEDAkAgAkEQSQRAIAAhAQwBCwJAIAEgACACak8NACAAIANPDQAgACEBDAELIANBEGshBiAAIAJBcHEiBWohASADIAVrIQMDQCAGIARrIAAgBGr9AAAA/QwAAAAAAAAAAAAAAAAAAAAA/Q0PDg0MCwoJCAcGBQQDAgEA/QsAACAEQRBqIgQgBUcNAAsgAiAFRg0BCwJAIAJBA3EiBkUEQCAFIQQMAQtBACEAIAUhBANAIANBAWsiAyABLQAAOgAAIARBAWohBCABQQFqIQEgAEEBaiIAIAZHDQALCyAFIAJrQXxLDQADQCADQQFrIAEtAAA6AAAgA0ECayABLQABOgAAIANBA2sgAS0AAjoAACADQQRrIgMgAS0AAzoAACABQQRqIQEgBEEEaiIEIAJHDQALCwuCBAEDfyACQYAETwRAIAAgASACEAIgAA8LIAAgAmohAwJAIAAgAXNBA3FFBEACQCAAQQNxRQRAIAAhAgwBCyACRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAkEDcUUNASACIANJDQALCyADQXxxIQQCQCADQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0EEayIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAswAQF/AkAgAEUNACABRQ0AQQggACABbCIBECkiAARAIABBACABEBkaCyAAIQILIAILEQAgAEUEQEEADwtBCCAAECkL8gICAn8BfgJAIAJFDQAgACABOgAAIAAgAmoiA0EBayABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBA2sgAToAACADQQJrIAE6AAAgAkEHSQ0AIAAgAToAAyADQQRrIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBBGsgATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQQhrIAE2AgAgAkEMayABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkEQayABNgIAIAJBFGsgATYCACACQRhrIAE2AgAgAkEcayABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa1CgYCAgBB+IQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASAC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CyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0HUzQFBGTYCAEF/DwsgACABOgAAQQELfgIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR/QQAFIABEAAAAAAAA8EOiIAEQcCEAIAEoAgBBQGoLNgIAIAAPCyABIAJB/gdrNgIAIANC/////////4eAf4NCgICAgICAgPA/hL8FIAALC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC28BBX8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF/IQQgAkHMmbPmAE0EQEF/IAEgAkEKbCIFaiABIAVB/////wdzSxshBAsgACADQQFqIgU2AgAgAywAASAEIQIgBSEDQTBrIgFBCkkNAAsgAgtJAQF/AkBBAUEsEBciAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAXIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQFAtBACEBCyABC64UAhJ/An4jAEFAaiIIJAAgCCABNgI8IAhBJ2ohFyAIQShqIRICQAJAAkACQANAQQAhBwNA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KAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEBYaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEBYaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC6YFAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIQIgASkDCCEHIwBBIGsiCCQAIAdC////////P4MhBAJ+IAdCMIhC//8BgyIDpyIKQYH4AGtB/Q9NBEAgBEIEhiACQjyIhCEDIApBgPgAa60hBAJAIAJC//////////8PgyICQoGAgICAgICACFoEQCADQgF8IQMMAQsgAkKAgICAgICAgAhSDQAgA0IBgyADfCEDC0IAIAMgA0L/////////B1YiABshAiAArSAEfAwBCwJAIAIgBIRQDQAgA0L//wFSDQAgBEIEhiACQjyIhEKAgICAgICABIQhAkL/DwwBCyAKQf6HAUsEQEIAIQJC/w8MAQtBgPgAQYH4ACADUCIBGyIAIAprIglB8ABKBEBCACECQgAMAQsgAiEDIAQgBEKAgICAgIDAAIQgARsiBSEGAkBBgAEgCWsiAUHAAHEEQCACIAFBQGqthiEGQgAhAwwBCyABRQ0AIAYgAa0iBIYgA0HAACABa62IhCEGIAMgBIYhAwsgCCADNwMQIAggBjcDGAJAIAlBwABxBEAgBSAJQUBqrYghAkIAIQUMAQsgCUUNACAFQcAAIAlrrYYgAiAJrSIDiIQhAiAFIAOIIQULIAggAjcDACAIIAU3AwggCCkDCEIEhiAIKQMAIgNCPIiEIQICQCAAIApHIAgpAxAgCCkDGIRCAFJxrSADQv//////////D4OEIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILIAJCgICAgICAgAiFIAIgAkL/////////B1YiABshAiAArQshAyAIQSBqJAAgB0KAgICAgICAgIB/gyADQjSGhCAChL85AwAL9BcDEn8BfAN+IwBBsARrIgwkACAMQQA2AiwCQCABvSIZQgBTBEBBASEQQboIIRQgAZoiAb0hGQwBCyAEQYAQcQRAQQEhEEG9CCEUDAELQcAI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ACgCRCICQQN0aiIFIAQoAhQ7AQAgBSAEKAIQNgIEQQEhBSAAIAJBAWo2AkQgASAJaiECIAZBAWoiBiAKRw0ACwwCC0EBIAYgBkEBTRshByAAKAJEIQFBACEGA0AgBCABNgIUIAEgACgChAEgACgCgAFsTw0BIAIgBEEQaiAJEBUgCCAAKAJEIgpBA3RqIgUgATsBACAFIAQoAhA2AgRBASEFIAAgCkEBaiIBNgJEIAIgCWohAiAGQQFqIgYgB0cNAAsMAQsgAEEBNgJMIAQgATYCACADQQJB0jwgBBATCyAEQSBqJAAgBQsEAEEACwvLwQEhAEGACAvgmQFjYW5ub3QgYWxsb2NhdGUgb3BqX3RjZF9zZWdfZGF0YV9jaHVua190KiBhcnJheQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AFVua25vd24gZm9ybWF0AEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQAvdG1wL29wZW5qcGVnL3NyYy9iaW4vY29tbW9uL2NvbG9yLmMAQUxMX0NQVVMAT1BKX05VTV9USFJFQURTAE5BTgBPSlBfRE9fTk9UX0RJU1BMQVlfVElMRV9JTkRFWF9JRl9UTE0ASU5GAHBfajJrLT5tX3NwZWNpZmljX3BhcmFtLm1fZGVjb2Rlci5tX3NvdF9sZW5ndGggPiBVSU5UX01BWCAtIE9QSl9DT01NT05fQ0JMS19EQVRBX0VYVFJBAAkJCSBwcmVjY2ludHNpemUgKHcsaCk9AAkJCSBzdGVwc2l6ZXMgKG0sZSk9AFNPVCBtYXJrZXIgZm9yIHRpbGUgJXUgZGVjbGFyZXMgbW9yZSB0aWxlLXBhcnRzIHRoYW4gZm91bmQgaW4gVExNIG1hcmtlci4AKG51bGwpACglZCwlZCkgACVzfQoACQkgfQoAW0RFVl0gRHVtcCBhbiBpbWFnZV9jb21wX2hlYWRlciBzdHJ1Y3QgewoAW0RFVl0gRHVtcCBhbiBpbWFnZV9oZWFkZXIgc3RydWN0IHsKAEltYWdlIGluZm8gewoACSBkZWZhdWx0IHRpbGUgewoAJXMJIGNvbXBvbmVudCAlZCB7CgAJCSBjb21wICVkIHsKAAkgVGlsZSBpbmRleDogewoACSBNYXJrZXIgbGlzdDogewoAQ29kZXN0cmVhbSBpbmRleCBmcm9tIG1haW4gaGVhZGVyOiB7CgBDb2Rlc3RyZWFtIGluZm8gZnJvbSBtYWluIGhlYWRlcjogewoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3gKAEZvdW5kIGEgbWlzcGxhY2VkICclYyVjJWMlYycgYm94IG91dHNpZGUganAyaCBib3gKAE1hbGZvcm1lZCBKUDIgZmlsZSBmb3JtYXQ6IGZpcnN0IGJveCBtdXN0IGJlIEpQRUcgMjAwMCBzaWduYXR1cmUgYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBzZWNvbmQgYm94IG11c3QgYmUgZmlsZSB0eXBlIGJveAoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGJveAoATm90IGVub3VnaCBtZW1vcnkgd2l0aCBGVFlQIEJveAoAQSBtYXJrZXIgSUQgd2FzIGV4cGVjdGVkICgweGZmLS0pIGluc3RlYWQgb2YgJS44eAoACQkgbWN0PSV4CgAJCQkgY2Jsa3N0eT0lI3gKAAkJCSBjc3R5PSUjeAoACQkgcHJnPSUjeAoASW50ZWdlciBvdmVyZmxvdwoACSB0ZHg9JXUsIHRkeT0ldQoACSB0dz0ldSwgdGg9JXUKAAkgdHgwPSV1LCB0eTA9JXUKAEludmFsaWQgY29tcG9uZW50IGluZGV4OiAldQoAU3RyZWFtIHRvbyBzaG9ydAoATWFya2VyIGhhbmRsZXIgZnVuY3Rpb24gZmFpbGVkIHRvIHJlYWQgdGhlIG1hcmtlciBzZWdtZW50CgBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgY3VycmVudCBwcmVjaW5jdCBjb2RlYmxvY2sgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50CgBFcnJvciByZWFkaW5nIFNRY2Qgb3IgU1FjYyBlbGVtZW50CgBBIEJQQ0MgaGVhZGVyIGJveCBpcyBhdmFpbGFibGUgYWx0aG91Z2ggQlBDIGdpdmVuIGJ5IHRoZSBJSERSIGJveCAoJWQpIGluZGljYXRlIGNvbXBvbmVudHMgYml0IGRlcHRoIGlzIGNvbnN0YW50CgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGlsbGVnYWwgdGlsZSBvZmZzZXQKAEludmFsaWQgcHJlY2luY3QKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBiYW5kIHByZWNpbnRzCgBGYWlsZWQgdG8gZGVjb2RlIGFsbCB1c2VkIGNvbXBvbmVudHMKAFNpemUgb2YgY29kZSBibG9jayBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAU2l6ZSBvZiB0aWxlIGRhdGEgZXhjZWVkcyBzeXN0ZW0gbGltaXRzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgTUNUIG1hcmtlcnMKAENvcnJ1cHRlZCBQUE0gbWFya2VycwoATm90IGVub3VnaCBtZW1vcnkgZm9yIHRpbGUgcmVzb2x1dGlvbnMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBtdWx0aXBsZSBjb2xsZWN0aW9ucwoASW52YWxpZCBQQ0xSIGJveC4gUmVwb3J0cyAwIHBhbGV0dGUgY29sdW1ucwoAV2UgZG8gbm90IHN1cHBvcnQgUk9JIGluIGRlY29kaW5nIEhUIGNvZGVibG9ja3MKAENhbm5vdCBoYW5kbGUgYm94IG9mIHVuZGVmaW5lZCBzaXplcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIGNvbGxlY3Rpb25zIHdpdGhvdXQgc2FtZSBudW1iZXIgb2YgaW5kaXhlcwoASW52YWxpZCB0aWxlYy0+d2luX3h4eCB2YWx1ZXMKAENhbm5vdCBoYW5kbGUgYm94IG9mIGxlc3MgdGhhbiA4IGJ5dGVzCgBDYW5ub3QgaGFuZGxlIFhMIGJveCBvZiBsZXNzIHRoYW4gMTYgYnl0ZXMKAENvbXBvbmVudCBpbmRleCAldSB1c2VkIHNldmVyYWwgdGltZXMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgJWQgZW50cmllcwoATm90IGVub3VnaCBtZW1vcnkgdG8gY3JlYXRlIFRhZy10cmVlIG5vZGVzCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbWN0IGRhdGEgd2l0aGluIG11bHRpcGxlIE1DVCByZWNvcmRzCgBDYW5ub3QgZGVjb2RlIHRpbGUsIG1lbW9yeSBlcnJvcgoAb3BqX2oya19hcHBseV9uYl90aWxlX3BhcnRzX2NvcnJlY3Rpb24gZXJyb3IKAFByb2JsZW0gd2l0aCBza2lwcGluZyBKUEVHMjAwMCBib3gsIHN0cmVhbSBlcnJvcgoAUHJvYmxlbSB3aXRoIHJlYWRpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFVua25vd24gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgdGwgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBhZGQgbWggbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byB0YWtlIGluIGNoYXJnZSBTSVogbWFya2VyCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgUFBUIG1hcmtlcgoARXJyb3IgcmVhZGluZyBTT1QgbWFya2VyCgBEaWQgbm90IGdldCBleHBlY3RlZCBTT1QgbWFya2VyCgBFcnJvciByZWFkaW5nIFBMVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgTUNUIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBNQ1QgbWFya2VyCgBOb3QgZW5vdWdoIHNwYWNlIGZvciBleHBlY3RlZCBTT1AgbWFya2VyCgBFeHBlY3RlZCBTT1AgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DTyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUkdOIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUE0gbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgcmVxdWlyZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoAb3BqX2oya19idWlsZF90cF9pbmRleF9mcm9tX3RsbSgpOiB0aWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFNPVCBtYXJrZXIuIFRpbGUgaW5kZXggYWxsb2NhdGlvbiBmYWlsZWQKAElnbm9yaW5nIGloZHIgYm94LiBGaXJzdCBpaGRyIGJveCBhbHJlYWR5IHJlYWQKAFpwcHQgJXUgYWxyZWFkeSByZWFkCgBacHBtICV1IGFscmVhZHkgcmVhZAoAUFRFUk0gY2hlY2sgZmFpbHVyZTogJWQgc3ludGhlc2l6ZWQgMHhGRiBtYXJrZXJzIHJlYWQKAAkJCSBjYmxrdz0yXiVkCgAJCQkgY2Jsa2g9Ml4lZAoACQkJIHFudHN0eT0lZAoAJXMgZHg9JWQsIGR5PSVkCgAJCQkgcm9pc2hpZnQ9JWQKAAkJCSBudW1nYml0cz0lZAoACQkgbnVtbGF5ZXJzPSVkCgAlcyBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBhY249JWQsIG51bWNvbXBzPSVkCgBvcGpfanAyX2FwcGx5X2NkZWY6IGNuPSVkLCBudW1jb21wcz0lZAoACQkJIG51bXJlc29sdXRpb25zPSVkCgAJCSB0eXBlPSUjeCwgcG9zPSVsbGksIGxlbj0lZAoAJXMgc2duZD0lZAoACQkJIHFtZmJpZD0lZAoAJXMgcHJlYz0lZAoACQkgbmIgb2YgdGlsZS1wYXJ0IGluIHRpbGUgWyVkXT0lZAoAJXMgeDE9JWQsIHkxPSVkCgAlcyB4MD0lZCwgeTA9JWQKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAlZC8lZAoAU2V0dGluZyBkZWNvZGluZyBhcmVhIHRvICVkLCVkLCVkLCVkCgBGYWlsZWQgdG8gZGVjb2RlIGNvbXBvbmVudCAlZAoASW52YWxpZCB2YWx1ZSBmb3IgbnVtcmVzb2x1dGlvbnMgOiAlZCwgbWF4IHZhbHVlIGlzIHNldCBpbiBvcGVuanBlZy5oIGF0ICVkCgBJbnZhbGlkIGNvbXBvbmVudCBudW1iZXI6ICVkLCByZWdhcmRpbmcgdGhlIG51bWJlciBvZiBjb21wb25lbnRzICVkCgBUb28gbWFueSBQT0NzICVkCgBvcGpfajJrX3JlYWRfdGxtKCk6IGludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBudW1iZXIgJWQKAEludmFsaWQgdGlsZSBwYXJ0IGluZGV4IGZvciB0aWxlIG51bWJlciAlZC4gR290ICVkLCBleHBlY3RlZCAlZAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBudW1iZXIgb2YgY29tcG9uZW50IGlzIGlsbGVnYWwgLT4gJWQKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBjaWVsYWIKAENhbm5vdCBhbGxvY2F0ZSBjYmxrLT5kZWNvZGVkX2RhdGEKAEZhaWxlZCB0byBtZXJnZSBQUFQgZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQTSBkYXRhCgBJbnZhbGlkIG51bWJlciBvZiBsYXllcnMgaW4gQ09EIG1hcmtlciA6ICVkIG5vdCBpbiByYW5nZSBbMS02NTUzNV0KACVzOiVkOmNvbG9yX2NteWtfdG9fcmdiCglDQU4gTk9UIENPTlZFUlQKACVzOiVkOmNvbG9yX2VzeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgAlczolZDpjb2xvcl9zeWNjX3RvX3JnYgoJQ0FOIE5PVCBDT05WRVJUCgBTdHJlYW0gdG9vIHNob3J0LCBleHBlY3RlZCBTT1QKAFVuYWJsZSB0byBzZXQgdDEgaGFuZGxlIGFzIFRMUwoAU290IGxlbmd0aCBpcyBsZXNzIHRoYW4gbWFya2VyIHNpemUgKyBtYXJrZXIgSUQKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAG9wal9qMmtfYnVpbGRfdHBfaW5kZXhfZnJvbV90bG0oKTogdGlsZSAlZCBoYXMgbm8gcmVnaXN0ZXJlZCB0aWxlLXBhcnQgaW4gVExNIG1hcmtlciBzZWdtZW50cy4KAG9wal9qMmtfcmVhZF90bG0oKTogdG9vIG1hbnkgVExNIG1hcmtlcnMuCgBvcGpfajJrX3JlYWRfdGxtKCk6IGNhbm5vdCBhbGxvY2F0ZSBtX3RpbGVfcGFydF9pbmZvcy4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoARXJyb3IgcmVhZGluZyBUTE0gbWFya2VyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAb3BqX2oya19yZWFkX3RsbSgpOiBUTE0gbWFya2VyIG5vdCBvZiBleHBlY3RlZCBzaXplLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBvcGpfajJrX3JlYWRfdGxtKCk6IFNUID0gMyBpcyBpbnZhbGlkLgoAT25seSBvbmUgQ01BUCBib3ggaXMgYWxsb3dlZC4KAFdlIG5lZWQgYW4gaW1hZ2UgcHJldmlvdXNseSBjcmVhdGVkLgoASUhEUiBib3hfbWlzc2luZy4gUmVxdWlyZWQuCgBKUDJIIGJveCBtaXNzaW5nLiBSZXF1aXJlZC4KAE5vdCBzdXJlIGhvdyB0aGF0IGhhcHBlbmVkLgoATWFpbiBoZWFkZXIgaGFzIGJlZW4gY29ycmVjdGx5IGRlY29kZWQuCgBUaWxlICVkLyVkIGhhcyBiZWVuIGRlY29kZWQuCgBIZWFkZXIgb2YgdGlsZSAlZCAvICVkIGhhcyBiZWVuIHJlYWQuCgBFbXB0eSBTT1QgbWFya2VyIGRldGVjdGVkOiBQc290PSVkLgoARGlyZWN0IHVzZSBhdCAjJWQgaG93ZXZlciBwY29sPSVkLgoASW1wbGVtZW50YXRpb24gbGltaXRhdGlvbjogZm9yIHBhbGV0dGUgbWFwcGluZywgcGNvbFslZF0gc2hvdWxkIGJlIGVxdWFsIHRvICVkLCBidXQgaXMgZXF1YWwgdG8gJWQuCgBJbnZhbGlkIGNvbXBvbmVudC9wYWxldHRlIGluZGV4IGZvciBkaXJlY3QgbWFwcGluZyAlZC4KAEludmFsaWQgdmFsdWUgZm9yIGNtYXBbJWRdLm10eXAgPSAlZC4KAFBzb3QgdmFsdWUgaXMgbm90IGNvcnJlY3QgcmVnYXJkcyB0byB0aGUgSlBFRzIwMDAgbm9ybTogJWQuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBWTEMgY29kZSBwcm9kdWNlcyBzaWduaWZpY2FudCBzYW1wbGVzIG91dHNpZGUgdGhlIGNvZGVibG9jayBhcmVhLgoAVW5leHBlY3RlZCBPT00uCgAzMiBiaXRzIGFyZSBub3QgZW5vdWdoIHRvIGRlY29kZSB0aGlzIGNvZGVibG9jaywgc2luY2UgdGhlIG51bWJlciBvZiBiaXRwbGFuZSwgJWQsIGlzIGxhcmdlciB0aGFuIDMwLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgc2hvdWxkIGJlID4gMC4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgc2hvdWxkIGJlID4gMC4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgc2hvdWxkIGJlID49IDAuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgc2hvdWxkIGJlID49IDAuCgBFcnJvciByZWFkaW5nIFBQVCBtYXJrZXI6IHBhY2tldCBoZWFkZXIgaGF2ZSBiZWVuIHByZXZpb3VzbHkgZm91bmQgaW4gdGhlIG1haW4gaGVhZGVyIChQUE0gbWFya2VyKS4KAFN0YXJ0IHRvIHJlYWQgajJrIG1haW4gaGVhZGVyICglbGxkKS4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlzaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBMZWZ0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWHNpej0lZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFlPc2l6PSVkKS4KAFJpZ2h0IHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl94MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWE9zaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAFNpemUgeCBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS53PSVkKS4KAFNpemUgeSBvZiB0aGUgZGVjb2RlZCBjb21wb25lbnQgaW1hZ2UgaXMgaW5jb3JyZWN0IChjb21wWyVkXS5oPSVkKS4KAFRpbGUgcmVhZCwgZGVjb2RlZCBhbmQgdXBkYXRlZCBpcyBub3QgdGhlIGRlc2lyZWQgb25lICglZCB2cyAlZCkuCgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleCAlZCAoPj0gJWQpLgoAb3BqX3JlYWRfaGVhZGVyKCkgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMoKS4KAE1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbWFnZS0+Y29tcHNbJWRdLmRhdGEgPT0gTlVMTCBpbiBvcGpfanAyX2FwcGx5X3BjbHIoKS4KAGludmFsaWQgYm94IHNpemUgJWQgKCV4KQoARmFpbCB0byByZWFkIHRoZSBjdXJyZW50IG1hcmtlciBzZWdtZW50ICglI3gpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IElIRFIgdygldSkgaCgldSkgdnMuIFNJWiB3KCV1KSBoKCV1KQoARXJyb3IgcmVhZGluZyBDT0MgbWFya2VyIChiYWQgbnVtYmVyIG9mIGNvbXBvbmVudHMpCgBJbnZhbGlkIG51bWJlciBvZiB0aWxlcyA6ICV1IHggJXUgKG1heGltdW0gZml4ZWQgYnkganBlZzIwMDAgbm9ybSBpcyA2NTUzNSB0aWxlcykKAEludmFsaWQgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGloZHIpCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgaW1hZ2UgaGVhZGVyIChpaGRyKQoAV3JvbmcgdmFsdWVzIGZvcjogdyglZCkgaCglZCkgbnVtY29tcHMoJWQpIChpaGRyKQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IGR4PSV1IGR5PSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAyNTUgYWNjb3JkaW5nIHRvIHRoZSBKUEVHMjAwMCBub3JtKQoAQmFkIGltYWdlIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBCYWQgQlBDQyBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbmVnYXRpdmUgb3IgemVybyBpbWFnZSBzaXplICglbGxkIHggJWxsZCkKAHNraXA6IHNlZ21lbnQgdG9vIGxvbmcgKCVkKSB3aXRoIG1heCAoJWQpIGZvciBjb2RlYmxvY2sgJWQgKHA9JWQsIGI9JWQsIHI9JWQsIGM9JWQpCgByZWFkOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoARGVzcGl0ZSBKUDIgQlBDIT0yNTUsIHByZWNpc2lvbiBhbmQvb3Igc2duZCB2YWx1ZXMgZm9yIGNvbXBbJWRdIGlzIGRpZmZlcmVudCB0aGFuIGNvbXBbMF06CiAgICAgICAgWzBdIHByZWMoJWQpIHNnbmQoJWQpIFslZF0gcHJlYyglZCkgc2duZCglZCkKAGJhZCBjb21wb25lbnQgbnVtYmVyIGluIFJHTiAoJWQgd2hlbiB0aGVyZSBhcmUgb25seSAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogbnVtYmVyIG9mIGNvbXBvbmVudCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSByZW1haW5pbmcgbnVtYmVyIG9mIHBhcmFtZXRlcnMgKCAlZCB2cyAlZCkKAEVycm9yIHdpdGggU0laIG1hcmtlcjogaW52YWxpZCB0aWxlIHNpemUgKHRkeDogJWQsIHRkeTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChiYWQgc2l6ZTogJWQpCgBCYWQgQ09MUiBoZWFkZXIgYm94IChDSUVMYWIsIGJhZCBzaXplOiAlZCkKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHJlbWFpbmluZyBieXRlcyBpbiBjb2RlIGJsb2NrICglZCB1c2VkIC8gJWQpCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBPbmUgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb24gaXMgbm90IG1ldDogMiA8PSBTY3VwIDw9IG1pbihMY3VwLCA0MDc5KQoASW52YWxpZCB2YWx1ZXMgZm9yIGNvbXAgPSAlZCA6IHByZWM9JXUgKHNob3VsZCBiZSBiZXR3ZWVuIDEgYW5kIDM4IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybS4gT3BlbkpwZWcgb25seSBzdXBwb3J0cyB1cCB0byAzMSkKAEludmFsaWQgYml0IG51bWJlciAlZCBpbiBvcGpfdDJfcmVhZF9wYWNrZXRfaGVhZGVyKCkKAFN0cmVhbSBlcnJvciEKAEVycm9yIG9uIHdyaXRpbmcgc3RyZWFtIQoAU3RyZWFtIHJlYWNoZWQgaXRzIGVuZCAhCgBFeHBlY3RlZCBhIFNPQyBtYXJrZXIgCgBJbnZhbGlkIGJveCBzaXplICVkIGZvciBib3ggJyVjJWMlYyVjJy4gTmVlZCAlZCBieXRlcywgJWQgYnl0ZXMgcmVtYWluaW5nIAoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gRGVjb2RpbmcgdGhpcyBjb2RlYmxvY2sgaXMgc3RvcHBlZC4gVV9xIGlzIGxhcmdlciB0aGFuIHplcm8gYml0cGxhbmVzICsgMSAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpc2xhcmdlciB0aGFuIGJpdHBsYW5lcyArIDEgCgBDT0xSIEJPWCBtZXRoIHZhbHVlIGlzIG5vdCBhIHJlZ3VsYXIgdmFsdWUgKCVkKSwgc28gd2Ugd2lsbCBpZ25vcmUgdGhlIGVudGlyZSBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3guIAoAV2hpbGUgcmVhZGluZyBDQ1BfUU5UU1RZIGVsZW1lbnQgaW5zaWRlIFFDRCBvciBRQ0MgbWFy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AAAAAFQAAKBTAAABJAAAAAAAABBUAACwUwAAASQAAAEAAAAgVAAAwFMAAAEiAAAAAAAAMFQAANBTAAABIgAAAQAAAEBUAADgUwAAARwAAAAAAABQVAAA8FMAAAEcAAABAAAAYFQAAABUAAABGAAAAAAAAHBUAAAQVAAAARgAAAEAAACAVAAAIFQAAAEWAAAAAAAAkFQAADBUAAABFgAAAQAAAKBUAABAVAAAARQAAAAAAACwVAAAUFQAAAEUAAABAAAAwFQAAGBUAAABEgAAAAAAANBUAABwVAAAARIAAAEAAADgVAAAgFQAAAERAAAAAAAA8FQAAJBUAAABEQAAAQAAAABVAACgVAAAwQoAAAAAAAAQVQAAsFQAAMEKAAABAAAAIFUAAMBUAADBCQAAAAAAADBVAADQVAAAwQkAAAEAAABAVQAA4FQAAKEIAAAAAAAAUFUAAPBUAAChCAAAAQAAAGBVAAAAVQAAIQUAAAAAAABwVQAAEFUAACEFAAABAAAAgFUAACBVAABBBAAAAAAAAJBVAAAwVQAAQQQAAAEAAACgVQAAQFUAAKECAAAAAAAAsFUAAFBVAAChAgAAAQAAAMBVAABgVQAAIQIAAAAAAADQVQAAcFUAACECAAABAAAA4FUAAIBVAABBAQAAAAAAAPBVAACQVQAAQQEAAAEAAAAAVgAAoFUAABEBAAAAAAAAEFYAALBVAAARAQAAAQAAACBWAADAVQAAhQAAAAAAAAAwVgAA0FUAAIUAAAABAAAAQFYAAOBVAABJAAAAAAAAAFBWAADwVQAASQAAAAEAAABgVgAAAFYAACUAAAAAAAAAcFYAABBWAAAlAAAAAQAAAIBWAAAgVgAAFQAAAAAAAACQVgAAMFYAABUAAAABAAAAoFYAAEBWAAAJAAAAAAAAALBWAABQVgAACQAAAAEAAADAVgAAYFYAAAUAAAAAAAAA0FYAAHBWAAAFAAAAAQAAAOBWAACAVgAAAQAAAAAAAADQVgAAkFYAAAEAAAABAAAA4FYAAKBWAAABVgAAAAAAAPBWAADwVgAAAVYAAAEAAAAAVwAAAFcAAAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAEFBgECBgYDAwcHAwMHBwABBQYBAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcFBggIBgYICAcHCAgHBwgIBQYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAECBgYCAgYGAwMHBwMDBwcBAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcCAgYGAgIGBgMDBwcDAwcHAgIGBgICBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgAAQMDAQIDAwUGBwcGBgcHAAEDAwECAwMFBgcHBgYHBwUGBwcGBgcHCAgICAgICAgFBgcHBgYHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAQIDAwICAwMGBgcHBgYHBwECAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAICAwMCAgMDBgYHBwYGBwcCAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAADAQQDBgQHAQQCBQQHBQcAAwEEAwYEBwEEAgUEBwUHAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIAQQCBQQHBQcCBQIFBQcFBwEEAgUEBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgDBgQHBggHCAQHBQcHCAcIAwYEBwYIBwgEBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgEBwUHBwgHCAUHBQcHCAcIBggHCAgICAgHCAcICAgICAYIBwgICAgIBwgHCAgICAgH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";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw'sync fetching of the wasm failed: you can preload it to Module["wasmBinary"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}function instantiateSync(file,info){var module;var binary=getBinarySync(file);module=new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return[instance,module]}function getWasmImports(){return{a:wasmImports}}function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["t"];updateMemoryViews();addOnInit(wasmExports["u"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();var result=instantiateSync(wasmBinaryFile,info);return receiveInstance(result[0])}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=Module; +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){var f="openjpeg.wasm";if(!isDataURI(f)){return locateFile(f)}return f}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["s"];updateMemoryViews();addOnInit(wasmExports["t"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; return moduleRtn; diff --git a/external/openjpeg/openjpeg.wasm b/external/openjpeg/openjpeg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..c4bdd4dda9cbc5ed08140a8876e0797c3e13194b GIT binary patch literal 254794 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�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 CNTACA literal 0 HcmV?d00001 diff --git a/gulpfile.mjs b/gulpfile.mjs index 5fd1334347dd1..a204a39847093 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -192,6 +192,7 @@ function createWebpackAlias(defines) { const libraryAlias = { "display-cmap_reader_factory": "src/display/stubs.js", "display-standard_fontdata_factory": "src/display/stubs.js", + "display-wasm_factory": "src/display/stubs.js", "display-fetch_stream": "src/display/stubs.js", "display-network": "src/display/stubs.js", "display-node_stream": "src/display/stubs.js", @@ -224,6 +225,7 @@ function createWebpackAlias(defines) { "src/display/cmap_reader_factory.js"; libraryAlias["display-standard_fontdata_factory"] = "src/display/standard_fontdata_factory.js"; + libraryAlias["display-wasm_factory"] = "src/display/wasm_factory.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-network"] = "src/display/network.js"; @@ -240,6 +242,7 @@ function createWebpackAlias(defines) { "src/display/cmap_reader_factory.js"; libraryAlias["display-standard_fontdata_factory"] = "src/display/standard_fontdata_factory.js"; + libraryAlias["display-wasm_factory"] = "src/display/wasm_factory.js"; libraryAlias["display-fetch_stream"] = "src/display/fetch_stream.js"; libraryAlias["display-network"] = "src/display/network.js"; libraryAlias["display-node_stream"] = "src/display/node_stream.js"; @@ -646,6 +649,13 @@ function createStandardFontBundle() { ); } +function createWasmBundle() { + return gulp.src(["external/openjpeg/openjpeg.wasm"], { + base: "external/openjpeg", + encoding: false, + }); +} + function checkFile(filePath) { try { const stat = fs.lstatSync(filePath); @@ -1068,6 +1078,7 @@ function buildGeneric(defines, dir) { .pipe(gulp.dest(dir + "web")), createCMapBundle().pipe(gulp.dest(dir + "web/cmaps")), createStandardFontBundle().pipe(gulp.dest(dir + "web/standard_fonts")), + createWasmBundle().pipe(gulp.dest(dir + "web/wasm")), preprocessHTML("web/viewer.html", defines).pipe(gulp.dest(dir + "web")), preprocessCSS("web/viewer.css", defines) @@ -1398,6 +1409,7 @@ gulp.task( createStandardFontBundle().pipe( gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/standard_fonts") ), + createWasmBundle().pipe(gulp.dest(MOZCENTRAL_CONTENT_DIR + "web/wasm")), preprocessHTML("web/viewer.html", defines).pipe( gulp.dest(MOZCENTRAL_CONTENT_DIR + "web") @@ -1500,6 +1512,9 @@ gulp.task( createStandardFontBundle().pipe( gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/standard_fonts") ), + createWasmBundle().pipe( + gulp.dest(CHROME_BUILD_CONTENT_DIR + "web/wasm") + ), preprocessHTML("web/viewer.html", defines).pipe( gulp.dest(CHROME_BUILD_CONTENT_DIR + "web") @@ -1586,6 +1601,7 @@ function buildLibHelper(bundleDefines, inputStream, outputDir) { "pdfjs-lib": "../pdf.js", "display-cmap_reader_factory": "./cmap_reader_factory.js", "display-standard_fontdata_factory": "./standard_fontdata_factory.js", + "display-wasm_factory": "./wasm_factory.js", "display-fetch_stream": "./fetch_stream.js", "display-network": "./network.js", "display-node_stream": "./node_stream.js", diff --git a/src/core/base_stream.js b/src/core/base_stream.js index febb4ed109c15..0266449a1bc4e 100644 --- a/src/core/base_stream.js +++ b/src/core/base_stream.js @@ -64,6 +64,10 @@ class BaseStream { return false; } + get isAsyncDecoder() { + return false; + } + get canAsyncDecodeImageFromBuffer() { return false; } diff --git a/src/core/decode_stream.js b/src/core/decode_stream.js index dd93121fbb839..ef2bab40bb375 100644 --- a/src/core/decode_stream.js +++ b/src/core/decode_stream.js @@ -99,8 +99,11 @@ class DecodeStream extends BaseStream { return this.buffer.subarray(pos, end); } - async getImageData(length, decoderOptions = null) { + async getImageData(length, decoderOptions) { if (!this.canAsyncDecodeImageFromBuffer) { + if (this.isAsyncDecoder) { + return this.decodeImage(null, decoderOptions); + } return this.getBytes(length, decoderOptions); } const data = await this.stream.asyncGetBytes(); diff --git a/src/core/evaluator.js b/src/core/evaluator.js index fb80032f5adf2..5d3c3cf586bd0 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -72,6 +72,7 @@ import { getMetrics } from "./metrics.js"; import { getUnicodeForGlyph } from "./unicode.js"; import { ImageResizer } from "./image_resizer.js"; import { JpegStream } from "./jpeg_stream.js"; +import { JpxImage } from "./jpx.js"; import { MurmurHash3_64 } from "../shared/murmurhash3.js"; import { OperatorList } from "./operator_list.js"; import { PDFImage } from "./image.js"; @@ -89,6 +90,7 @@ const DefaultPartialEvaluatorOptions = Object.freeze({ useSystemFonts: true, cMapUrl: null, standardFontDataUrl: null, + wasmUrl: null, }); const PatternType = { @@ -236,6 +238,10 @@ class PartialEvaluator { ImageResizer.setOptions(this.options); JpegStream.setOptions(this.options); + JpxImage.setOptions({ + wasmUrl: this.options.wasmUrl, + handler, + }); } /** diff --git a/src/core/jpx.js b/src/core/jpx.js index 5cb4fec6f8f3b..e48faa46a5333 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -24,20 +24,97 @@ class JpxError extends BaseException { } class JpxImage { - static #module = null; - - static decode(data, decoderOptions) { - decoderOptions ||= {}; - this.#module ||= OpenJPEG({ warn }); - const imageData = this.#module.decode(data, decoderOptions); - if (typeof imageData === "string") { - throw new JpxError(imageData); + static #buffer = null; + + static #handler = null; + + static #instantiationFailed = false; + + static #modulePromise = null; + + static #wasmUrl = null; + + static setOptions({ handler, wasmUrl }) { + if (!this.#buffer) { + this.#wasmUrl = wasmUrl || null; + if (wasmUrl === null) { + this.#handler = handler; + } + } + } + + static async #instantiateWasm(imports, successCallback) { + try { + if (!this.#buffer) { + if (this.#wasmUrl !== null) { + const response = await fetch(`${this.#wasmUrl}openjpeg.wasm`); + this.#buffer = await response.arrayBuffer(); + } else { + this.#buffer = await this.#handler.sendWithPromise("FetchWasm", { + filename: "openjpeg.wasm", + }); + } + } + const results = await WebAssembly.instantiate(this.#buffer, imports); + return successCallback(results.instance); + } catch (e) { + this.#instantiationFailed = true; + warn(`Cannot load openjpeg.wasm: "${e}".`); + return false; + } finally { + this.#handler = null; + this.#wasmUrl = null; + } + } + + static async decode( + bytes, + { numComponents = 4, isIndexedColormap = false, smaskInData = false } = {} + ) { + if (this.#instantiationFailed) { + throw new JpxError("OpenJPEG failed to instantiate."); + } + + this.#modulePromise ||= OpenJPEG({ + warn, + instantiateWasm: this.#instantiateWasm.bind(this), + }); + + const module = await this.#modulePromise; + let ptr; + + try { + const size = bytes.length; + ptr = module._malloc(size); + module.HEAPU8.set(bytes, ptr); + const ret = module._jp2_decode( + ptr, + size, + numComponents > 0 ? numComponents : 0, + !!isIndexedColormap, + !!smaskInData + ); + if (ret) { + const { errorMessages } = module; + if (errorMessages) { + delete module.errorMessages; + throw new JpxError(errorMessages); + } + throw new JpxError("Unknown error"); + } + const { imageData } = module; + module.imageData = null; + + return imageData; + } finally { + if (ptr) { + module._free(ptr); + } } - return imageData; } static cleanup() { - this.#module = null; + this.#modulePromise = null; } static parseImageProperties(stream) { diff --git a/src/core/jpx_stream.js b/src/core/jpx_stream.js index 09a79a44579e2..e454d58bd9754 100644 --- a/src/core/jpx_stream.js +++ b/src/core/jpx_stream.js @@ -13,9 +13,9 @@ * limitations under the License. */ +import { shadow, unreachable } from "../shared/util.js"; import { DecodeStream } from "./decode_stream.js"; import { JpxImage } from "./jpx.js"; -import { shadow } from "../shared/util.js"; /** * For JPEG 2000's we use a library to decode these images and @@ -42,15 +42,19 @@ class JpxStream extends DecodeStream { } readBlock(decoderOptions) { - this.decodeImage(null, decoderOptions); + unreachable("JpxStream.readBlock"); } - decodeImage(bytes, decoderOptions) { + get isAsyncDecoder() { + return true; + } + + async decodeImage(bytes, decoderOptions) { if (this.eof) { return this.buffer; } bytes ||= this.bytes; - this.buffer = JpxImage.decode(bytes, decoderOptions); + this.buffer = await JpxImage.decode(bytes, decoderOptions); this.bufferLength = this.buffer.length; this.eof = true; diff --git a/src/display/api.js b/src/display/api.js index 04d0d8f88dc2b..9ae660008a4b0 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -52,12 +52,14 @@ import { NodeCMapReaderFactory, NodeFilterFactory, NodeStandardFontDataFactory, + NodeWasmFactory, } from "display-node_utils"; import { CanvasGraphics } from "./canvas.js"; import { DOMCanvasFactory } from "./canvas_factory.js"; import { DOMCMapReaderFactory } from "display-cmap_reader_factory"; import { DOMFilterFactory } from "./filter_factory.js"; import { DOMStandardFontDataFactory } from "display-standard_fontdata_factory"; +import { DOMWasmFactory } from "display-wasm_factory"; import { GlobalWorkerOptions } from "./worker_options.js"; import { Metadata } from "./metadata.js"; import { OptionalContentConfig } from "./optional_content_config.js"; @@ -88,6 +90,10 @@ const DefaultStandardFontDataFactory = typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory; +const DefaultWasmFactory = + typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeWasmFactory + : DOMWasmFactory; /** * @typedef { Int8Array | Uint8Array | Uint8ClampedArray | @@ -153,6 +159,12 @@ const DefaultStandardFontDataFactory = * when reading the standard font files. Providing a custom factory is useful * for environments without Fetch API or `XMLHttpRequest` support, such as * Node.js. The default value is {DOMStandardFontDataFactory}. + * @property {string} [wasmUrl] - The URL where the wasm files are located. + * Include the trailing slash. + * @property {Object} [WasmFactory] - The factory that will be used + * when reading the wasm files. Providing a custom factory is useful + * for environments without Fetch API or `XMLHttpRequest` support, such as + * Node.js. The default value is {DOMWasmFactory}. * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the * worker-thread when reading CMap and standard font files. When `true`, * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored. @@ -280,6 +292,8 @@ function getDocument(src = {}) { : null; const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory; + const wasmUrl = typeof src.wasmUrl === "string" ? src.wasmUrl : null; + const WasmFactory = src.WasmFactory || DefaultWasmFactory; const ignoreErrors = src.stopAtErrors !== true; const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 @@ -328,10 +342,13 @@ function getDocument(src = {}) { : (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || (CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && + WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && + wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && - isValidFetchUrl(standardFontDataUrl, document.baseURI)); + isValidFetchUrl(standardFontDataUrl, document.baseURI) && + isValidFetchUrl(wasmUrl, document.baseURI)); // Parameters only intended for development/testing purposes. const styleElement = @@ -357,6 +374,11 @@ function getDocument(src = {}) { useWorkerFetch ? null : new StandardFontDataFactory({ baseUrl: standardFontDataUrl }), + wasmFactory: + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || + useWorkerFetch + ? null + : new WasmFactory({ baseUrl: wasmUrl }), }; if (!worker) { @@ -397,6 +419,7 @@ function getDocument(src = {}) { useSystemFonts, cMapUrl: useWorkerFetch ? cMapUrl : null, standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null, + wasmUrl: useWorkerFetch ? wasmUrl : null, }, }; const transportParams = { @@ -2423,6 +2446,7 @@ class WorkerTransport { this.filterFactory = factory.filterFactory; this.cMapReaderFactory = factory.cMapReaderFactory; this.standardFontDataFactory = factory.standardFontDataFactory; + this.wasmFactory = factory.wasmFactory; this.destroyed = false; this.destroyCapability = null; @@ -2918,6 +2942,21 @@ class WorkerTransport { } return this.standardFontDataFactory.fetch(data); }); + + messageHandler.on("FetchWasm", async data => { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { + throw new Error("Not implemented: FetchWasm"); + } + if (this.destroyed) { + throw new Error("Worker was destroyed."); + } + if (!this.wasmFactory) { + throw new Error( + "WasmFactory not initialized, see the `useWorkerFetch` parameter." + ); + } + return this.wasmFactory.fetch(data); + }); } getData() { @@ -3501,6 +3540,7 @@ export { DefaultCMapReaderFactory, DefaultFilterFactory, DefaultStandardFontDataFactory, + DefaultWasmFactory, getDocument, LoopbackPort, PDFDataRangeTransport, diff --git a/src/display/node_utils.js b/src/display/node_utils.js index d278629514bea..0085825f68d38 100644 --- a/src/display/node_utils.js +++ b/src/display/node_utils.js @@ -19,6 +19,7 @@ import { BaseCanvasFactory } from "./canvas_factory.js"; import { BaseCMapReaderFactory } from "./cmap_reader_factory.js"; import { BaseFilterFactory } from "./filter_factory.js"; import { BaseStandardFontDataFactory } from "./standard_fontdata_factory.js"; +import { BaseWasmFactory } from "./wasm_factory.js"; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error( @@ -108,10 +109,20 @@ class NodeStandardFontDataFactory extends BaseStandardFontDataFactory { } } +class NodeWasmFactory extends BaseWasmFactory { + /** + * @ignore + */ + async _fetch(url) { + return fetchData(url); + } +} + export { fetchData, NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, NodeStandardFontDataFactory, + NodeWasmFactory, }; diff --git a/src/display/stubs.js b/src/display/stubs.js index 7bd6eedd2e746..beec23c406f0c 100644 --- a/src/display/stubs.js +++ b/src/display/stubs.js @@ -14,10 +14,12 @@ */ const DOMCMapReaderFactory = null; +const DOMWasmFactory = null; const DOMStandardFontDataFactory = null; const NodeCanvasFactory = null; const NodeCMapReaderFactory = null; const NodeFilterFactory = null; +const NodeWasmFactory = null; const NodeStandardFontDataFactory = null; const PDFFetchStream = null; const PDFNetworkStream = null; @@ -26,10 +28,12 @@ const PDFNodeStream = null; export { DOMCMapReaderFactory, DOMStandardFontDataFactory, + DOMWasmFactory, NodeCanvasFactory, NodeCMapReaderFactory, NodeFilterFactory, NodeStandardFontDataFactory, + NodeWasmFactory, PDFFetchStream, PDFNetworkStream, PDFNodeStream, diff --git a/src/display/wasm_factory.js b/src/display/wasm_factory.js new file mode 100644 index 0000000000000..297e8e0e34e02 --- /dev/null +++ b/src/display/wasm_factory.js @@ -0,0 +1,63 @@ +/* Copyright 2015 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. + */ + +import { fetchData } from "./display_utils.js"; +import { unreachable } from "../shared/util.js"; + +class BaseWasmFactory { + constructor({ baseUrl = null }) { + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && + this.constructor === BaseWasmFactory + ) { + unreachable("Cannot initialize BaseWasmFactory."); + } + this.baseUrl = baseUrl; + } + + async fetch({ filename }) { + if (!this.baseUrl) { + throw new Error("Ensure that the `wasmUrl` API parameter is provided."); + } + if (!filename) { + throw new Error("Wasm filename must be specified."); + } + const url = `${this.baseUrl}${filename}`; + + return this._fetch(url).catch(reason => { + throw new Error(`Unable to load wasm data at: ${url}`); + }); + } + + /** + * @ignore + * @returns {Promise} + */ + async _fetch(url) { + unreachable("Abstract method `_fetch` called."); + } +} + +class DOMWasmFactory extends BaseWasmFactory { + /** + * @ignore + */ + async _fetch(url) { + const data = await fetchData(url, /* type = */ "arraybuffer"); + return new Uint8Array(data); + } +} + +export { BaseWasmFactory, DOMWasmFactory }; diff --git a/test/driver.js b/test/driver.js index 34b28b22a5fb9..1813ad825cd0b 100644 --- a/test/driver.js +++ b/test/driver.js @@ -31,6 +31,7 @@ const { GenericL10n, parseQueryString, SimpleLinkService } = pdfjsViewer; const WAITING_TIME = 100; // ms const CMAP_URL = "/build/generic/web/cmaps/"; const STANDARD_FONT_DATA_URL = "/build/generic/web/standard_fonts/"; +const WASM_URL = "/build/generic/web/wasm/"; const IMAGE_RESOURCES_PATH = "/web/images/"; const VIEWER_CSS = "../build/components/pdf_viewer.css"; const VIEWER_LOCALE = "en-US"; @@ -631,6 +632,7 @@ class Driver { password: task.password, cMapUrl: CMAP_URL, standardFontDataUrl: STANDARD_FONT_DATA_URL, + wasmUrl: WASM_URL, disableAutoFetch: !task.enableAutoFetch, pdfBug: true, useSystemFonts: task.useSystemFonts, diff --git a/test/test_manifest.json b/test/test_manifest.json index 71751285b1bb8..1a7418b9a5c9f 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -6371,6 +6371,14 @@ "rounds": 1, "type": "eq" }, + { + "id": "issue19326_main_thread_fetch", + "file": "pdfs/issue19326.pdf", + "md5": "b4d937017daf439a6318501428e0c6ba", + "rounds": 1, + "type": "eq", + "useWorkerFetch": false + }, { "id": "bug1140761", "file": "pdfs/bug1140761.pdf", diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index 4361ebac68205..0c6172c798a3e 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -28,6 +28,8 @@ const STANDARD_FONT_DATA_URL = isNodeJS ? "./external/standard_fonts/" : "../../external/standard_fonts/"; +const WASM_URL = isNodeJS ? "./external/openjpeg/" : "../../external/openjpeg/"; + class DefaultFileReaderFactory { static async fetch(params) { if (isNodeJS) { @@ -44,6 +46,7 @@ function buildGetDocumentParams(filename, options) { ? TEST_PDFS_PATH + filename : new URL(TEST_PDFS_PATH + filename, window.location).href; params.standardFontDataUrl = STANDARD_FONT_DATA_URL; + params.wasmUrl = WASM_URL; for (const option in options) { params[option] = options[option]; diff --git a/test/unit/unit_test.html b/test/unit/unit_test.html index 15f7fcf61acb9..536ebf35babeb 100644 --- a/test/unit/unit_test.html +++ b/test/unit/unit_test.html @@ -22,6 +22,7 @@ "display-cmap_reader_factory": "../../src/display/cmap_reader_factory.js", "display-standard_fontdata_factory": "../../src/display/standard_fontdata_factory.js", + "display-wasm_factory": "../../src/display/wasm_factory.js", "display-fetch_stream": "../../src/display/fetch_stream.js", "display-network": "../../src/display/network.js", "display-node_stream": "../../src/display/stubs.js", diff --git a/test/webserver.mjs b/test/webserver.mjs index dd2ae735ecbd1..52511ed637ce2 100644 --- a/test/webserver.mjs +++ b/test/webserver.mjs @@ -38,6 +38,7 @@ const MIME_TYPES = { ".log": "text/plain", ".bcmap": "application/octet-stream", ".ftl": "text/plain", + ".wasm": "application/wasm", }; const DEFAULT_MIME_TYPE = "application/octet-stream"; diff --git a/tsconfig.json b/tsconfig.json index 3d74d78fc978c..e5368ec253cc1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,6 +14,7 @@ "display-standard_fontdata_factory": [ "./src/display/standard_fontdata_factory" ], + "display-wasm_factory": ["./src/display/wasm_factory"], "display-fetch_stream": ["./src/display/fetch_stream"], "display-network": ["./src/display/network"], "display-node_stream": ["./src/display/node_stream"], diff --git a/web/app_options.js b/web/app_options.js index 4c7f420900e20..6b1f44d1bdda5 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -431,7 +431,17 @@ const defaultOptions = { value: 1, kind: OptionKind.API, }, - + wasmUrl: { + /** @type {string} */ + value: + // eslint-disable-next-line no-nested-ternary + typeof PDFJSDev === "undefined" + ? "../external/openjpeg/" + : PDFJSDev.test("MOZCENTRAL") + ? "resource://pdf.js/web/wasm/" + : "../web/wasm/", + kind: OptionKind.API, + }, workerPort: { /** @type {Object} */ value: null, diff --git a/web/viewer-geckoview.html b/web/viewer-geckoview.html index 80941bd81cd6c..846d704d905c7 100644 --- a/web/viewer-geckoview.html +++ b/web/viewer-geckoview.html @@ -61,6 +61,7 @@ "display-cmap_reader_factory": "../src/display/cmap_reader_factory.js", "display-standard_fontdata_factory": "../src/display/standard_fontdata_factory.js", + "display-wasm_factory": "../src/display/wasm_factory.js", "display-fetch_stream": "../src/display/fetch_stream.js", "display-network": "../src/display/network.js", "display-node_stream": "../src/display/stubs.js", diff --git a/web/viewer.html b/web/viewer.html index 9d28650020c1f..db270c3607410 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -64,6 +64,7 @@ "display-cmap_reader_factory": "../src/display/cmap_reader_factory.js", "display-standard_fontdata_factory": "../src/display/standard_fontdata_factory.js", + "display-wasm_factory": "../src/display/wasm_factory.js", "display-fetch_stream": "../src/display/fetch_stream.js", "display-network": "../src/display/network.js", "display-node_stream": "../src/display/stubs.js", From 6c6f96d255fb23937a35a2e0fd9c8f562d918c9e Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 28 Dec 2024 14:20:48 +0100 Subject: [PATCH 186/338] [api-major] Replace `MissingPDFException` and `UnexpectedResponseException` with one exception These old exceptions have a fair amount of overlap given how/where they are being used, which is likely because they were introduced at different points in time, hence we can shorten and simplify the code by replacing them with a more general `ResponseException` instead. Besides an error message, the new `ResponseException` instances also include: - A numeric `status` field containing the server response status, similar to the old `UnexpectedResponseException`. - A boolean `missing` field, to allow easily detecting the situations where `MissingPDFException` was previously thrown. --- examples/mobile-viewer/viewer.mjs | 8 +++--- src/display/fetch_stream.js | 6 ++--- src/display/network.js | 6 ++--- src/display/network_utils.js | 18 +++++-------- src/display/node_stream.js | 5 ++-- src/pdf.js | 6 ++--- src/shared/message_handler.js | 12 +++------ src/shared/util.js | 16 ++++-------- test/unit/api_spec.js | 6 +++-- test/unit/network_spec.js | 8 +++--- test/unit/network_utils_spec.js | 42 +++++++++++++------------------ test/unit/pdf_spec.js | 6 ++--- web/app.js | 11 ++++---- web/app_options.js | 1 + web/pdfjs.js | 6 ++--- 15 files changed, 65 insertions(+), 92 deletions(-) diff --git a/examples/mobile-viewer/viewer.mjs b/examples/mobile-viewer/viewer.mjs index fedd5d8e23ead..bf496c91e62aa 100644 --- a/examples/mobile-viewer/viewer.mjs +++ b/examples/mobile-viewer/viewer.mjs @@ -91,10 +91,10 @@ const PDFViewerApplication = { let key = "pdfjs-loading-error"; if (reason instanceof pdfjsLib.InvalidPDFException) { key = "pdfjs-invalid-file-error"; - } else if (reason instanceof pdfjsLib.MissingPDFException) { - key = "pdfjs-missing-file-error"; - } else if (reason instanceof pdfjsLib.UnexpectedResponseException) { - key = "pdfjs-unexpected-response-error"; + } else if (reason instanceof pdfjsLib.ResponseException) { + key = reason.missing + ? "pdfjs-missing-file-error" + : "pdfjs-unexpected-response-error"; } self.l10n.get(key).then(msg => { self.error(msg, { message: reason?.message }); diff --git a/src/display/fetch_stream.js b/src/display/fetch_stream.js index 24604e43b68df..acbf3c868e37e 100644 --- a/src/display/fetch_stream.js +++ b/src/display/fetch_stream.js @@ -16,7 +16,7 @@ import { AbortException, assert, warn } from "../shared/util.js"; import { createHeaders, - createResponseStatusError, + createResponseError, extractFilenameFromHeader, getResponseOrigin, validateRangeRequestCapabilities, @@ -127,7 +127,7 @@ class PDFFetchStreamReader { stream._responseOrigin = getResponseOrigin(response.url); if (!validateResponseStatus(response.status)) { - throw createResponseStatusError(response.status, url); + throw createResponseError(response.status, url); } this._reader = response.body.getReader(); this._headersCapability.resolve(); @@ -230,7 +230,7 @@ class PDFFetchStreamRangeReader { ); } if (!validateResponseStatus(response.status)) { - throw createResponseStatusError(response.status, url); + throw createResponseError(response.status, url); } this._readCapability.resolve(); this._reader = response.body.getReader(); diff --git a/src/display/network.js b/src/display/network.js index 8b65a5a27e675..34fa53ab92f5d 100644 --- a/src/display/network.js +++ b/src/display/network.js @@ -16,7 +16,7 @@ import { assert, stringToBytes, warn } from "../shared/util.js"; import { createHeaders, - createResponseStatusError, + createResponseError, extractFilenameFromHeader, getResponseOrigin, validateRangeRequestCapabilities, @@ -329,7 +329,7 @@ class PDFNetworkStreamFullRequestReader { } _onError(status) { - this._storedError = createResponseStatusError(status, this._url); + this._storedError = createResponseError(status, this._url); this._headersCapability.reject(this._storedError); for (const requestCapability of this._requests) { requestCapability.reject(this._storedError); @@ -454,7 +454,7 @@ class PDFNetworkStreamRangeRequestReader { } _onError(status) { - this._storedError ??= createResponseStatusError(status, this._url); + this._storedError ??= createResponseError(status, this._url); for (const requestCapability of this._requests) { requestCapability.reject(this._storedError); } diff --git a/src/display/network_utils.js b/src/display/network_utils.js index 98ba103fdba43..f7b2df6143430 100644 --- a/src/display/network_utils.js +++ b/src/display/network_utils.js @@ -13,11 +13,7 @@ * limitations under the License. */ -import { - assert, - MissingPDFException, - UnexpectedResponseException, -} from "../shared/util.js"; +import { assert, ResponseException } from "../shared/util.js"; import { getFilenameFromContentDispositionHeader } from "./content_disposition.js"; import { isPdfFile } from "./display_utils.js"; @@ -108,13 +104,11 @@ function extractFilenameFromHeader(responseHeaders) { return null; } -function createResponseStatusError(status, url) { - if (status === 404 || (status === 0 && url.startsWith("file:"))) { - return new MissingPDFException('Missing PDF "' + url + '".'); - } - return new UnexpectedResponseException( +function createResponseError(status, url) { + return new ResponseException( `Unexpected server response (${status}) while retrieving PDF "${url}".`, - status + status, + /* missing = */ status === 404 || (status === 0 && url.startsWith("file:")) ); } @@ -124,7 +118,7 @@ function validateResponseStatus(status) { export { createHeaders, - createResponseStatusError, + createResponseError, extractFilenameFromHeader, getResponseOrigin, validateRangeRequestCapabilities, diff --git a/src/display/node_stream.js b/src/display/node_stream.js index fdc686d732788..36f1b1a8dd4bb 100644 --- a/src/display/node_stream.js +++ b/src/display/node_stream.js @@ -14,7 +14,8 @@ */ /* globals process */ -import { AbortException, assert, MissingPDFException } from "../shared/util.js"; +import { AbortException, assert } from "../shared/util.js"; +import { createResponseError } from "./network_utils.js"; if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error( @@ -111,7 +112,7 @@ class PDFNodeStreamFsFullReader { }, error => { if (error.code === "ENOENT") { - error = new MissingPDFException(`Missing PDF "${this._url}".`); + error = createResponseError(/* status = */ 0, this._url.href); } this._storedError = error; this._headersCapability.reject(error); diff --git a/src/pdf.js b/src/pdf.js index 94d7547f0f832..757e97e4ccf11 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -31,13 +31,12 @@ import { FeatureTest, ImageKind, InvalidPDFException, - MissingPDFException, normalizeUnicode, OPS, PasswordResponses, PermissionFlag, + ResponseException, shadow, - UnexpectedResponseException, Util, VerbosityLevel, } from "./shared/util.js"; @@ -112,7 +111,6 @@ export { InvalidPDFException, isDataScheme, isPdfFile, - MissingPDFException, noContextMenu, normalizeUnicode, OPS, @@ -124,12 +122,12 @@ export { PermissionFlag, PixelsPerInch, RenderingCancelledException, + ResponseException, setLayerDimensions, shadow, stopEvent, TextLayer, TouchManager, - UnexpectedResponseException, Util, VerbosityLevel, version, diff --git a/src/shared/message_handler.js b/src/shared/message_handler.js index 9ea0e5f79e030..a1af0aab27b54 100644 --- a/src/shared/message_handler.js +++ b/src/shared/message_handler.js @@ -17,9 +17,8 @@ import { AbortException, assert, InvalidPDFException, - MissingPDFException, PasswordException, - UnexpectedResponseException, + ResponseException, UnknownErrorException, unreachable, } from "./util.js"; @@ -46,9 +45,8 @@ function wrapReason(ex) { if ( ex instanceof AbortException || ex instanceof InvalidPDFException || - ex instanceof MissingPDFException || ex instanceof PasswordException || - ex instanceof UnexpectedResponseException || + ex instanceof ResponseException || ex instanceof UnknownErrorException ) { // Avoid re-creating the exception when its type is already correct. @@ -65,12 +63,10 @@ function wrapReason(ex) { return new AbortException(ex.message); case "InvalidPDFException": return new InvalidPDFException(ex.message); - case "MissingPDFException": - return new MissingPDFException(ex.message); case "PasswordException": return new PasswordException(ex.message, ex.code); - case "UnexpectedResponseException": - return new UnexpectedResponseException(ex.message, ex.status); + case "ResponseException": + return new ResponseException(ex.message, ex.status, ex.missing); case "UnknownErrorException": return new UnknownErrorException(ex.message, ex.details); } diff --git a/src/shared/util.js b/src/shared/util.js index e0f66716ab9ca..b4f8824b365b6 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -501,16 +501,11 @@ class InvalidPDFException extends BaseException { } } -class MissingPDFException extends BaseException { - constructor(msg) { - super(msg, "MissingPDFException"); - } -} - -class UnexpectedResponseException extends BaseException { - constructor(msg, status) { - super(msg, "UnexpectedResponseException"); +class ResponseException extends BaseException { + constructor(msg, status, missing) { + super(msg, "ResponseException"); this.status = status; + this.missing = missing; } } @@ -1161,7 +1156,6 @@ export { LINE_DESCENT_FACTOR, LINE_FACTOR, MAX_IMAGE_SIZE_TO_CACHE, - MissingPDFException, normalizeUnicode, objectFromMap, objectSize, @@ -1171,6 +1165,7 @@ export { PasswordResponses, PermissionFlag, RenderingIntentFlag, + ResponseException, setVerbosityLevel, shadow, string32, @@ -1180,7 +1175,6 @@ export { TextRenderingMode, toBase64Util, toHexUtil, - UnexpectedResponseException, UnknownErrorException, unreachable, utf8StringToString, diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 4cf594cd78bf4..c364472ea2cd1 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -20,12 +20,12 @@ import { ImageKind, InvalidPDFException, isNodeJS, - MissingPDFException, objectSize, OPS, PasswordException, PasswordResponses, PermissionFlag, + ResponseException, UnknownErrorException, } from "../../src/shared/util.js"; import { @@ -297,7 +297,9 @@ describe("api", function () { // Shouldn't get here. expect(false).toEqual(true); } catch (reason) { - expect(reason instanceof MissingPDFException).toEqual(true); + expect(reason instanceof ResponseException).toEqual(true); + expect(reason.status).toEqual(isNodeJS ? 0 : 404); + expect(reason.missing).toEqual(true); } await loadingTask.destroy(); diff --git a/test/unit/network_spec.js b/test/unit/network_spec.js index 0cdc5dbe5eafb..f24284cd97ece 100644 --- a/test/unit/network_spec.js +++ b/test/unit/network_spec.js @@ -13,10 +13,7 @@ * limitations under the License. */ -import { - AbortException, - UnexpectedResponseException, -} from "../../src/shared/util.js"; +import { AbortException, ResponseException } from "../../src/shared/util.js"; import { PDFNetworkStream } from "../../src/display/network.js"; import { testCrossOriginRedirects } from "./common_pdfstream_tests.js"; import { TestPdfsServer } from "./test_utils.js"; @@ -155,8 +152,9 @@ describe("network", function () { // Shouldn't get here. expect(false).toEqual(true); } catch (ex) { - expect(ex instanceof UnexpectedResponseException).toEqual(true); + expect(ex instanceof ResponseException).toEqual(true); expect(ex.status).toEqual(0); + expect(ex.missing).toEqual(false); } } diff --git a/test/unit/network_utils_spec.js b/test/unit/network_utils_spec.js index e697e24deeb74..2b68c4dbf36fa 100644 --- a/test/unit/network_utils_spec.js +++ b/test/unit/network_utils_spec.js @@ -15,15 +15,12 @@ import { createHeaders, - createResponseStatusError, + createResponseError, extractFilenameFromHeader, validateRangeRequestCapabilities, validateResponseStatus, } from "../../src/display/network_utils.js"; -import { - MissingPDFException, - UnexpectedResponseException, -} from "../../src/shared/util.js"; +import { ResponseException } from "../../src/shared/util.js"; describe("network_utils", function () { describe("createHeaders", function () { @@ -370,31 +367,28 @@ describe("network_utils", function () { }); }); - describe("createResponseStatusError", function () { - it("handles missing PDF file responses", function () { - expect(createResponseStatusError(404, "https://foo.com/bar.pdf")).toEqual( - new MissingPDFException('Missing PDF "https://foo.com/bar.pdf".') - ); + describe("createResponseError", function () { + function testCreateResponseError(url, status, missing) { + const error = createResponseError(status, url); - expect(createResponseStatusError(0, "file://foo.pdf")).toEqual( - new MissingPDFException('Missing PDF "file://foo.pdf".') + expect(error instanceof ResponseException).toEqual(true); + expect(error.message).toEqual( + `Unexpected server response (${status}) while retrieving PDF "${url}".` ); + expect(error.status).toEqual(status); + expect(error.missing).toEqual(missing); + } + + it("handles missing PDF file responses", function () { + testCreateResponseError("https://foo.com/bar.pdf", 404, true); + + testCreateResponseError("file://foo.pdf", 0, true); }); it("handles unexpected responses", function () { - expect(createResponseStatusError(302, "https://foo.com/bar.pdf")).toEqual( - new UnexpectedResponseException( - "Unexpected server response (302) while retrieving PDF " + - '"https://foo.com/bar.pdf".' - ) - ); + testCreateResponseError("https://foo.com/bar.pdf", 302, false); - expect(createResponseStatusError(0, "https://foo.com/bar.pdf")).toEqual( - new UnexpectedResponseException( - "Unexpected server response (0) while retrieving PDF " + - '"https://foo.com/bar.pdf".' - ) - ); + testCreateResponseError("https://foo.com/bar.pdf", 0, false); }); }); diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index d4a32c48a22ce..a513b8a4f1fe0 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -23,13 +23,12 @@ import { ImageKind, InvalidPDFException, isNodeJS, - MissingPDFException, normalizeUnicode, OPS, PasswordResponses, PermissionFlag, + ResponseException, shadow, - UnexpectedResponseException, Util, VerbosityLevel, } from "../../src/shared/util.js"; @@ -90,7 +89,6 @@ const expectedAPI = Object.freeze({ InvalidPDFException, isDataScheme, isPdfFile, - MissingPDFException, noContextMenu, normalizeUnicode, OPS, @@ -102,12 +100,12 @@ const expectedAPI = Object.freeze({ PermissionFlag, PixelsPerInch, RenderingCancelledException, + ResponseException, setLayerDimensions, shadow, stopEvent, TextLayer, TouchManager, - UnexpectedResponseException, Util, VerbosityLevel, version, diff --git a/web/app.js b/web/app.js index ecc272c8310bc..a7d55db3bb99d 100644 --- a/web/app.js +++ b/web/app.js @@ -50,12 +50,11 @@ import { InvalidPDFException, isDataScheme, isPdfFile, - MissingPDFException, PDFWorker, + ResponseException, shadow, stopEvent, TouchManager, - UnexpectedResponseException, version, } from "pdfjs-lib"; import { AppOptions, OptionKind } from "./app_options.js"; @@ -1110,10 +1109,10 @@ const PDFViewerApplication = { let key = "pdfjs-loading-error"; if (reason instanceof InvalidPDFException) { key = "pdfjs-invalid-file-error"; - } else if (reason instanceof MissingPDFException) { - key = "pdfjs-missing-file-error"; - } else if (reason instanceof UnexpectedResponseException) { - key = "pdfjs-unexpected-response-error"; + } else if (reason instanceof ResponseException) { + key = reason.missing + ? "pdfjs-missing-file-error" + : "pdfjs-unexpected-response-error"; } return this._documentError(key, { message: reason.message }).then( () => { diff --git a/web/app_options.js b/web/app_options.js index 6b1f44d1bdda5..34a7766b7193a 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -442,6 +442,7 @@ const defaultOptions = { : "../web/wasm/", kind: OptionKind.API, }, + workerPort: { /** @type {Object} */ value: null, diff --git a/web/pdfjs.js b/web/pdfjs.js index a9fe6ca9ac4a2..7ac129513be5a 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -37,7 +37,6 @@ const { InvalidPDFException, isDataScheme, isPdfFile, - MissingPDFException, noContextMenu, normalizeUnicode, OPS, @@ -49,12 +48,12 @@ const { PermissionFlag, PixelsPerInch, RenderingCancelledException, + ResponseException, setLayerDimensions, shadow, stopEvent, TextLayer, TouchManager, - UnexpectedResponseException, Util, VerbosityLevel, version, @@ -85,7 +84,6 @@ export { InvalidPDFException, isDataScheme, isPdfFile, - MissingPDFException, noContextMenu, normalizeUnicode, OPS, @@ -97,12 +95,12 @@ export { PermissionFlag, PixelsPerInch, RenderingCancelledException, + ResponseException, setLayerDimensions, shadow, stopEvent, TextLayer, TouchManager, - UnexpectedResponseException, Util, VerbosityLevel, version, From 5642d8e0b54501c4454dc46dd16dac2c29376479 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 16 Jan 2025 23:07:09 +0100 Subject: [PATCH 187/338] Bump library version to `5.0` --- pdfjs.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pdfjs.config b/pdfjs.config index 9ebba0f3f1e7c..9a093503d4c54 100644 --- a/pdfjs.config +++ b/pdfjs.config @@ -1,5 +1,5 @@ { "stableVersion": "4.10.38", - "baseVersion": "ac81de6ab479ea001c4359302d062157ade0a14c", - "versionPrefix": "4.10." + "baseVersion": "7a57af12e13a47927c460e6b739a6ca132e7603d", + "versionPrefix": "5.0." } From 5858969458dd506667e6f4b891be9906d6cf85ca Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 17 Jan 2025 01:02:39 +0100 Subject: [PATCH 188/338] Handle JPX wasm fetch-response errors correctly (PR 19329 follow-up) Currently we're not checking that the response is actually OK before getting the data, which means that rather than throwing an error we can get an empty `ArrayBuffer`. To avoid duplicating code we can move an existing helper into `src/core/core_utils.js` and re-use it when fetching the JPX wasm-file as well. --- src/core/core_utils.js | 11 +++++++++++ src/core/evaluator.js | 21 ++++++++------------- src/core/jpx.js | 9 +++++---- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/core/core_utils.js b/src/core/core_utils.js index 2049eb1391212..c92a0374dd876 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -103,6 +103,16 @@ function arrayBuffersToBytes(arr) { return data; } +async function fetchBinaryData(url) { + const response = await fetch(url); + if (!response.ok) { + throw new Error( + `Failed to fetch file "${url}" with "${response.statusText}".` + ); + } + return new Uint8Array(await response.arrayBuffer()); +} + /** * Get the value of an inheritable property. * @@ -701,6 +711,7 @@ export { encodeToXmlString, escapePDFName, escapeString, + fetchBinaryData, getInheritableProperty, getLookupTableFactory, getNewAnnotationsMap, diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 5d3c3cf586bd0..07253e6475bea 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -32,6 +32,12 @@ import { import { CMapFactory, IdentityCMap } from "./cmap.js"; import { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from "./primitives.js"; import { ErrorFont, Font } from "./fonts.js"; +import { + fetchBinaryData, + isNumberArray, + lookupMatrix, + lookupNormalRect, +} from "./core_utils.js"; import { getEncoding, MacRomanEncoding, @@ -51,7 +57,6 @@ import { import { getTilingPatternIR, Pattern } from "./pattern.js"; import { getXfaFontDict, getXfaFontName } from "./xfa_fonts.js"; import { IdentityToUnicodeMap, ToUnicodeMap } from "./to_unicode_map.js"; -import { isNumberArray, lookupMatrix, lookupNormalRect } from "./core_utils.js"; import { isPDFFunction, PDFFunctionFactory } from "./function.js"; import { Lexer, Parser } from "./parser.js"; import { @@ -382,16 +387,6 @@ class PartialEvaluator { return false; } - async #fetchData(url) { - const response = await fetch(url); - if (!response.ok) { - throw new Error( - `Failed to fetch file "${url}" with "${response.statusText}".` - ); - } - return new Uint8Array(await response.arrayBuffer()); - } - async fetchBuiltInCMap(name) { const cachedData = this.builtInCMapCache.get(name); if (cachedData) { @@ -401,7 +396,7 @@ class PartialEvaluator { if (this.options.cMapUrl !== null) { // Only compressed CMaps are (currently) supported here. - const cMapData = await this.#fetchData( + const cMapData = await fetchBinaryData( `${this.options.cMapUrl}${name}.bcmap` ); data = { cMapData, isCompressed: true }; @@ -437,7 +432,7 @@ class PartialEvaluator { try { if (this.options.standardFontDataUrl !== null) { - data = await this.#fetchData( + data = await fetchBinaryData( `${this.options.standardFontDataUrl}${filename}` ); } else { diff --git a/src/core/jpx.js b/src/core/jpx.js index e48faa46a5333..003fc7bf9d006 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -14,6 +14,7 @@ */ import { BaseException, warn } from "../shared/util.js"; +import { fetchBinaryData } from "./core_utils.js"; import OpenJPEG from "../../external/openjpeg/openjpeg.js"; import { Stream } from "./stream.js"; @@ -44,14 +45,14 @@ class JpxImage { } static async #instantiateWasm(imports, successCallback) { + const filename = "openjpeg.wasm"; try { if (!this.#buffer) { if (this.#wasmUrl !== null) { - const response = await fetch(`${this.#wasmUrl}openjpeg.wasm`); - this.#buffer = await response.arrayBuffer(); + this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`); } else { this.#buffer = await this.#handler.sendWithPromise("FetchWasm", { - filename: "openjpeg.wasm", + filename, }); } } @@ -59,7 +60,7 @@ class JpxImage { return successCallback(results.instance); } catch (e) { this.#instantiationFailed = true; - warn(`Cannot load openjpeg.wasm: "${e}".`); + warn(`Cannot load ${filename}: "${e}".`); return false; } finally { this.#handler = null; From d1a017cc0d681551e8d26d943337e541db1caa44 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 17 Jan 2025 10:58:46 +0100 Subject: [PATCH 189/338] Reduce console spam when running tests in Firefox Rather than waiting for the upstream patch to reach the Firefox version we're using with Puppeteer, let's just set the same preference as done in https://phabricator.services.mozilla.com/D234320. --- test/test.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test.mjs b/test/test.mjs index 3f031b066df80..d685dce9d8fb9 100644 --- a/test/test.mjs +++ b/test/test.mjs @@ -952,6 +952,8 @@ async function startBrowser({ "browser.newtabpage.enabled": false, // Disable network connections to Contile. "browser.topsites.contile.enabled": false, + // Disable logging for remote settings. + "services.settings.loglevel": "off", ...extraPrefsFirefox, }; } From 0aebe0518465ca4e2082e9afb81844a58464b818 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 17 Jan 2025 20:43:59 +0100 Subject: [PATCH 190/338] Handle the case where openjpeg.wasm is missing It fixes #19336. --- src/core/jpx.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/core/jpx.js b/src/core/jpx.js index 003fc7bf9d006..38215d86b8b5f 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -29,8 +29,6 @@ class JpxImage { static #handler = null; - static #instantiationFailed = false; - static #modulePromise = null; static #wasmUrl = null; @@ -58,10 +56,6 @@ class JpxImage { } const results = await WebAssembly.instantiate(this.#buffer, imports); return successCallback(results.instance); - } catch (e) { - this.#instantiationFailed = true; - warn(`Cannot load ${filename}: "${e}".`); - return false; } finally { this.#handler = null; this.#wasmUrl = null; @@ -72,10 +66,6 @@ class JpxImage { bytes, { numComponents = 4, isIndexedColormap = false, smaskInData = false } = {} ) { - if (this.#instantiationFailed) { - throw new JpxError("OpenJPEG failed to instantiate."); - } - this.#modulePromise ||= OpenJPEG({ warn, instantiateWasm: this.#instantiateWasm.bind(this), From 3bd45abad177922c02708417693e57334eb8d3d5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 16 Jan 2025 22:57:16 +0100 Subject: [PATCH 191/338] Simplify the JSDocs for the various `getDocument` Factory-parameters Given that we nowadays provide default Node.js versions of these Factory-parameters it no longer seems necessary to mention that environment specifically. --- src/display/api.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 9ae660008a4b0..6c5336f2c81b2 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -145,9 +145,8 @@ const DefaultWasmFactory = * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary * packed or not. The default value is `true`. * @property {Object} [CMapReaderFactory] - The factory that will be used when - * reading built-in CMap files. Providing a custom factory is useful for - * environments without Fetch API or `XMLHttpRequest` support, such as - * Node.js. The default value is {DOMCMapReaderFactory}. + * reading built-in CMap files. + * The default value is {DOMCMapReaderFactory}. * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't * embedded in the PDF document will fallback to a system font. * The default value is `true` in web environments and `false` in Node.js; @@ -156,18 +155,17 @@ const DefaultWasmFactory = * @property {string} [standardFontDataUrl] - The URL where the standard font * files are located. Include the trailing slash. * @property {Object} [StandardFontDataFactory] - The factory that will be used - * when reading the standard font files. Providing a custom factory is useful - * for environments without Fetch API or `XMLHttpRequest` support, such as - * Node.js. The default value is {DOMStandardFontDataFactory}. + * when reading the standard font files. + * The default value is {DOMStandardFontDataFactory}. * @property {string} [wasmUrl] - The URL where the wasm files are located. * Include the trailing slash. * @property {Object} [WasmFactory] - The factory that will be used - * when reading the wasm files. Providing a custom factory is useful - * for environments without Fetch API or `XMLHttpRequest` support, such as - * Node.js. The default value is {DOMWasmFactory}. + * when reading the wasm files. + * The default value is {DOMWasmFactory}. * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the * worker-thread when reading CMap and standard font files. When `true`, - * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored. + * the `CMapReaderFactory`, `StandardFontDataFactory`, and `WasmFactory` + * options are ignored. * The default value is `true` in web environments and `false` in Node.js. * @property {boolean} [stopAtErrors] - Reject certain promises, e.g. * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated From 7d17306d68debd8cda9e97ad95f14cae371a0b5a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 18 Jan 2025 12:42:24 +0100 Subject: [PATCH 192/338] Inline the default Factory-definitions in `getDocument` - Most of the these are only used in the `src/display/api.js` file, and this leads to slightly shorter code. - A number of unit-tests need a `BaseCanvasFactory`-instance, however that one is available through the `PDFDocumentProxy`-instance nowadays. - For other unit-tests the remaining necessary default Factory-definitions can be moved into the `test/unit/test_utils.js` file. --- src/display/api.js | 55 ++++++++++++--------------- test/unit/annotation_spec.js | 6 +-- test/unit/api_spec.js | 74 +++++++++++++++++++----------------- test/unit/cmap_spec.js | 3 +- test/unit/custom_spec.js | 41 +++++++++----------- test/unit/test_utils.js | 20 +++++++++- 6 files changed, 105 insertions(+), 94 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 6c5336f2c81b2..8bc228dd51231 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -74,27 +74,6 @@ const DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 const RENDERING_CANCELLED_TIMEOUT = 100; // ms const DELAYED_CLEANUP_TIMEOUT = 5000; // ms -const DefaultCanvasFactory = - typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS - ? NodeCanvasFactory - : DOMCanvasFactory; -const DefaultCMapReaderFactory = - typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS - ? NodeCMapReaderFactory - : DOMCMapReaderFactory; -const DefaultFilterFactory = - typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS - ? NodeFilterFactory - : DOMFilterFactory; -const DefaultStandardFontDataFactory = - typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS - ? NodeStandardFontDataFactory - : DOMStandardFontDataFactory; -const DefaultWasmFactory = - typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS - ? NodeWasmFactory - : DOMWasmFactory; - /** * @typedef { Int8Array | Uint8Array | Uint8ClampedArray | * Int16Array | Uint16Array | @@ -283,15 +262,26 @@ function getDocument(src = {}) { : null; const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; const cMapPacked = src.cMapPacked !== false; - const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory; + const CMapReaderFactory = + src.CMapReaderFactory || + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeCMapReaderFactory + : DOMCMapReaderFactory); const standardFontDataUrl = typeof src.standardFontDataUrl === "string" ? src.standardFontDataUrl : null; const StandardFontDataFactory = - src.StandardFontDataFactory || DefaultStandardFontDataFactory; + src.StandardFontDataFactory || + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeStandardFontDataFactory + : DOMStandardFontDataFactory); const wasmUrl = typeof src.wasmUrl === "string" ? src.wasmUrl : null; - const WasmFactory = src.WasmFactory || DefaultWasmFactory; + const WasmFactory = + src.WasmFactory || + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeWasmFactory + : DOMWasmFactory); const ignoreErrors = src.stopAtErrors !== true; const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 @@ -324,8 +314,16 @@ function getDocument(src = {}) { const disableStream = src.disableStream === true; const disableAutoFetch = src.disableAutoFetch === true; const pdfBug = src.pdfBug === true; - const CanvasFactory = src.CanvasFactory || DefaultCanvasFactory; - const FilterFactory = src.FilterFactory || DefaultFilterFactory; + const CanvasFactory = + src.CanvasFactory || + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeCanvasFactory + : DOMCanvasFactory); + const FilterFactory = + src.FilterFactory || + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeFilterFactory + : DOMFilterFactory); const enableHWA = src.enableHWA === true; // Parameters whose default values depend on other parameters. @@ -3534,11 +3532,6 @@ const build = export { build, - DefaultCanvasFactory, - DefaultCMapReaderFactory, - DefaultFilterFactory, - DefaultStandardFontDataFactory, - DefaultWasmFactory, getDocument, LoopbackPort, PDFDataRangeTransport, diff --git a/test/unit/annotation_spec.js b/test/unit/annotation_spec.js index bc50065c2df1c..a7c968644c327 100644 --- a/test/unit/annotation_spec.js +++ b/test/unit/annotation_spec.js @@ -34,13 +34,11 @@ import { import { CMAP_URL, createIdFactory, + DefaultCMapReaderFactory, + DefaultStandardFontDataFactory, STANDARD_FONT_DATA_URL, XRefMock, } from "./test_utils.js"; -import { - DefaultCMapReaderFactory, - DefaultStandardFontDataFactory, -} from "../../src/display/api.js"; import { Dict, Name, Ref, RefSetCache } from "../../src/core/primitives.js"; import { Lexer, Parser } from "../../src/core/parser.js"; import { FlateStream } from "../../src/core/flate_stream.js"; diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index c364472ea2cd1..df515c253b0ec 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -37,7 +37,12 @@ import { TestPdfsServer, } from "./test_utils.js"; import { - DefaultCanvasFactory, + fetchData as fetchDataDOM, + PageViewport, + RenderingCancelledException, + StatTimer, +} from "../../src/display/display_utils.js"; +import { getDocument, PDFDataRangeTransport, PDFDocumentLoadingTask, @@ -46,12 +51,6 @@ import { PDFWorker, RenderTask, } from "../../src/display/api.js"; -import { - fetchData as fetchDataDOM, - PageViewport, - RenderingCancelledException, - StatTimer, -} from "../../src/display/display_utils.js"; import { AutoPrintRegExp } from "../../web/ui_utils.js"; import { GlobalImageCache } from "../../src/core/image_utils.js"; import { GlobalWorkerOptions } from "../../src/display/worker_options.js"; @@ -67,17 +66,11 @@ describe("api", function () { const tracemonkeyGetDocumentParams = buildGetDocumentParams(tracemonkeyFileName); - let CanvasFactory; - beforeAll(async function () { - CanvasFactory = new DefaultCanvasFactory({}); - await TestPdfsServer.ensureStarted(); }); afterAll(async function () { - CanvasFactory = null; - await TestPdfsServer.ensureStopped(); }); @@ -4280,7 +4273,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = pdfPage.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDoc; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4307,7 +4301,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) expect(statEntryThree.name).toEqual("Overall"); expect(statEntryThree.end - statEntryThree.start).toBeGreaterThan(0); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); await loadingTask.destroy(); }); @@ -4315,7 +4309,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = page.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDocument; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4338,14 +4333,15 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) expect(reason.extraDelay).toEqual(0); } - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); }); it("re-render page, using the same canvas, after cancelling rendering", async function () { const viewport = page.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDocument; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4375,7 +4371,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) await reRenderTask.promise; expect(reRenderTask.separateAnnots).toEqual(false); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); }); it("multiple render() on the same canvas", async function () { @@ -4385,7 +4381,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = page.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDocument; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4416,6 +4413,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) } ), ]); + + canvasFactory.destroy(canvasAndCtx); }); it("cleans up document resources after rendering of page", async function () { @@ -4426,7 +4425,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = pdfPage.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDoc; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4442,7 +4442,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) await pdfDoc.cleanup(); expect(true).toEqual(true); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); await loadingTask.destroy(); }); @@ -4454,7 +4454,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = pdfPage.getViewport({ scale: 1 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdfDoc; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4489,7 +4490,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const { data } = canvasAndCtx.context.getImageData(0, 0, 1, 1); expect(data).toEqual(new Uint8ClampedArray([255, 0, 0, 255])); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); await loadingTask.destroy(); }); @@ -4505,6 +4506,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) }) ); const pdfDoc = await loadingTask.promise; + const { canvasFactory } = pdfDoc; let checkedCopyLocalImage = false, firstImgData = null, firstStatsOverall = null; @@ -4513,7 +4515,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const pdfPage = await pdfDoc.getPage(i); const viewport = pdfPage.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create( + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4526,7 +4528,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const opList = renderTask.getOperatorList(); // The canvas is no longer necessary, since we only care about // the image-data below. - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); const [statsOverall] = pdfPage.stats.times .filter(time => time.name === "Overall") @@ -4609,6 +4611,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) }) ); const pdfDoc = await loadingTask.promise; + const { canvasFactory } = pdfDoc; let checkedCopyLocalImage = false, firstStatsOverall = null; @@ -4616,7 +4619,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const pdfPage = await pdfDoc.getPage(i); const viewport = pdfPage.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create( + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4628,7 +4631,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) await renderTask.promise; // The canvas is no longer necessary, since we only care about // the stats below. - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); const [statsOverall] = pdfPage.stats.times .filter(time => time.name === "Overall") @@ -4656,13 +4659,14 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const loadingTask = getDocument(buildGetDocumentParams("issue18042.pdf")); const pdfDoc = await loadingTask.promise; + const { canvasFactory } = pdfDoc; let checkedGlobalDecodeFailed = false; for (let i = 1; i <= pdfDoc.numPages; i++) { const pdfPage = await pdfDoc.getPage(i); const viewport = pdfPage.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create( + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4675,7 +4679,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const opList = renderTask.getOperatorList(); // The canvas is no longer necessary, since we only care about // the image-data below. - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); const { commonObjs, objs } = pdfPage; const imgIndex = opList.fnArray.indexOf(OPS.paintImageXObject); @@ -4712,7 +4716,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) it("render for printing, with `printAnnotationStorage` set", async function () { async function getPrintData(printAnnotationStorage = null) { - const canvasAndCtx = CanvasFactory.create( + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4728,7 +4732,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) expect(renderTask.separateAnnots).toEqual(false); const printData = canvasAndCtx.canvas.toDataURL(); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); return printData; } @@ -4737,6 +4741,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) buildGetDocumentParams("annotation-tx.pdf") ); const pdfDoc = await loadingTask.promise; + const { canvasFactory } = pdfDoc; const pdfPage = await pdfDoc.getPage(1); const viewport = pdfPage.getViewport({ scale: 1 }); @@ -4797,7 +4802,8 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) const viewport = page.getViewport({ scale: 1.2 }); expect(viewport instanceof PageViewport).toEqual(true); - const canvasAndCtx = CanvasFactory.create( + const { canvasFactory } = pdf; + const canvasAndCtx = canvasFactory.create( viewport.width, viewport.height ); @@ -4809,7 +4815,7 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) expect(renderTask.separateAnnots).toEqual(false); const data = canvasAndCtx.canvas.toDataURL(); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); return data; } diff --git a/test/unit/cmap_spec.js b/test/unit/cmap_spec.js index 109856825b2f0..be065530f6205 100644 --- a/test/unit/cmap_spec.js +++ b/test/unit/cmap_spec.js @@ -14,8 +14,7 @@ */ import { CMap, CMapFactory, IdentityCMap } from "../../src/core/cmap.js"; -import { CMAP_URL } from "./test_utils.js"; -import { DefaultCMapReaderFactory } from "../../src/display/api.js"; +import { CMAP_URL, DefaultCMapReaderFactory } from "./test_utils.js"; import { Name } from "../../src/core/primitives.js"; import { StringStream } from "../../src/core/stream.js"; diff --git a/test/unit/custom_spec.js b/test/unit/custom_spec.js index 052c60d641c41..2888fb020f0ed 100644 --- a/test/unit/custom_spec.js +++ b/test/unit/custom_spec.js @@ -13,8 +13,8 @@ * limitations under the License. */ -import { DefaultCanvasFactory, getDocument } from "../../src/display/api.js"; import { buildGetDocumentParams } from "./test_utils.js"; +import { getDocument } from "../../src/display/api.js"; function getTopLeftPixel(canvasContext) { const imgData = canvasContext.getImageData(0, 0, 1, 1); @@ -30,28 +30,24 @@ describe("custom canvas rendering", function () { const transparentGetDocumentParams = buildGetDocumentParams("transparent.pdf"); - let CanvasFactory; - let loadingTask; - let page; + let loadingTask, doc, page; beforeAll(async function () { - CanvasFactory = new DefaultCanvasFactory({}); - loadingTask = getDocument(transparentGetDocumentParams); - const doc = await loadingTask.promise; - const data = await doc.getPage(1); - page = data; + doc = await loadingTask.promise; + page = await doc.getPage(1); }); afterAll(async function () { - CanvasFactory = null; + doc = null; page = null; await loadingTask.destroy(); }); it("renders to canvas with a default white background", async function () { const viewport = page.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height); + const { canvasFactory } = doc; + const canvasAndCtx = canvasFactory.create(viewport.width, viewport.height); const renderTask = page.render({ canvasContext: canvasAndCtx.context, @@ -65,12 +61,13 @@ describe("custom canvas rendering", function () { b: 255, a: 255, }); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); }); it("renders to canvas with a custom background", async function () { const viewport = page.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height); + const { canvasFactory } = doc; + const canvasAndCtx = canvasFactory.create(viewport.width, viewport.height); const renderTask = page.render({ canvasContext: canvasAndCtx.context, @@ -85,7 +82,7 @@ describe("custom canvas rendering", function () { b: 0, a: 255, }); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); }); }); @@ -137,17 +134,15 @@ describe("custom ownerDocument", function () { getElementsByTagName: () => [{ append: () => {} }], }, }; - const CanvasFactory = new DefaultCanvasFactory({ ownerDocument }); return { elements, ownerDocument, - CanvasFactory, }; } it("should use given document for loading fonts (with Font Loading API)", async function () { - const { ownerDocument, elements, CanvasFactory } = getMocks(); + const { ownerDocument, elements } = getMocks(); const getDocumentParams = buildGetDocumentParams( "TrueType_without_cmap.pdf", { @@ -161,7 +156,8 @@ describe("custom ownerDocument", function () { const page = await doc.getPage(1); const viewport = page.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height); + const { canvasFactory } = doc; + const canvasAndCtx = canvasFactory.create(viewport.width, viewport.height); await page.render({ canvasContext: canvasAndCtx.context, @@ -174,12 +170,12 @@ describe("custom ownerDocument", function () { expect(Array.from(ownerDocument.fonts).find(checkFont)).toBeTruthy(); await loadingTask.destroy(); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); expect(ownerDocument.fonts.size).toBe(0); }); it("should use given document for loading fonts (with CSS rules)", async function () { - const { ownerDocument, elements, CanvasFactory } = getMocks(); + const { ownerDocument, elements } = getMocks(); ownerDocument.fonts = null; const getDocumentParams = buildGetDocumentParams( "TrueType_without_cmap.pdf", @@ -194,7 +190,8 @@ describe("custom ownerDocument", function () { const page = await doc.getPage(1); const viewport = page.getViewport({ scale: 1 }); - const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height); + const { canvasFactory } = doc; + const canvasAndCtx = canvasFactory.create(viewport.width, viewport.height); await page.render({ canvasContext: canvasAndCtx.context, @@ -206,7 +203,7 @@ describe("custom ownerDocument", function () { expect(style.sheet.cssRules.find(checkFontFaceRule)).toBeTruthy(); await loadingTask.destroy(); - CanvasFactory.destroy(canvasAndCtx); + canvasFactory.destroy(canvasAndCtx); expect(style.remove.called).toBe(true); }); }); diff --git a/test/unit/test_utils.js b/test/unit/test_utils.js index 0c6172c798a3e..15b5fce06f50a 100644 --- a/test/unit/test_utils.js +++ b/test/unit/test_utils.js @@ -14,10 +14,16 @@ */ import { assert, isNodeJS } from "../../src/shared/util.js"; +import { + fetchData as fetchDataNode, + NodeCMapReaderFactory, + NodeStandardFontDataFactory, +} from "../../src/display/node_utils.js"; import { NullStream, StringStream } from "../../src/core/stream.js"; import { Page, PDFDocument } from "../../src/core/document.js"; +import { DOMCMapReaderFactory } from "../../src/display/cmap_reader_factory.js"; +import { DOMStandardFontDataFactory } from "../../src/display/standard_fontdata_factory.js"; import { fetchData as fetchDataDOM } from "../../src/display/display_utils.js"; -import { fetchData as fetchDataNode } from "../../src/display/node_utils.js"; import { Ref } from "../../src/core/primitives.js"; const TEST_PDFS_PATH = isNodeJS ? "./test/pdfs/" : "../pdfs/"; @@ -40,6 +46,16 @@ class DefaultFileReaderFactory { } } +const DefaultCMapReaderFactory = + typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeCMapReaderFactory + : DOMCMapReaderFactory; + +const DefaultStandardFontDataFactory = + typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS + ? NodeStandardFontDataFactory + : DOMStandardFontDataFactory; + function buildGetDocumentParams(filename, options) { const params = Object.create(null); params.url = isNodeJS @@ -234,7 +250,9 @@ export { buildGetDocumentParams, CMAP_URL, createIdFactory, + DefaultCMapReaderFactory, DefaultFileReaderFactory, + DefaultStandardFontDataFactory, getCrossOriginHostname, STANDARD_FONT_DATA_URL, TEST_PDFS_PATH, From 7bf25e31990029ac4475f4fa509bf0ddc6a6ce3b Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 18 Jan 2025 18:54:28 +0100 Subject: [PATCH 193/338] Update dependencies to the most recent versions --- package-lock.json | 271 ++++++++++++++++++++++++++++++---------------- package.json | 12 +- 2 files changed, 182 insertions(+), 101 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36005f5385004..780362493122f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,18 +15,18 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.5", + "@types/node": "^22.10.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001692", "core-js": "^3.40.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^4.6.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-prettier": "^5.2.2", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", "gulp": "^5.0.0", @@ -43,14 +43,14 @@ "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.4.49", + "postcss": "^8.5.1", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^24.0.0", - "stylelint": "^16.12.0", + "puppeteer": "^24.1.0", + "stylelint": "^16.13.2", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.11", @@ -1819,11 +1819,14 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", - "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1886,9 +1889,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, "license": "MIT", "engines": { @@ -1906,12 +1909,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { @@ -2196,6 +2200,41 @@ "node": ">=v12.0.0" } }, + "node_modules/@keyv/serialize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.2.tgz", + "integrity": "sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@keyv/serialize/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/@metalsmith/layouts": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/@metalsmith/layouts/-/layouts-2.7.0.tgz", @@ -2615,9 +2654,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", - "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dev": true, "license": "MIT", "dependencies": { @@ -3574,46 +3613,64 @@ "optional": true }, "node_modules/bare-fs": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", - "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.0.1.tgz", + "integrity": "sha512-ilQs4fm/l9eMfWY2dY0WCIUplSUp7U0CT1vrqMg1MUdeZl4fypu5UP0XcDBK5WBQPJAKP1b7XEodISmekH/CEg==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.0.0", - "bare-path": "^2.0.0", + "bare-path": "^3.0.0", "bare-stream": "^2.0.0" + }, + "engines": { + "bare": ">=1.7.0" } }, "node_modules/bare-os": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", - "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.4.0.tgz", + "integrity": "sha512-9Ous7UlnKbe3fMi7Y+qh0DwAup6A1JkYgPnjvMDNOlmnxNRQvQ/7Nst+OnUQKzk0iAT0m9BisbDVp9gCv8+ETA==", "dev": true, "license": "Apache-2.0", - "optional": true + "optional": true, + "engines": { + "bare": ">=1.6.0" + } }, "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-os": "^2.1.0" + "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.1.tgz", - "integrity": "sha512-eVZbtKM+4uehzrsj49KtCy3Pbg7kO1pJ3SKZ1SFrIH/0pnj9scuGGgUlNDf/7qS8WKtGdiJY5Kyhs/ivYPTB/g==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.4.tgz", + "integrity": "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA==", "dev": true, "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, "node_modules/base64-js": { @@ -3768,6 +3825,27 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "node_modules/cacheable": { + "version": "1.8.7", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.7.tgz", + "integrity": "sha512-AbfG7dAuYNjYxFUtL1lAqmlWdxczCJ47w7cFjhGcnGnUdwSo6VgmSojfoW3tUI12HUkgTJ5kqj78yyq6TsFtlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookified": "^1.6.0", + "keyv": "^5.2.3" + } + }, + "node_modules/cacheable/node_modules/keyv": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", + "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.2" + } + }, "node_modules/cached-iterable": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/cached-iterable/-/cached-iterable-0.3.0.tgz", @@ -4541,9 +4619,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1367902", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1367902.tgz", - "integrity": "sha512-XxtPuC3PGakY6PD7dG66/o8KwJ/LkH2/EKe19Dcw58w53dv4/vSQEkn/SzuyhHE2q4zPgCkxQBxus3VV4ql+Pg==", + "version": "0.0.1380148", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1380148.tgz", + "integrity": "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA==", "dev": true, "license": "BSD-3-Clause" }, @@ -4983,19 +5061,19 @@ } }, "node_modules/eslint": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz", - "integrity": "sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", + "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.17.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.1", @@ -5222,9 +5300,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.2.tgz", + "integrity": "sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5789,16 +5867,17 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -6007,9 +6086,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -6926,6 +7005,13 @@ "node": ">=0.10.0" } }, + "node_modules/hookified": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.0.tgz", + "integrity": "sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==", + "dev": true, + "license": "MIT" + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -9506,9 +9592,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", "dev": true, "funding": [ { @@ -9526,7 +9612,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -9928,9 +10014,9 @@ } }, "node_modules/puppeteer": { - "version": "24.0.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.0.0.tgz", - "integrity": "sha512-KRF2iWdHGSZkQ8pqftR5XR1jqnTqKRVZghMGJfJ665zS8++0cErRG2tXWfp98YqvMzsVLHfzBtTQlk0MMhCxzg==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.1.0.tgz", + "integrity": "sha512-F+3yKILaosLToT7amR7LIkTKkKMR0EGQPjFBch+MtgS8vRPS+4cPnLJuXDVTfCj2NqfrCnShtOr7yD+9dEgHRQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -9938,8 +10024,8 @@ "@puppeteer/browsers": "2.7.0", "chromium-bidi": "0.12.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1367902", - "puppeteer-core": "24.0.0", + "devtools-protocol": "0.0.1380148", + "puppeteer-core": "24.1.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -9950,16 +10036,16 @@ } }, "node_modules/puppeteer-core": { - "version": "24.0.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.0.0.tgz", - "integrity": "sha512-bHVXmnkYnMVSbsD+pJGt8fmGZLaVYOAieVnJcDxtLIVTMq0s5RfYdzN4xVlFoBQ3T06/sPkXxca3VLVfaqLxzg==", + "version": "24.1.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.1.0.tgz", + "integrity": "sha512-ReefWoQgqdyl67uWEBy/TMZ4mAB7hP0JB5HIxSE8B1ot/4ningX1gmzHCOSNfMbTiS/VJHCvaZAe3oJTXph7yw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.7.0", "chromium-bidi": "0.11.0", "debug": "^4.4.0", - "devtools-protocol": "0.0.1367902", + "devtools-protocol": "0.0.1380148", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" }, @@ -11069,9 +11155,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.12.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.12.0.tgz", - "integrity": "sha512-F8zZ3L/rBpuoBZRvI4JVT20ZanPLXfQLzMOZg1tzPflRVh9mKpOZ8qcSIhh1my3FjAjZWG4T2POwGnmn6a6hbg==", + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.13.2.tgz", + "integrity": "sha512-wDlgh0mRO9RtSa3TdidqHd0nOG8MmUyVKl+dxA6C1j8aZRzpNeEgdhFmU5y4sZx4Fc6r46p0fI7p1vR5O2DZqA==", "dev": true, "funding": [ { @@ -11094,16 +11180,16 @@ "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", - "css-tree": "^3.0.1", + "css-tree": "^3.1.0", "debug": "^4.3.7", - "fast-glob": "^3.3.2", + "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^9.1.0", + "file-entry-cache": "^10.0.5", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^6.0.2", + "ignore": "^7.0.1", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.35.0", @@ -11178,30 +11264,25 @@ "dev": true }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", - "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.5.tgz", + "integrity": "sha512-umpQsJrBNsdMDgreSryMEXvJh66XeLtZUwA8Gj7rHGearGufUFv6rB/bcXRFsiGWw/VeSUgUofF4Rf2UKEOrTA==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" + "flat-cache": "^6.1.5" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.5.tgz", + "integrity": "sha512-QR+2kN38f8nMfiIQ1LHYjuDEmZNZVjxuxY+HufbS3BW0EX01Q5OnH7iduOYRutmgiXb797HAKcXUeXrvRjjgSQ==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" + "cacheable": "^1.8.7", + "flatted": "^3.3.2", + "hookified": "^1.6.0" } }, "node_modules/stylelint/node_modules/global-modules": { @@ -11231,9 +11312,9 @@ } }, "node_modules/stylelint/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", "dev": true, "license": "MIT", "engines": { @@ -11765,9 +11846,9 @@ } }, "node_modules/tar-fs": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.7.tgz", - "integrity": "sha512-2sAfoF/zw/2n8goUGnGRZTWTD4INtnScPZvyYBI6BDlJ3wNR5o1dw03EfBvuhG6GBLvC4J+C7j7W+64aZ0ogQA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", + "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", "dev": true, "license": "MIT", "dependencies": { @@ -11775,8 +11856,8 @@ "tar-stream": "^3.1.5" }, "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-stream": { diff --git a/package.json b/package.json index ac4f90331ef5f..2e4dc7ec0665f 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,18 @@ "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.5", + "@types/node": "^22.10.7", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", "caniuse-lite": "^1.0.30001692", "core-js": "^3.40.0", - "eslint": "^9.17.0", + "eslint": "^9.18.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^4.6.0", - "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-prettier": "^5.2.2", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", "gulp": "^5.0.0", @@ -38,14 +38,14 @@ "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.4.49", + "postcss": "^8.5.1", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^24.0.0", - "stylelint": "^16.12.0", + "puppeteer": "^24.1.0", + "stylelint": "^16.13.2", "stylelint-prettier": "^5.0.2", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.11", From d10d6a5ed04bc5da15cf883083d2a1087e4f42f4 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 18 Jan 2025 19:22:30 +0100 Subject: [PATCH 194/338] Align variable names in the freetext editor integration tests The `selectorEditor` name is used 57 times, but only in the freetext editor integration tests file. The `editorSelector` name on the other hand is used 241 times in all editor integration test files, so this commit renames the former name to the latter name to achieve consistency in variable names across all editor integration test files, which also simplifies upcoming changes. --- test/integration/freetext_editor_spec.mjs | 114 +++++++++++----------- 1 file changed, 57 insertions(+), 57 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 192f774821951..a4b0e67a3ac96 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -1859,17 +1859,17 @@ describe("FreeText Editor", () => { const rect = await getRect(page, ".annotationEditorLayer"); const data = "Hello PDF.js World !!"; - const selectorEditor = getEditorSelector(0); + const editorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 200, rect.y + 200); - await page.waitForSelector(selectorEditor, { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); const [pageX, pageY] = await getFirstSerialized(page, x => x.rect); - await moveEditor(page, selectorEditor, 20, () => + await moveEditor(page, editorSelector, 20, () => page.keyboard.press("ArrowRight") ); @@ -1881,7 +1881,7 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY)); - await moveEditor(page, selectorEditor, 20, () => + await moveEditor(page, editorSelector, 20, () => page.keyboard.press("ArrowDown") ); @@ -1893,7 +1893,7 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY - 20)); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveLeft(page)); [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -1903,7 +1903,7 @@ describe("FreeText Editor", () => { .withContext(`In ${browserName}`) .toEqual(Math.round(pageY - 20)); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveUp(page)); [newX, newY] = await getFirstSerialized(page, x => x.rect); expect(Math.round(newX)) @@ -1928,8 +1928,8 @@ describe("FreeText Editor", () => { ); const pageWidth = page2X - page1X; - const selectorEditor = getEditorSelector(0); - await moveEditor(page, selectorEditor, 5, () => + const editorSelector = getEditorSelector(0); + await moveEditor(page, editorSelector, 5, () => page.keyboard.press("ArrowRight") ); @@ -1953,40 +1953,40 @@ describe("FreeText Editor", () => { const rect = await getRect(page, ".annotationEditorLayer"); const data = "Hello PDF.js World !!"; - let selectorEditor = getEditorSelector(1); + let editorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(selectorEditor, { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); const [pageX, pageY] = await getFirstSerialized(page, x => x.rect); await clearAll(page); - selectorEditor = getEditorSelector(2); + editorSelector = getEditorSelector(2); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(selectorEditor, { + await page.waitForSelector(editorSelector, { visible: true, }); - await moveEditor(page, selectorEditor, 20, () => + await moveEditor(page, editorSelector, 20, () => page.keyboard.press("ArrowRight") ); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveDown(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveDown(page)); - await moveEditor(page, selectorEditor, 20, () => + await moveEditor(page, editorSelector, 20, () => page.keyboard.press("ArrowLeft") ); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveUp(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveUp(page)); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveRight(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveRight(page)); - await moveEditor(page, selectorEditor, 2, () => kbBigMoveLeft(page)); + await moveEditor(page, editorSelector, 2, () => kbBigMoveLeft(page)); - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); const [newX, newY] = await getFirstSerialized(page, x => x.rect); @@ -2130,9 +2130,9 @@ describe("FreeText Editor", () => { .toEqual(1); const { y: y0, height } = await getRect(page, getEditorSelector(0)); - const selectorEditor = getEditorSelector(1); - while ((await getRect(page, selectorEditor)).y > y0 - height) { - await moveEditor(page, selectorEditor, 1, () => kbBigMoveUp(page)); + const editorSelector = getEditorSelector(1); + while ((await getRect(page, editorSelector)).y > y0 - height) { + await moveEditor(page, editorSelector, 1, () => kbBigMoveUp(page)); } // The editor must be moved in the DOM and potentially the focus @@ -2287,20 +2287,20 @@ describe("FreeText Editor", () => { const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`; let rect = await getRect(page, page1Selector); - const selectorEditor = getEditorSelector(0); + const editorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(selectorEditor, { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${selectorEditor} .internal`, "Hello"); - await cancelFocusIn(page, selectorEditor); + await page.type(`${editorSelector} .internal`, "Hello"); + await cancelFocusIn(page, editorSelector); await commit(page); // Unselect. await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, selectorEditor); + await waitForUnselectedEditor(page, editorSelector); - const editorRect = await getRect(page, selectorEditor); + const editorRect = await getRect(page, editorSelector); // Select the editor created previously. await page.mouse.click( @@ -2375,20 +2375,20 @@ describe("FreeText Editor", () => { const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`; const rect = await getRect(page, page1Selector); - const selectorEditor = getEditorSelector(0); + const editorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(selectorEditor, { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${selectorEditor} .internal`, "Hello"); - await cancelFocusIn(page, selectorEditor); + await page.type(`${editorSelector} .internal`, "Hello"); + await cancelFocusIn(page, editorSelector); await commit(page); // Unselect. await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, selectorEditor); + await waitForUnselectedEditor(page, editorSelector); - const editorRect = await getRect(page, selectorEditor); + const editorRect = await getRect(page, editorSelector); // Select the editor created previously. await page.mouse.click( @@ -2538,18 +2538,18 @@ describe("FreeText Editor", () => { await page.focus("#editorFreeTextButton"); await page.keyboard.press("Enter"); - let selectorEditor = getEditorSelector(0); - await page.waitForSelector(selectorEditor, { + let editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: true, }); - await moveEditor(page, selectorEditor, 5, () => kbBigMoveUp(page)); + await moveEditor(page, editorSelector, 5, () => kbBigMoveUp(page)); const data = "Hello PDF.js World !!"; - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); - let content = await page.$eval(selectorEditor, el => + let content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); @@ -2560,19 +2560,19 @@ describe("FreeText Editor", () => { await page.focus("#editorFreeTextButton"); await page.keyboard.press(" "); - selectorEditor = getEditorSelector(1); - await page.waitForSelector(selectorEditor, { + editorSelector = getEditorSelector(1); + await page.waitForSelector(editorSelector, { visible: true, }); - await moveEditor(page, selectorEditor, 5, () => kbBigMoveDown(page)); + await moveEditor(page, editorSelector, 5, () => kbBigMoveDown(page)); - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); // Unselect. await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, selectorEditor); + await waitForUnselectedEditor(page, editorSelector); content = await page.$eval(getEditorSelector(1), el => el.innerText.trimEnd() @@ -2587,20 +2587,20 @@ describe("FreeText Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await page.keyboard.press("Enter"); - let selectorEditor = getEditorSelector(2); - await page.waitForSelector(selectorEditor, { + let editorSelector = getEditorSelector(2); + await page.waitForSelector(editorSelector, { visible: true, }); - await moveEditor(page, selectorEditor, 10, () => kbBigMoveLeft(page)); + await moveEditor(page, editorSelector, 10, () => kbBigMoveLeft(page)); const data = "Hello PDF.js World !!"; - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); // Unselect. await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, selectorEditor); + await waitForUnselectedEditor(page, editorSelector); let content = await page.$eval(getEditorSelector(2), el => el.innerText.trimEnd() @@ -2609,23 +2609,23 @@ describe("FreeText Editor", () => { expect(content).withContext(`In ${browserName}`).toEqual(data); await page.keyboard.press(" "); - selectorEditor = getEditorSelector(3); - await page.waitForSelector(selectorEditor, { + editorSelector = getEditorSelector(3); + await page.waitForSelector(editorSelector, { visible: true, }); - await moveEditor(page, selectorEditor, 10, () => + await moveEditor(page, editorSelector, 10, () => kbBigMoveRight(page) ); - await page.type(`${selectorEditor} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); // Unselect. await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, selectorEditor); + await waitForUnselectedEditor(page, editorSelector); - content = await page.$eval(selectorEditor, el => + content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); From 75fb3e1edf612c0bc48247e87e01120f269b0955 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 18 Jan 2025 19:21:55 +0100 Subject: [PATCH 195/338] Implement a helper function for selecting an editor in the integration tests This has multiple advantages: - it improves consistency between the various editor integration tests; - it makes the code easier to read/understand; - it reduces code duplication; - it reduces the number of `getEditorSelector` calls that contained hardcoded IDs, which helps to isolate the tests and to simplify follow-up patches. --- test/integration/freetext_editor_spec.mjs | 147 +++------------------- test/integration/ink_editor_spec.mjs | 19 +-- test/integration/stamp_editor_spec.mjs | 10 +- test/integration/test_utils.mjs | 11 ++ 4 files changed, 37 insertions(+), 150 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index a4b0e67a3ac96..42a2c41dc3521 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -43,6 +43,7 @@ import { paste, pasteFromClipboard, scrollIntoView, + selectEditor, switchToEditor, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, @@ -171,15 +172,7 @@ describe("FreeText Editor", () => { it("must copy/paste", async () => { // Run sequentially to avoid clipboard issues. for (const [browserName, page] of pages) { - const editorRect = await getRect(page, getEditorSelector(0)); - - // Select the editor created previously. - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - - await waitForSelectedEditor(page, getEditorSelector(0)); + await selectEditor(page, getEditorSelector(0)); await copy(page); await paste(page); await page.waitForSelector(getEditorSelector(1), { @@ -243,14 +236,7 @@ describe("FreeText Editor", () => { await page.type(`${getEditorSelector(3)} .internal`, data); await commit(page); - // And select it again. - const editorRect = await getRect(page, getEditorSelector(3)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - - await waitForSelectedEditor(page, getEditorSelector(3)); + await selectEditor(page, getEditorSelector(3)); await copy(page); await paste(page); await page.waitForSelector(getEditorSelector(4), { @@ -350,14 +336,7 @@ describe("FreeText Editor", () => { () => !document.querySelector(".selectedEditor") ); - const editorRect = await getRect(page, getEditorSelector(8)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - - await waitForSelectedEditor(page, getEditorSelector(8)); - + await selectEditor(page, getEditorSelector(8)); expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); @@ -397,16 +376,7 @@ describe("FreeText Editor", () => { await commit(page); if (i < 4) { - // And select it again. - const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector( - `${editorSelector} .overlay:not(.enabled)` - ); + await selectEditor(page, editorSelector, /* count = */ 2); } } @@ -467,13 +437,7 @@ describe("FreeText Editor", () => { expect(text).withContext(`In ${browserName}`).toEqual("A"); // Add a new A. - const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector(`${editorSelector} .overlay:not(.enabled)`); + await selectEditor(page, editorSelector, /* count = */ 2); await page.type(`${editorSelector} .internal`, "A"); await commit(page); @@ -904,12 +868,9 @@ describe("FreeText Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorSelector = getEditorSelector(0); - const editorRect = await getRect(page, editorSelector); - // Select the annotation we want to move. - await page.mouse.click(editorRect.x + 2, editorRect.y + 2); - await waitForSelectedEditor(page, editorSelector); + const editorSelector = getEditorSelector(0); + await selectEditor(page, editorSelector); await dragAndDrop(page, editorSelector, [[100, 100]]); await waitForSerialized(page, 1); @@ -942,15 +903,7 @@ describe("FreeText Editor", () => { expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6); const editorRect = await getRect(page, getEditorSelector(0)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector( - `${getEditorSelector(0)} .overlay:not(.enabled)` - ); - + await selectEditor(page, getEditorSelector(0), /* count = */ 2); await kbGoToEnd(page); await page.waitForFunction( sel => @@ -1048,16 +1001,7 @@ describe("FreeText Editor", () => { }); const editorSelector = getEditorSelector(1); - const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector( - `${editorSelector} .overlay:not(.enabled)` - ); - + await selectEditor(page, editorSelector, /* count = */ 2); await kbGoToEnd(page); await page.waitForFunction( sel => @@ -1134,12 +1078,7 @@ describe("FreeText Editor", () => { let editorIds = await getEditors(page, "freeText"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6); - const editorRect = await getRect(page, getEditorSelector(3)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - await waitForSelectedEditor(page, getEditorSelector(3)); + await selectEditor(page, getEditorSelector(3)); await page.keyboard.press("Backspace"); await page.waitForFunction( sel => !document.querySelector(sel), @@ -1199,13 +1138,7 @@ describe("FreeText Editor", () => { const editorIds = await getEditors(page, "freeText"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6); - const editorRect = await getRect(page, getEditorSelector(1)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - await waitForSelectedEditor(page, getEditorSelector(1)); - + await selectEditor(page, getEditorSelector(1)); await copy(page); await paste(page); await page.waitForSelector(getEditorSelector(6), { @@ -2106,12 +2039,7 @@ describe("FreeText Editor", () => { await commit(page); // Select the second editor. - rect = await getRect(page, getEditorSelector(1)); - await page.mouse.click( - rect.x + 0.5 * rect.width, - rect.y + 0.5 * rect.height - ); - await waitForSelectedEditor(page, getEditorSelector(1)); + await selectEditor(page, getEditorSelector(1)); const pos = n => page.evaluate(sel => { @@ -2300,13 +2228,8 @@ describe("FreeText Editor", () => { await page.keyboard.press("Escape"); await waitForUnselectedEditor(page, editorSelector); - const editorRect = await getRect(page, editorSelector); - // Select the editor created previously. - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); + await selectEditor(page, editorSelector); // Go to the last page. await scrollIntoView(page, `.page[data-page-number = "14"]`); @@ -2339,15 +2262,7 @@ describe("FreeText Editor", () => { await page.waitForSelector(getEditorSelector(0), { visible: true, }); - - rect = await getRect(page, getEditorSelector(0)); - await page.mouse.click( - rect.x + rect.width / 2, - rect.y + rect.height / 2 - ); - - await waitForSelectedEditor(page, getEditorSelector(0)); - + await selectEditor(page, getEditorSelector(0)); const content = await page.$eval(getEditorSelector(0), el => el.innerText.trimEnd() ); @@ -2388,13 +2303,8 @@ describe("FreeText Editor", () => { await page.keyboard.press("Escape"); await waitForUnselectedEditor(page, editorSelector); - const editorRect = await getRect(page, editorSelector); - // Select the editor created previously. - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); + await selectEditor(page, editorSelector); // Go to the last page. await scrollIntoView(page, `.page[data-page-number = "14"]`); @@ -2769,12 +2679,7 @@ describe("FreeText Editor", () => { } // Select the editor created previously. - const editorRect = await getRect(page, getEditorSelector(0)); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - await waitForSelectedEditor(page, getEditorSelector(0)); + await selectEditor(page, getEditorSelector(0)); await selectAll(page); @@ -3137,13 +3042,7 @@ describe("FreeText Editor", () => { const getText = edSelector => page.$eval(`${edSelector} .internal`, el => el.innerText.trimEnd()); - const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector(`${editorSelector} .overlay:not(.enabled)`); + await selectEditor(page, editorSelector, /* count = */ 2); const select = position => page.evaluate( @@ -3254,15 +3153,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2, - { count: 2 } - ); - await page.waitForSelector( - `${editorSelector} .overlay:not(.enabled)` - ); - + await selectEditor(page, editorSelector, /* count = */ 2); await kbGoToEnd(page); await page.waitForFunction( sel => diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 672f8ae21598b..a79098f7b7add 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -29,6 +29,7 @@ import { kbUndo, loadAndWait, scrollIntoView, + selectEditor, switchToEditor, waitForAnnotationModeChanged, waitForNoElement, @@ -719,11 +720,7 @@ describe("Ink Editor", () => { const pdfjsA = getEditorSelector(0); const editorRect = await getRect(page, pdfjsA); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - await waitForSelectedEditor(page, pdfjsA); + await selectEditor(page, pdfjsA); const red = "#ff0000"; page.evaluate(value => { @@ -815,11 +812,8 @@ describe("Ink Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorRect = await getRect(page, edgeB); - // Select the annotation we want to move. - await page.mouse.click(editorRect.x + 2, editorRect.y + 2); - await waitForSelectedEditor(page, edgeB); + await selectEditor(page, edgeB); await dragAndDrop(page, edgeB, [[100, 100]]); await waitForSerialized(page, 1); @@ -1067,12 +1061,7 @@ describe("Ink Editor", () => { await page.waitForSelector("#editorUndoBar", { hidden: true }); editorSelector = getEditorSelector(0); - const editorRect = await getRect(page, editorSelector); - await page.mouse.click( - editorRect.x + editorRect.width / 2, - editorRect.y + editorRect.height / 2 - ); - await waitForSelectedEditor(page, editorSelector); + await selectEditor(page, editorSelector); await dragAndDrop(page, editorSelector, [[30, 30]], /* steps = */ 10); const finalRect = await getRect(page, `${pageOneSelector} svg`); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index edb01595eeb38..4d4cb8628308b 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -38,6 +38,7 @@ import { paste, pasteFromClipboard, scrollIntoView, + selectEditor, serializeBitmapDimensions, switchToEditor, waitForAnnotationEditorLayer, @@ -524,9 +525,7 @@ describe("Stamp Editor", () => { await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); - - await page.click(editorSelector); - await waitForSelectedEditor(page, editorSelector); + await selectEditor(page, editorSelector); await page.waitForSelector( `${editorSelector} .resizer.topLeft[tabindex="-1"]` @@ -1494,11 +1493,8 @@ describe("Stamp Editor", () => { const serialized = await getSerialized(page); expect(serialized).withContext(`In ${browserName}`).toEqual([]); - const editorRect = await getRect(page, editorSelector); - // Select the annotation we want to move. - await page.mouse.click(editorRect.x + 2, editorRect.y + 2); - await waitForSelectedEditor(page, editorSelector); + await selectEditor(page, editorSelector); await dragAndDrop(page, editorSelector, [[100, 100]]); await waitForSerialized(page, 1); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 2b868ca8911cd..f67a02e235d40 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -347,6 +347,16 @@ async function applyFunctionToEditor(page, editorId, func) { ); } +async function selectEditor(page, selector, count = 1) { + const editorRect = await getRect(page, selector); + await page.mouse.click( + editorRect.x + editorRect.width / 2, + editorRect.y + editorRect.height / 2, + { count } + ); + await waitForSelectedEditor(page, selector); +} + async function waitForSelectedEditor(page, selector) { return page.waitForSelector(`${selector}.selectedEditor`); } @@ -868,6 +878,7 @@ export { paste, pasteFromClipboard, scrollIntoView, + selectEditor, serializeBitmapDimensions, setCaretAt, switchToEditor, From 7674e640a0823187cb82935f0a32aed92804a628 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 18 Jan 2025 20:00:23 +0100 Subject: [PATCH 196/338] Implement a helper function for unselecting an editor in the integration tests This has multiple advantages: - it improves consistency between the various editor integration tests; - it makes the code easier to read/understand; - it reduces code duplication. --- test/integration/freetext_editor_spec.mjs | 16 ++++++---------- test/integration/highlight_editor_spec.mjs | 11 ++++------- test/integration/stamp_editor_spec.mjs | 8 +++----- test/integration/test_utils.mjs | 6 ++++++ 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 42a2c41dc3521..13afe708d4760 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -45,6 +45,7 @@ import { scrollIntoView, selectEditor, switchToEditor, + unselectEditor, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, waitForEditorMovedInDOM, @@ -2225,8 +2226,7 @@ describe("FreeText Editor", () => { await commit(page); // Unselect. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); // Select the editor created previously. await selectEditor(page, editorSelector); @@ -2300,8 +2300,7 @@ describe("FreeText Editor", () => { await commit(page); // Unselect. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); // Select the editor created previously. await selectEditor(page, editorSelector); @@ -2481,8 +2480,7 @@ describe("FreeText Editor", () => { await commit(page); // Unselect. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); content = await page.$eval(getEditorSelector(1), el => el.innerText.trimEnd() @@ -2509,8 +2507,7 @@ describe("FreeText Editor", () => { await commit(page); // Unselect. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); let content = await page.$eval(getEditorSelector(2), el => el.innerText.trimEnd() @@ -2532,8 +2529,7 @@ describe("FreeText Editor", () => { await commit(page); // Unselect. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); content = await page.$eval(editorSelector, el => el.innerText.trimEnd() diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 06e1d44e564e6..182755090eb62 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -33,12 +33,12 @@ import { scrollIntoView, setCaretAt, switchToEditor, + unselectEditor, waitAndClick, waitForAnnotationModeChanged, waitForSelectedEditor, waitForSerialized, waitForTimeout, - waitForUnselectedEditor, } from "./test_utils.mjs"; import { fileURLToPath } from "url"; import fs from "fs"; @@ -1044,8 +1044,7 @@ describe("Highlight Editor", () => { const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); await page.waitForSelector(`${getEditorSelector(0)}`); - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, getEditorSelector(0)); + await unselectEditor(page, getEditorSelector(0)); await setCaretAt( page, @@ -1795,8 +1794,7 @@ describe("Highlight Editor", () => { await page.mouse.click(x, y, { count: 2, delay: 100 }); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); const clickHandle = await waitForPointerUp(page); y = rect.y - rect.height; @@ -1866,8 +1864,7 @@ describe("Highlight Editor", () => { await page.mouse.click(x, y, { count: 3, delay: 100 }); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); const clickHandle = await waitForPointerUp(page); y = rect.y - 3 * rect.height; diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 4d4cb8628308b..7118534c987c0 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -41,6 +41,7 @@ import { selectEditor, serializeBitmapDimensions, switchToEditor, + unselectEditor, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, waitForEntryInStorage, @@ -48,7 +49,6 @@ import { waitForSerialized, waitForStorageEntries, waitForTimeout, - waitForUnselectedEditor, } from "./test_utils.mjs"; import { fileURLToPath } from "url"; import fs from "fs"; @@ -1056,8 +1056,7 @@ describe("Stamp Editor", () => { .toEqual("Review alt text"); // Unselect and select the editor and check that the badge is visible. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); await page.waitForSelector(".editToolbar", { visible: false }); await page.waitForSelector(".noAltTextBadge", { visible: true }); @@ -1106,8 +1105,7 @@ describe("Stamp Editor", () => { .toEqual("Missing alt text"); // Unselect and select the editor and check that the badge is visible. - await page.keyboard.press("Escape"); - await waitForUnselectedEditor(page, editorSelector); + await unselectEditor(page, editorSelector); await page.waitForSelector(".editToolbar", { visible: false }); await page.waitForSelector(".noAltTextBadge", { visible: true }); await page.evaluate(() => { diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index f67a02e235d40..ace187dddbf88 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -361,6 +361,11 @@ async function waitForSelectedEditor(page, selector) { return page.waitForSelector(`${selector}.selectedEditor`); } +async function unselectEditor(page, selector) { + await page.keyboard.press("Escape"); + await waitForUnselectedEditor(page, selector); +} + async function waitForUnselectedEditor(page, selector) { return page.waitForSelector(`${selector}:not(.selectedEditor)`); } @@ -882,6 +887,7 @@ export { serializeBitmapDimensions, setCaretAt, switchToEditor, + unselectEditor, waitAndClick, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, From 818363de9c7b725510f7d7d2c403345b4e3ff8e1 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 19 Jan 2025 19:04:06 +0100 Subject: [PATCH 197/338] Enable a disabled stamp editor integration test in Chrome Puppeteer recently got updated to version 24.0.0+, so we're past version 23.9.1- where the integration test failed before and we can enable it again now that it passes in Chrome. --- test/integration/stamp_editor_spec.mjs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 7118534c987c0..ae546cad4f55b 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1621,12 +1621,7 @@ describe("Stamp Editor", () => { it("must check that the annotation isn't unselected when an other finger taps on the screen", async () => { // Run sequentially to avoid clipboard issues. - for (const [browserName, page] of pages) { - if (browserName === "chrome") { - // TODO: remove this check when puppeteer supports multiple touch - // events (it works in v23.9.1). - return; - } + for (const [, page] of pages) { await switchToStamp(page); await copyImage(page, "../images/firefox_logo.png", 0); From 1f12a2d98f88756bf25c157894ead79d5e0959bd Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 19 Jan 2025 18:59:55 +0100 Subject: [PATCH 198/338] Centralize the editor selector definitions in the stamp editor integration tests In most integration tests we already use the pattern of defining the editor selector once and reusing it in the rest of the test, but it's not fully consistent everywhere yet. This commit fixes that for the stamp editor integration tests, which has multiple advantages: - it improves consistency between the various editor integration tests; - it removes duplicate function calls and aligns variable definitions; - it reduces the number of `getEditorSelector` calls and other helper function calls that contained hardcoded IDs (by updating them to take editor selectors as arguments instead of editor IDs), which helps to isolate the tests and to simplify follow-up patches. --- test/integration/stamp_editor_spec.mjs | 151 ++++++++++++------------- test/integration/test_utils.mjs | 9 +- 2 files changed, 79 insertions(+), 81 deletions(-) diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index ae546cad4f55b..bf529fd983d61 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -86,7 +86,7 @@ const waitForImage = async (page, selector) => { await page.waitForSelector(`${selector} .altText`); }; -const copyImage = async (page, imagePath, number) => { +const copyImage = async (page, imagePath, selector) => { const data = fs .readFileSync(path.join(__dirname, imagePath)) .toString("base64"); @@ -94,7 +94,7 @@ const copyImage = async (page, imagePath, number) => { await copyToClipboard(page, { "image/png": `data:image/png;base64,${data}` }); await pasteFromClipboard(page); - await waitForImage(page, getEditorSelector(number)); + await waitForImage(page, selector); }; async function waitForTranslation(page) { @@ -139,9 +139,10 @@ describe("Stamp Editor", () => { await input.uploadFile( `${path.join(__dirname, "../images/firefox_logo.png")}` ); - await waitForImage(page, getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await waitForImage(page, editorSelector); - const { width } = await getEditorDimensions(page, 0); + const { width } = await getEditorDimensions(page, editorSelector); // The image is bigger than the page, so it has been scaled down to // 75% of the page width. @@ -163,9 +164,10 @@ describe("Stamp Editor", () => { await input.uploadFile( `${path.join(__dirname, "../images/firefox_logo.svg")}` ); - await waitForImage(page, getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await waitForImage(page, editorSelector); - const { width } = await getEditorDimensions(page, 0); + const { width } = await getEditorDimensions(page, editorSelector); expect(Math.round(parseFloat(width))).toEqual(40); @@ -346,10 +348,11 @@ describe("Stamp Editor", () => { for (const [browserName, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); // Wait for the alt-text button to be visible. - const buttonSelector = `${getEditorSelector(0)} button.altText`; + const buttonSelector = `${editorSelector} button.altText`; await page.waitForSelector(buttonSelector); // Click on the alt-text button. @@ -369,7 +372,7 @@ describe("Stamp Editor", () => { // Check that the canvas has an aria-describedby attribute. await page.waitForSelector( - `${getEditorSelector(0)} canvas[aria-describedby]` + `${editorSelector} canvas[aria-describedby]` ); // Wait for the alt-text button to have the correct icon. @@ -522,9 +525,9 @@ describe("Stamp Editor", () => { for (const [browserName, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); - const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await selectEditor(page, editorSelector); await page.waitForSelector( @@ -656,7 +659,8 @@ describe("Stamp Editor", () => { await page1.bringToFront(); await switchToStamp(page1); - await copyImage(page1, "../images/firefox_logo.png", 0); + const editorSelector = getEditorSelector(0); + await copyImage(page1, "../images/firefox_logo.png", editorSelector); await copy(page1); const [, page2] = pages2[i]; @@ -665,7 +669,7 @@ describe("Stamp Editor", () => { await paste(page2); - await waitForImage(page2, getEditorSelector(0)); + await waitForImage(page2, editorSelector); } }); }); @@ -685,18 +689,18 @@ describe("Stamp Editor", () => { // Run sequentially to avoid clipboard issues. for (const [, page] of pages) { await switchToStamp(page); - const selector = getEditorSelector(0); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} button.delete`); - await page.click(`${selector} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); await kbUndo(page); - await waitForImage(page, selector); + await waitForImage(page, editorSelector); await waitForSerialized(page, 1); } }); @@ -717,14 +721,14 @@ describe("Stamp Editor", () => { // Run sequentially to avoid clipboard issues. for (const [, page] of pages) { await switchToStamp(page); - const selector = getEditorSelector(0); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} button.delete`); - await page.click(`${selector} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToFourteen = Array.from(new Array(13).keys(), n => n + 2); @@ -742,7 +746,7 @@ describe("Stamp Editor", () => { await scrollIntoView(page, pageSelector); } - await page.waitForSelector(`${selector} canvas`); + await page.waitForSelector(`${editorSelector} canvas`); } }); }); @@ -762,14 +766,14 @@ describe("Stamp Editor", () => { // Run sequentially to avoid clipboard issues. for (const [, page] of pages) { await switchToStamp(page); - const selector = getEditorSelector(0); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} button.delete`); - await page.click(`${selector} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToOne = Array.from(new Array(13).keys(), n => n + 2).concat( @@ -781,7 +785,7 @@ describe("Stamp Editor", () => { } await kbUndo(page); - await waitForImage(page, selector); + await waitForImage(page, editorSelector); await waitForSerialized(page, 1); } }); @@ -803,8 +807,9 @@ describe("Stamp Editor", () => { for (const [, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); const serializedRect = await getFirstSerialized(page, x => x.rect); @@ -824,11 +829,8 @@ describe("Stamp Editor", () => { (x, y) => x !== y ); - const canvasRect = await getRect( - page, - `${getEditorSelector(0)} canvas` - ); - const stampRect = await getRect(page, getEditorSelector(0)); + const canvasRect = await getRect(page, `${editorSelector} canvas`); + const stampRect = await getRect(page, editorSelector); expect( ["x", "y", "width", "height"].every( @@ -863,15 +865,13 @@ describe("Stamp Editor", () => { for (const [, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - const canvasRect = await getRect( - page, - `${getEditorSelector(0)} canvas` - ); - const stampRect = await getRect(page, getEditorSelector(0)); + const canvasRect = await getRect(page, `${editorSelector} canvas`); + const stampRect = await getRect(page, editorSelector); expect( ["x", "y", "width", "height"].every( @@ -898,8 +898,9 @@ describe("Stamp Editor", () => { for (const [browserName, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); await applyFunctionToEditor(page, "pdfjs_internal_editor_0", editor => { editor.altTextData = { @@ -907,7 +908,7 @@ describe("Stamp Editor", () => { decorative: false, }; }); - await page.waitForSelector(`${getEditorSelector(0)} .altText.done`); + await page.waitForSelector(`${editorSelector} .altText.done`); await copy(page); await paste(page); @@ -979,8 +980,8 @@ describe("Stamp Editor", () => { await switchToStamp(page); // Add an image. - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); @@ -1173,8 +1174,8 @@ describe("Stamp Editor", () => { await switchToStamp(page); // Add an image. - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); @@ -1214,8 +1215,8 @@ describe("Stamp Editor", () => { await switchToStamp(page); // Add an image. - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); @@ -1236,8 +1237,8 @@ describe("Stamp Editor", () => { await switchToStamp(page); // Add an image. - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); @@ -1354,8 +1355,8 @@ describe("Stamp Editor", () => { await switchToStamp(page); // Add an image. - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); @@ -1390,7 +1391,7 @@ describe("Stamp Editor", () => { for (const [, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); } @@ -1431,13 +1432,11 @@ describe("Stamp Editor", () => { it("must check that a stamp editor isn't on top of the secondary toolbar", async () => { // Run sequentially to avoid clipboard issues. - const editorSelector = getEditorSelector(0); - for (const [, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/red.png", 0); - + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/red.png", editorSelector); await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); } @@ -1518,12 +1517,13 @@ describe("Stamp Editor", () => { const modeChangedHandle = await waitForAnnotationModeChanged(page); await page.click(getAnnotationSelector("58R"), { count: 2 }); await awaitPromise(modeChangedHandle); - await waitForSelectedEditor(page, getEditorSelector(4)); + const editorSelector = getEditorSelector(4); + await waitForSelectedEditor(page, editorSelector); const editorIds = await getEditors(page, "stamp"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(5); - await page.click(`${getEditorSelector(4)} button.altText`); + await page.click(`${editorSelector} button.altText`); await page.waitForSelector("#altTextDialog", { visible: true }); const textareaSelector = "#altTextDialog textarea"; @@ -1624,8 +1624,8 @@ describe("Stamp Editor", () => { for (const [, page] of pages) { await switchToStamp(page); - await copyImage(page, "../images/firefox_logo.png", 0); const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); const stampRect = await getRect(page, editorSelector); await page.touchscreen.tap(stampRect.x + 10, stampRect.y + 10); @@ -1643,7 +1643,6 @@ describe("Stamp Editor", () => { describe("Undo deletion popup has the expected behaviour", () => { let pages; - const editorSelector = getEditorSelector(0); beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); @@ -1657,14 +1656,14 @@ describe("Stamp Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToStamp(page); - const selector = editorSelector; - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} button.delete`); - await page.click(`${selector} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); await page.waitForSelector("#editorUndoBar:not([hidden])"); @@ -1672,7 +1671,7 @@ describe("Stamp Editor", () => { await page.click("#editorUndoBarUndoButton"); await waitForSerialized(page, 1); await page.waitForSelector(editorSelector); - await page.waitForSelector(`${selector} canvas`); + await page.waitForSelector(`${editorSelector} canvas`); }) ); }); @@ -1681,14 +1680,14 @@ describe("Stamp Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToStamp(page); - const selector = editorSelector; - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${selector} button.delete`); - await page.click(`${selector} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); await page.waitForFunction(() => { @@ -1711,10 +1710,10 @@ describe("Stamp Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToStamp(page); - const selector = editorSelector; - await copyImage(page, "../images/firefox_logo.png", 0); - await page.waitForSelector(selector); + const editorSelector = getEditorSelector(0); + await copyImage(page, "../images/firefox_logo.png", editorSelector); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); await page.waitForSelector(`${editorSelector} button.delete`); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index ace187dddbf88..e414b2a4380e9 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -489,17 +489,16 @@ function getEditors(page, kind) { }, kind); } -function getEditorDimensions(page, id) { - return page.evaluate(n => { - const element = document.getElementById(`pdfjs_internal_editor_${n}`); - const { style } = element; +function getEditorDimensions(page, selector) { + return page.evaluate(sel => { + const { style } = document.querySelector(sel); return { left: style.left, top: style.top, width: style.width, height: style.height, }; - }, id); + }, selector); } async function serializeBitmapDimensions(page) { From beaae9c21261eddb29727bb383cfe4151d987ae9 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 19 Jan 2025 19:46:50 +0100 Subject: [PATCH 199/338] Centralize the editor selector definitions in the ink editor integration tests In most integration tests we already use the pattern of defining the editor selector once and reusing it in the rest of the test, but it's not fully consistent everywhere yet. This commit fixes that for the ink editor integration tests, which has multiple advantages: - it improves consistency between the various editor integration tests; - it removes duplicate function calls and aligns variable definitions; - it reduces the number of `getEditorSelector` calls that contained hardcoded IDs, which helps to isolate the tests and to simplify follow-up patches. --- test/integration/ink_editor_spec.mjs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index a79098f7b7add..f32fbd2a9b9aa 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -305,16 +305,17 @@ describe("Ink Editor", () => { await awaitPromise(clickHandle); await commit(page); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -348,11 +349,12 @@ describe("Ink Editor", () => { await awaitPromise(clickHandle); await commit(page); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToFourteen = Array.from(new Array(13).keys(), n => n + 2); @@ -370,7 +372,7 @@ describe("Ink Editor", () => { await scrollIntoView(page, pageSelector); } - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -404,11 +406,12 @@ describe("Ink Editor", () => { await awaitPromise(clickHandle); await commit(page); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToOne = Array.from(new Array(13).keys(), n => n + 2).concat( @@ -421,7 +424,7 @@ describe("Ink Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -941,7 +944,6 @@ describe("Ink Editor", () => { await page.waitForSelector(getEditorSelector(1)); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(1)); await page.waitForSelector("#editorUndoBar", { hidden: true }); }) ); From 259154163edb9360b0201d0bdef43fdcc5092e42 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 19 Jan 2025 10:49:47 +0100 Subject: [PATCH 200/338] Replace the EXIF-block with dummy data to prevent JPEG images being rotated (bug 1942064) The `ImageDecoder` will respect the EXIF orientation, which can lead to JPEG images being incorrectly rotated. To avoid this we replace the entire EXIF-block with dummy data, which works since it'll cause EXIF parsing to bail out early in Firefox; see https://searchfox.org/mozilla-central/rev/9a66d18cb35595c89f499a1011c9dd7e573fce77/image/decoders/EXIF.cpp#130-138 --- src/core/jpg.js | 23 +++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/bug1942064.pdf | Bin 0 -> 10719 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 31 insertions(+) create mode 100644 test/pdfs/bug1942064.pdf diff --git a/src/core/jpg.js b/src/core/jpg.js index a7640a6d46dc1..93d703ab9ee52 100644 --- a/src/core/jpg.js +++ b/src/core/jpg.js @@ -817,6 +817,29 @@ class JpegImage { markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) { switch (fileMarker) { + case 0xffe1: // APP1 - Exif + // TODO: Remove this once https://github.com/w3c/webcodecs/issues/870 + // is fixed. + const { appData, newOffset } = readDataBlock(data, offset); + offset = newOffset; + + // 'Exif\x00\x00' + if ( + appData[0] === 0x45 && + appData[1] === 0x78 && + appData[2] === 0x69 && + appData[3] === 0x66 && + appData[4] === 0 && + appData[5] === 0 + ) { + // Replace the entire EXIF-block with dummy data, to ensure that a + // non-default EXIF orientation won't cause the image to be rotated + // when using `ImageDecoder` (fixes bug1942064.pdf). + appData.fill(0x00, 6); + } + fileMarker = readUint16(data, offset); + offset += 2; + continue; case 0xffc0: // SOF0 (Start of Frame, Baseline DCT) case 0xffc1: // SOF1 (Start of Frame, Extended DCT) case 0xffc2: // SOF2 (Start of Frame, Progressive DCT) diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 74bc63780255f..9105960cb9147 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -503,6 +503,7 @@ !annotation-line-without-appearance.pdf !bug1669099.pdf !annotation-square-circle.pdf +!bug1942064.pdf !annotation-square-circle-without-appearance.pdf !annotation-stamp.pdf !issue14048.pdf diff --git a/test/pdfs/bug1942064.pdf b/test/pdfs/bug1942064.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cb9dff3344578b4755e304b37e3de956488023ca GIT binary patch literal 10719 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 L_U*=2CW!w9R=zfq literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 1a7418b9a5c9f..03c40750cac59 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -8997,6 +8997,13 @@ "link": true, "type": "other" }, + { + "id": "bug1942064", + "file": "pdfs/bug1942064.pdf", + "md5": "d50b5ebb8cab1211609d16faa54ec47d", + "rounds": 1, + "type": "eq" + }, { "id": "issue16221-text", "file": "pdfs/issue16221.pdf", From 9dc7fcbadf696c35f2dd1706cfc4c03b6e68af17 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 20 Jan 2025 11:31:08 +0100 Subject: [PATCH 201/338] Enable the `import/no-restricted-paths` ESLint plugin rule for the viewer Code in the `web/` folder cannot import directly from the `src/` folder, since that could result in most (or all) main-thread code being bundled into the viewer, and must rather be imported via the `pdfjs-lib` alias. Let's use ESLint to help enforce this, please find additional details in https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-restricted-paths.md --- eslint.config.mjs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/eslint.config.mjs b/eslint.config.mjs index 6669f072a2f7a..887e013bbdb02 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -91,6 +91,17 @@ export default [ "import/no-empty-named-blocks": "error", "import/no-commonjs": "error", "import/no-mutable-exports": "error", + "import/no-restricted-paths": [ + "error", + { + zones: [ + { + target: "./web", + from: "./src", + }, + ], + }, + ], "import/no-self-import": "error", "import/no-unresolved": [ "error", From 6e5518d9da9d2ef5ff0fb1033ccd4ecaf2cc397a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 17 Jan 2025 12:38:03 +0100 Subject: [PATCH 202/338] Support multiple wasm-files in the development viewer This prepares for a future where we're using more than one wasm-file, originating in different `external/`-folders, by extending the existing `gulp.watch` usage. The following diff illustrates how to add more entries: ```diff diff --git a/gulpfile.mjs b/gulpfile.mjs index 0e0a5a1ac..1502755be 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -655,6 +655,10 @@ function createWasmBundle() { base: "external/openjpeg", encoding: false, }), + gulp.src(["external/foobar/*.wasm"], { + base: "external/foobar", + encoding: false, + }), ]); } @@ -2125,7 +2129,7 @@ gulp.task( }, function watchWasm() { gulp.watch( - "external/openjpeg/*", + ["external/openjpeg/*", "external/foobar/*"], { ignoreInitial: false }, gulp.series("dev-wasm") ); ``` --- gulpfile.mjs | 26 ++++++++++++++++++++++---- web/.gitignore | 2 +- web/app_options.js | 9 +++------ 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index a204a39847093..0e0a5a1ac5ee6 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -650,10 +650,12 @@ function createStandardFontBundle() { } function createWasmBundle() { - return gulp.src(["external/openjpeg/openjpeg.wasm"], { - base: "external/openjpeg", - encoding: false, - }); + return ordered([ + gulp.src(["external/openjpeg/*.wasm"], { + base: "external/openjpeg", + encoding: false, + }), + ]); } function checkFile(filePath) { @@ -2077,6 +2079,15 @@ gulp.task( ) ); +gulp.task("dev-wasm", function () { + const VIEWER_WASM_OUTPUT = "web/wasm/"; + + fs.rmSync(VIEWER_WASM_OUTPUT, { recursive: true, force: true }); + fs.mkdirSync(VIEWER_WASM_OUTPUT, { recursive: true }); + + return createWasmBundle().pipe(gulp.dest(VIEWER_WASM_OUTPUT)); +}); + gulp.task( "dev-sandbox", gulp.series( @@ -2112,6 +2123,13 @@ gulp.task( gulp.series("locale") ); }, + function watchWasm() { + gulp.watch( + "external/openjpeg/*", + { ignoreInitial: false }, + gulp.series("dev-wasm") + ); + }, function watchDevSandbox() { gulp.watch( [ diff --git a/web/.gitignore b/web/.gitignore index ae623f7cd33e4..334d49db079c2 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -1,3 +1,3 @@ -locale.properties locale/ cmaps/ +wasm/ diff --git a/web/app_options.js b/web/app_options.js index 34a7766b7193a..aa3fd0de92d92 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -434,12 +434,9 @@ const defaultOptions = { wasmUrl: { /** @type {string} */ value: - // eslint-disable-next-line no-nested-ternary - typeof PDFJSDev === "undefined" - ? "../external/openjpeg/" - : PDFJSDev.test("MOZCENTRAL") - ? "resource://pdf.js/web/wasm/" - : "../web/wasm/", + typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL") + ? "resource://pdf.js/web/wasm/" + : "../web/wasm/", kind: OptionKind.API, }, From 67fbd7a70e04bbb0cade2e26b64c45740f9b90f5 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 21 Jan 2025 10:25:58 +0100 Subject: [PATCH 203/338] Correctly render the glyph outline when it has a stroke pattern It fixes #19360. Each glyph in the test case has a fill and a stroke pattern, so the current transform used to scale the glyph outline must be the same. In setting the stroke color to green, I noticed that the last outline contains some non-closed subpaths, so when generating the glyph outline, every time we 'moveTo', we close the previous subpath. --- src/core/font_renderer.js | 12 ++++++++++++ src/display/canvas.js | 19 +++++++++++++++++-- test/pdfs/.gitignore | 1 + test/pdfs/issue19360.pdf | Bin 0 -> 1223311 bytes test/test_manifest.json | 7 +++++++ 5 files changed, 37 insertions(+), 2 deletions(-) create mode 100755 test/pdfs/issue19360.pdf diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index f03a274c83263..3634d1cdbd5af 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -170,6 +170,11 @@ function lookupCmap(ranges, unicode) { function compileGlyf(code, cmds, font) { function moveTo(x, y) { + if (firstPoint) { + // Close the current subpath in adding a straight line to the first point. + cmds.add("L", firstPoint); + } + firstPoint = [x, y]; cmds.add("M", [x, y]); } function lineTo(x, y) { @@ -182,6 +187,7 @@ function compileGlyf(code, cmds, font) { let i = 0; const numberOfContours = getInt16(code, i); let flags; + let firstPoint = null; let x = 0, y = 0; i += 10; @@ -350,6 +356,11 @@ function compileGlyf(code, cmds, font) { function compileCharString(charStringCode, cmds, font, glyphId) { function moveTo(x, y) { + if (firstPoint) { + // Close the current subpath in adding a straight line to the first point. + cmds.add("L", firstPoint); + } + firstPoint = [x, y]; cmds.add("M", [x, y]); } function lineTo(x, y) { @@ -363,6 +374,7 @@ function compileCharString(charStringCode, cmds, font, glyphId) { let x = 0, y = 0; let stems = 0; + let firstPoint = null; function parse(code) { let i = 0; diff --git a/src/display/canvas.js b/src/display/canvas.js index ee9c4f05320f9..3b56fb0d832ab 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -2043,12 +2043,13 @@ class CanvasGraphics { ctx.save(); ctx.translate(x, y); ctx.scale(fontSize, -fontSize); + let currentTransform; if ( fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE ) { if (patternFillTransform) { - const currentTransform = ctx.getTransform(); + currentTransform = ctx.getTransform(); ctx.setTransform(...patternFillTransform); ctx.fill( this.#getScaledPath(path, currentTransform, patternFillTransform) @@ -2062,8 +2063,22 @@ class CanvasGraphics { fillStrokeMode === TextRenderingMode.FILL_STROKE ) { if (patternStrokeTransform) { - const currentTransform = ctx.getTransform(); + currentTransform ||= ctx.getTransform(); ctx.setTransform(...patternStrokeTransform); + const { a, b, c, d } = currentTransform; + const invPatternTransform = Util.inverseTransform( + patternStrokeTransform + ); + const transf = Util.transform( + [a, b, c, d, 0, 0], + invPatternTransform + ); + const [sx, sy] = Util.singularValueDecompose2dScale(transf); + + // Cancel the pattern scaling of the line width. + // If sx and sy are different, unfortunately we can't do anything and + // we'll have a rendering bug. + ctx.lineWidth *= Math.max(sx, sy) / fontSize; ctx.stroke( this.#getScaledPath(path, currentTransform, patternStrokeTransform) ); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 9105960cb9147..f9e0cd705c705 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -696,3 +696,4 @@ !issue18911.pdf !issue19207.pdf !issue19239.pdf +!issue19360.pdf diff --git a/test/pdfs/issue19360.pdf b/test/pdfs/issue19360.pdf new file mode 100755 index 0000000000000000000000000000000000000000..558b3c59ddb9b04f16241a9b56a2c817bf6f8989 GIT binary patch literal 1223311 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�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

0y#9-Oe50>v|&(;WfyF#Vb3UjHU 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

D@%P+Vg6YH(C>)~4oqx>jpyDjDrHuE~#ZDM$e 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νHGMEVaIzTgpz<~ad#}sw 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

Cz0i{np--VqBR2j-oJn=c|fHpC}@&kxRIB5xby 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

Oa#8ov04Kq*nO+B}1F0AjdRN2m?VN#-NrL( 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

d>ZMp^-kqnP2nVxn4dUlb1<#B7GjiZ5At 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

H+cmw08Lw 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:=g)!0DIU;HfQP*ZGJM$2$Hd+4Gf*GkFFHrBLJ{M(W<`WVFOSv^ees{eznw9` zTCPdjMA&%j>$Q6zI&qJOD^GVfi$KQ>0!PR2yws)kYo3okNX6gC%F9gC+sQIF|60=U zP{y%oIwHhio}cX>&iL`(2d_{z`S+Q_9=jgR>ZZ+?G)J%#A?GIOD2lN-)SPO4l^$o) zOkH+6$Avlw!tfLUzO=|%9Hl>)Qs#qVHj+(A=61GkgwZxSogy4sUO>N}YaTH!Pzyei zmnJyi>BQl3PnrD#*Ip{lX9+?4uW(jtvOJ#7L`d_3`F8~Nt@}vdK#w}I$d-=?siO6j zOtQ<#=XvS)(zZGC(3NR6$wO}mPZzjyv2P2>hKylQ&x^1KdO`hV{phOL@G#Hmlo$B? z0F(^g9Op`eP&s9bu}VqX&pv#Bm6KliQf>+LsD6d!GU(5ps{)F>h zzZCJ^4O?v|LOh#oNXT7uvLA|%;zzG8Jtjiru!(pK5yCxLUb3_&j|gdWMA2_dHshG= zE}UW-Zbm~YDy=6rEvVKECMxXmeuwi@pRnipuWjNp;samT)}&78#{`GHJiJfI|EXok z+3pwK^ z#)HsKq~=v=6SgLv{K%(qvn#fX)FNkAqp%0(&|&T~M=mPMX1Uy>aviQ$edhH2z18JSXKbnGdHH?cq@SV1zbuG=T_t=d%iZA5Vd+ z9}L}DP7vB}bEWnym08@1#;)eQH}>|s(e{n)@~QyDO?UPAJb?q}STb?U0V#Pvzcc^3 zSBzr|ruSymS6biw7sEejGS~HE4$1j`uF`yX8*R=q9THy@t~-IG@6E3dif5t>o;uo) z>7%I5oePs5qlsjc+$FabfV{IbtRHbs(XVkpb7lX6=IU$!5u%vpn>HtLv308WsQql| zt3E}Bi~C+Y*!wDR=TnM2B<{>&-zu#g5_fWI^%Nn7Q<>fxS7Y7x6j` z{dui0tDC(S8*7}ur7UZ<>_@44HYo?bkK>5uwTOV%MeFNaf3DEMz9cq>*$yF*z#!v6 z2rvpK>_XxiiIClF1pv*`l!=fX@pyZk4<_tw&*${Q!e86bg!)if+CN|q9SZp5_ZCH_ zM#v&Udf^-V>EGc=dM8c@W~t#$I9&3YPG?a*a7NNfW|sgV-Ycn3%@X4%kkulPeI`l! zb;`Kzi-h7A>v1K+F(vDmIwIt05^p8y4s+i%i)MjL&nXF$=OOc-n69WNo$3^!^zU!4 zUu`c(9l~7|nUGo^s_ZelgMW_HJ-ZXvF09Ddi$6$&+{=50DUu-EzE}KgZuq+q9yv$8 zG+!vHobs`T+d=pK4Fr3b95x&|AUvnMP7_l_pj0D5DgaIH4i7?(S+pT%rBH<9;kdKD zAWfd6x zA>MN_zccZTW$UO7toF^2$xWs`YD$ zm0$XO<2S@<{FBZO<>P#jJCfbtSWC=qh% zF&&;la~6B2P%9W3?0#R7I@k}Pd+sXb!*1%@gyON;6#Si4-gQqvjtOnWO1KoT4#}4z z7nk~~^*IzhFcc-jX*S3iFl7lQ#YuDZ_(&pz0n;Hk2{2sD7pcgYHh@_<;)Yr!LIBb$ z3HUYtg+_6ewL{t^*>5vL>Rerqf1tSpoFH6H zE(M=>WhX*F*s$J%$}T8X{BD`$+nkk8Uul<}p)%~$sHJn8c74w_tY3TJ9O}G(J!)PZ zMJO2o>$i69OeczP+MksONf#wT;8-fKm=)m!z|gv$CPKW?>-0zcPR`L0RI2VEza2pm zuG$Y8@nK*4lYvEFAe#umJ}Ox_{#~}8WSO< zH%joj(AhZL2g0p1G!a6<0A}kvrp#xEZk0K!1b=vo&SpZ8V|IXP&zi!B5Jo*WAkyHn z-1+q$R4~_7@|>=1pTDc5BzGiVzcXv@%G)8-p-y{`rMkgbM+JQmB}mDG5MgNVE7ZTJ zNROte<}y4|olE6J$i<$|h7adeWIl-mttFPl&-0GOFAh)=f{nf-_v3fw%)#zt(OMSD z3lx~BS_tT}uJad^-Ce=$m^> z`*5DUk{O5ivz<;#CIw-#%Sql>a*{)>6B*eE3J0oR;SxT zj*OjG+9;X&rcC<&qNeWI3$vZLnGfxU7@i9$zU-2|ccxVLfa>#mnh>(y;&LM7#%LLG z0X`Ow6AC6mKp3I@@l>QHBw+f>U?g6r;mZZ;)VKpEm8t~ysw8g8vS z;>6p|KANo$Pv^NMlPwkJ^o-s4aC|SUzkBG7sfoME)U5u1{KXpdV39wK@k=^Wdmt+s z_^5tZOMElao-8^=I6kNGsDGW>(fIsh3zagZ5`X<~K_??u-KD8<-z(!pS_;wFnpbwT zS^nP+PPp7nv4plPi+yfX^gFjEgQ*e20H*T*EN!YoCAOHA-8c_IZau!KkTZxceYrme zAN6U^`gqBLLe#=cIdX-UjhhI0<3NP0l40-IBox0TiQL@TU4&vVEe)xkkhahjRyXV# zCEfbr#Uc1_ghu*m5KI@h#5h6fu{GADV8;_>@g7+CbeEDij)O)C=@LL1WD8^;wo5*3!M&x7}-TJ|- zul~Ha74!ghza6uvr?>H~jQi!5hfL*thDI#Y8CmeM6%?5ji-g;6``}u2TKGB9H(;i+}rb!;&MiBQE~B(2kU?a3T-n%uNHZ~Ej|PK5sunXy_sP` z|HS*%%6Lv78g&sNQt#KFFJ>8EJS3;I65Bbiy8t<$Sr1#$r=O)Gs7B?i`+&NiwzoFb zvCvDu%YSYoAu9ZSXG_drF~6sfXLG5?!C9pv=Q2N4JeoGxt3x0ckV|{^6Yu=1?=X2=}gC(G`H1 zD|A&RQZ0Co^dpl)BVAQd*;zXGZ(>r}MoStXl6HK*%Q+q(pdC zeorLc1`rBeKWvrq0uj=GAs&dnd>GJ4sZqdahlvp8IZP-UO{4FjbldFw6AbbPmMT?t z*49UND|@fHmgPY0XKw|&K3QqorxO3#&VD#PSiH{?moi8-7t*~OIg_PF$f^XCs^25a zczE_!kjx3dZyN1UoW9zUxcEWnDjq$|ACXW{5`dc5%Y-hEfTu8&Hg1%lLWF>o_>eo0 za$<_12|;bMCHT;M*gB>Z49vmeaqQJ3A_NfA471~bb9!!*yBF0}+cmS)mk)`&7RIIu zL;RDAM;qY};R4iEs@c%I%xfGvVFgMee)XuzVntlmAlV@D4s+T^7j#a}W&7QfTn@er zGQm#BPzT?gK$cAcb8OO#853K;go7E1^?X1m^+2u)r0yA@3snyBJw(@ewC81qS?}2X zx=X%TFjhOi(_TCjjMp{quisn$8uc1`z=BhmVYnbJcuY1Wd<4agYpz@^33HFcysWw1 z%-Q>eZh8PEH{qwLvqJW%5e!i)G@~6KsSjk070kkcS0&5@cF(|4{d{SoqaU?ELo*8o z^lP+pClC|%wM58(ujex1x_BRMHxvi(V9!uh$pSqPRNkK^vf6s47B`w<;!c-a-|LtVu_6_mND{sJQ&-ZTh*C1@L=-h7oeo-KO&8L zPbay*W*|JbB+r(CaE5;<{C3kyAA_$_Z_JIl6=7&oUJ!o)P7Fwj_HsmsKWd#}aS;}V z8IH$A0+c|l9!niqQHxl@Tymo#<2NECqwfYLvrzH! zpxVRljwy74G-1qEteF1e7;(m_c!oj^>7)JXYTC+OZZ*S3-|J)WJ7k~a;3ck4`u$^cXpsu9ej4a{l&`(OpczCv1KS9kz!qvipVId;Kg3Pyx*Aoqe!G7%v$`ZvHb@tfxN zzsTbfqWp2I?R~AYip%&Lf|$uvjHvG9B=Txbi5Xa&?kHqE1vO*&_9^;T=?5>`O23zhy|Q4kUQ-uFoG+5Z)QV zV7=a`xt&+(PC-=)+uePDS<~%0cUSf>F}9Sv1&E90CH^VQZk$tdnF-UoMu+#uoZ_V) zmPXW{sG4wH=)Z!E^_TIiTl1)}f7V&^n3XTemyOMJIUG+pz3$=NeosH;pL4CjriNPaZC zZ}GbX;iif08sK8plS!Bk1ZJ!X%e0}$|E}F*&DNhFhy7YG-@xX>s`&ARUuC!?RIzN< z@}e)jA3)kY@v9SkA6vawMVIVa6k>P^lB2&Kc{mLgUq99O^@GRjr?`?I;g3C^kaKZF z(Wy%R~je(v^r(EQyO8cubm`5ehz)IIrl zK?h|y8FRJCjaFIP43e33&mZ$eyRWI3Tb8H2rhe%wSgNkMU_yEE+?~to6pOGQ>+X%m zCVO4iIO?F0&Uh<9V7NxTS1<3(UXHrDc%+4kF6 zHPX6?RXiCl^2NS!M5RBuz9)?8lOOgktp@Dr@XW3oXhRv#b*ybJm*=`G|4udqEwS3YTaB!^e*< zDl#g`?f()zb*+?WUh7_~X73L`>ENNb6lm}Xu0}Dh>yy#rH?JV)76NdAYnR+vS67Fy zbM4pQC2Tgym3S|G`jNEs2$$KMMV)SsC3gCG<>102uRZzo9g%uD{7)WQpMCfhrHgES zF>_%Ztgxtz&Ubh?_w}79Rps2W@bL@Qzp=EN6*M^vueB=Y&s0(0ejd57qktAVpd7lG zmWCc!dtr{8Z<^dk4sk-Vh2*pQ+gUuUp%sQmKJo6mN z08b7UU}Jm0bVV^^x?eYTxH?h)bcbsR_T>XXxks5$iUzWg8TKp={~GACvF8~om-aze zB0qWMT$SB9VbmV=0{5^c#ehYmGmQ7X&*(HAR`x?0lueq>bRfAAmT6Bl<-ok(W^!M@ z)V*4R#S`)pyph?3j+<=u`>w!m>w`twONQ95@0vNhnBL5Ly}J}YjfLW7(}<9Lc#1~+ z$^MHdZRVRJ(~0(W&0PE5R*KJSG)6YCrCn(MwwSsHdRx2Wq^Z~*Wkt61hnId z6Ls}?k21uEZ3P?atD9tOI+P;seXL9eO zK+WvqY2(~a==kr~97$j-Z7ZAd#I zuTvC<&k-T`NGt;owFH6Cu9)SksHkr1aoOC1w&!_0ZMh(uBp1Tcw3@xWrDTsR%m`P; zw-9TZnBA`HoHCu%z}nteq(8?N(BM8pH}22V^t{>K2QlsVoN$okC1F19=~~cANfl~` zdo0;-(JU@fuQ^ZFD5P6KrUmfTSKp^h&eT?a3rjN8pyDEDZkw$NO!w6t-;4K{}jkvZ}I2Z_*-edTmz2<7(NA8IXtvIe5rbPd# zncJM^Fy%NRQpt5<-kSW<+x{@WT@wF%hr)g$JkbBpta3=X~moPjn7>BazK?)pO-iMz-n)>GobIch{u<#B}DUoUK#2A3TqX_uw5$F& z5mKjC_}O*xRyFi0V{4zCxYWhG+!mO?6g#U$oK_H$!M@(TFRYllartOb%j%O4q1l&5 zTnTHJ%*SKq>lytUq>A%QJyL8})sv!PKWft4vJyRW?iwX4q+0e?VS8C;GtQ&J$m9(; zX;a8kIlTAvqm{tHJZPw24a?o0F7AkTbu=%S&J2r0;BRAt!CBF13+QQvdS6=RikL=V zQ+ySNX!n<`LYIn@e3(1)zd}#kvaMkvqnxvzpVr_XuD=c4CkA7idpol>X+s|ms3z(eMZ&hxj7M*cdBOJJqcI|TFssr3J-Vhxlt`ygFX~%$AOx|x#e|@lf2GV8Xj1x~o1?py`Q;lt{vGhS>Ge^N6L#x8 z@*tV}?k3 zgn#=zHYZgja#HEt@i#}0AWX-cZnRw`+;~uS9+UN}HCBKtrgJ@KkI2byxG%0T& z1arzFPp}mluG7opRzf9OimokA_`rZ%ccq*TUkaCfh^4)!9HSSlZyix%WhHq+Q(N6T z{zFL!YW5mVV^qaYcxFU`!bX%&;Z!Xdd4F6YqRLe_t1qlqtWDx*RtvKQFQ7zx2M}`K zxh_Enh&B3SOezq)k?-S~tFWHxZu~D@UyQ5L%d=So;HZcY zkLmccurzN=LPYY!t(`9njCvljsO*kAiV+BOukK&x5668NgoACSP?Z~xozVKo#kKb!tzS=pNAELa*S$68Y(BPnHHELOzoUk*msws}6-2pH5)WrVK zOm=UZ$gp*^%zdB8tFl>h2Xj(;>{olH)4aRVokna?tQ6j4-zXqUjHmy#BEDF%)AwNZ zT>Z^UZH|R!9eZLEW4b$L=6f{Ht^`Q$^Y%!;LHO9TG-rhACj(oVQAqjMU7qigID}wgi~81?gqPBb^m=hY$iUImD>nSn(@1=3|2q}#xa6SY z6%~s;-FkBuxMQC}`M81EupzkL4=|!)I|Z{eF(%y!l&eizj9Or|@fqr`)flYWgAWB!n7qFsFaBSd>H% z+#7t)6^Co$%m;3jW;4cZIQxo-C4k;x5{=p?Fn`l<%J_g6Trb+k1)aVpzAby&c!$p7w>QfpAHcoFSS7bAfXRYafVG57@ z>d=$NHN{D^eSithTf=0EkgA^q}5$dF{E{fE?MSw>&& zz=6f$Bu5`hnUSLA=Mk?pC@LYhq*p^rmOpuOtS7-8EnWtS=dNlmm7P}EQ-(m{ff0df6`* z&%jf~ji+07|9@Rb5&ahzQuv2OGK9_vK~Br>-zgOPq%LWOm1Upli~f7{jMcj!mxU-M z|8$2!Z2P?tk{LhW&;EkDq$D3Gn)1ppT~}ad3L3BI>5O)9`}twhHHxMNXe7z~i{hpa zI`DYQ&R$8G^vDHV&jg7Z|F;z(IfVhqqHOI)2>RgA4tO>nV=f=j^+L_7V6`)A`snKev4Ca9Q;jIrYuZZ1eDe<0xri!xUBP zNQdE)8H+krE58W$KEFPX(dIPt-ZUMVN{bqO?<@nmo4s0&emdhb^nx#WyLk2F>@KMNu_gb@q0Sg^bo! zq|nGR?6fYqj#A~KkG)i+ka~87`MrUxM#zZSqVNYg3#Fr8$y&J{!+fv!PNc;Q_|~LY zIK?{p^83B~Y@EIjrH4G$*%z7m8Bqa>``&tRt#D8Fg75K#Lid~AUQ)J4 zMRRfJ2ND>v%wF=AKceg3F2DTFHvSWnXl>=wf3k?)@B&04Q4(_ju8e-%ZTh=~w1|)p z;(x(H8kkv=?cTkcW)IC_TH3=R94s6n|M3f$S<`QrS??s{gzTUv+euIM|5;;eU_?#^ z*|}*$4*qUhk^g2yP7jR8caW3sB&Q@9k(2H40PmgjcHuU zXKzb)bBSutGMc$GQXk}o4;-B%*^zIUk^g&EGu$hRAj)9fSzled!|vS~>E zbVm^1|KR($y^nEl9?g{oHPLIiuWbyjO$K`Hb;=Kr_3=Y?Z+x38_lN$8pBg$}V znzSzbYK!hfF~{tJ)JV2c$Mg_1|3UkD^b!H}P!{FtC>HxMdYL}crP8_9M=$f$tKg6Q zRsFm-;ysJv7h8gY_|n24KvvsHvWc39g9A;lO|d|M)xn;a#o$B5F|){ZvecHz`U<># z!)kZndM9cSb5DA$bd~M#ON#tBuNOo#p&9_ z(VS3c7Vj6V>jmrHbNN>iU6V|bT2rUo`vV#Soxzz=MzWodU5u~3v((*MiC0g)Ik=>x za4k+Yv_(A`uaA}4dm$TfL63D{sm?^Cbe(j`z#T1-SZ~n z)WW&N`su(`aJHd|q{H#vK4;RW2)#fU`_D5i4t4h71GAv3tC7IaLoAD#(3oXj|52px zWrbSI@_f!jEimzM@-kICphZS{U(~;f89s?z_mLpn$f|AE?T4=H1t;YuV1MzMfTc0c zVX6+(JH8rQoI!-J3&<0So`VxEbJ?|t}Z!Srm#+`XQw?FLwAI% z_WSK}RXfBuo7j3J;;=y1&;?1mHsz+Ax`K*vB$-5)BWtf;>*SI>8zg3oLEu`gll$WkMj11l$pbSQdkrA8-7pW$UA zIw~`3+;wlz(klPs$@m_b_(dN=oIi9{b6-MHagc1@dIJ%nUot)llz;L$YW}Xt+a${z zp}sY6>heyvx%_*LQkA$U?`js4?r2eA;Z*m)SVGW*^eI4VBzpUg-l+#A?u{=uT>KC& za%e9ZH^mZyy?;S^LChqGIk)+;hjCm<;-q+fYf3yi%5w0`!;wVUxS@vSrQyBGRUS+G zyQ^#un9f{sP!mEryRMbE#`)#D^Ri^cF1E!B$23{pIvsNJK|=`id&gB}_Vb-Ed?2vt zTwMtVn9TTznVP{>Im1{ijwi%MEVZ#@o=_zHq7e{^HK3hX)Wq_-G#=R>$D!!scK}e> zGXfUVT>pWvdzf%2R}Ib3Q9W>5(0s+ufD!tVaq_^q3yXGZ%06t_JIQD7cS~YD{L)r4 z%K3fDyi1!FEknQPbq?RSpN){7a(HrShu0EsXOU7+r$N$D>;0b-@2Q3=YBRcg-298mUO%+{l4OdJQ(G_`W(j&^IIE>tjoE8~9s)Hld`r%7aQVMZl% z9^Q+2k6hS=JxLw;xWs(&dyOi>Gq=E}FOiQ3akML0*k4G5luQxem~CIgl!9hP!p%qg zvNXS9yqZ1rby@_aRcsF|w~JJE&4=>~A-S&b6dm(lUAM2rgWEt{>hX9wU`J)QsIWG< zm`G1GODn4SUq{|4qPCkR2S;K@vw|zbbLKmBNte_orR^oe22%W8% zFQr)@7TT=U}MJF#-psAMy$69_J`VEs(g%3ff)wfG%MxN%HXIHRE{ z)DFbg`QGC$bF0t?7((4$N(6_7+L$q=qTdtpgyQ$h1|SJ6GOF-%nzxt)dBdn4xZM*{ zV5(F>Fn0Uqs~2$G*Bixitj^$pdC4#^R2&4BJ2#LQiI8|GJ_MM;DQ5+`x%p}C2PQcq z%c6UOx_^BPoei8U`91_Jg8&;1O6>fQPxo>VGumDJ)$}(WX>BLV*qYhVYba3uhS$*4 z@k6p}cp;>;h70;I4GPZVtFK^Im(c6G?T*)|KDLcLd|W3f7MC@u2h@a!01DvYHsA$C9y}`JfGVP>nUsNM%|*~dcpa&OomxzFMIH4 zz_^uo(6PqK`Ra(ukagCgrG@j zcC5~9AU>!K1y*a?)H;4(XhDQtI9q zjIhHakyCrZKCl%Rr3MwuX=HfaZO1Yk>^`_}Kie0Up}1jS=nZUaZxJC~sP%if-k#o< zhc!Bb#Vhm-9_eV?9q;tLJI?K8Vat8R!^QAXmAdlyJ2* z&^QjXBO8hzl)<)p$+h!d=oyy+n_m#$<`*gmWo)futGYS$3M0B!uRojF)a~iiWH{nw;ke>q zR*wHB74v=@%hv0=fgIL*2aaZdnUbSH{5~S&>k&Zam?hPL6g=j!Y|6o|+DJ?tw1LFP z7w95@Y;pBJdbc)a?n!g4UxVLGiOlhcDYura6rxMA)Yt9rG5bHweRn+7?fbYVl~O2? z$SSLhIOjMkD`bbr%u33ZEh7#pA`xX}B?%cPWsmGVj+vc3GPC!2zW3>Qo=+UlZ+w1# z{Z6l5^}gQszOVaQ_jSFm3i)m8K9i-QL4K3krsxN_Ywl7e>UH9I^Nx2?+EVl(X>&~0 z=>=pvtXHu+JKBGe3|fJWX$8@4l&OD`h@Hi(_hA;{9l&YNARdET$BSd|oLIBoVxQCr zcYh4Bz8WllIDPX~uPKY*Z)u^uJ5=#Ldf`gCpF#&;2Z?kPT}U=_qW-Q7|02T-JslA% z%hciejr~lWl`YL8qUWN`lnv!EG$X?b@T3Q4E8Puv)dPX#ThZr&ONt%O?Svn-Q=H^; zWYEKIe0hjJ!{>&_`0j250pC2}tiIw<_aFB!O9eF3X-?QBjrIh^a25aJ-ie8Y(K6WP12gf4#_97lSi z=BZEGcWtI*$xc$rkUie$%I;$3Cg;;;kqYjL(P~ms%(fc9p*nUn({;?dUP?KiMNK-0 zk5$`{p1PW@2B=U2@S%wVtlR@wfJe-+&*r{&RcbEgtKO(q4sZQxxOG}Pw3ETcR;l)< z#YiS3_0n>K^cK-v)66D9CPw7Ot=eR(`iD-2*g4ZO(V9a7YbR6m)1}PnN;GZW`Ev&Z zSubcYggN=XaibedDuOohOW#3^-55J;!a&VK&}~4gb+rGC8u0-!{N=25l&3VK>(SYx)Xy zix4j`$AfnV{NpK@TB`M05Ud$g$IgeX3?BQjrMIK`QqitWCYtO%+e?}I%-JoZ-c*V9 zTh?G8s(2pM1u(+q6Cb@wxxTQ-Pm$D-e#=b3VKDZsUka?ItuXmkjf4#}iN)cr1(2#jW>($P+jm>+R5|koUkS zcD6|A^Cc5qYD$+)bC&&cOG$rZ^L;>?|*hy_KN`WbA@k;G}g3aiK!hpsEX|#Q)l4GPEBQj9Ji}e$ecfaemiL? z!3g7kS07%{Wa-$!0T)dz%#T69sz}x;UhKAS-V|pNryX9MW~Rv6=J&mDmr38rOiL`k zv?h~;rTR;%WKZ?FkPUr8Rp;1PcIY~Y3DaGqDA#dz#mkY>3S?m};rNz~^1-@uNQJd*0S>Z@cI)BqTzu|dmQ)IjMHe$z7 z4ZKpydwcBrLv?XQTDeN{zh?S4V zH&cpG3Z2nXNvRWxjWv3@)kJorpp%)vxSu|{yr%cYCxK-FzjE^vka+R!nC!W}nbz-T ze&%+Un_qo$r~h<>p&>qX_nlbrl#sitBN8dl(~=Qb0ADr#0L1ig&INnDhn@4$g!Jn1fdRZJCWE2ggg6I z!YsmtG##95;|8i`@a=&1@Ha-^ZhK0p?5Y#(^1)=)cQ$3`1n^$*1otBju>zVY84?Jxsuf!7?%ZHA$Bk-| zv4(rg&|r+r3|3A8MpEhk;zinLY-jC&C%ziq!FhErQ*7DjQ~sRQY8cYn{GAR-enN&i zh0VhDB~R=gwOiQ?Cs*eZtw8>>yVqfCAq@j-b&T8m!<=PxjtlQ?QIp!e|52E$ycx(; z8!uM?V=BPKi71z|Eb(Y#2r4}yP5BvSnc`29oRV!0t37Mv2Ljd%OV+?)y@wTz+pcMf z(|Hb-OcgkPVI+NlsN5nd`~PA>;mO-@X$P(37;KB!toA<={*i*|-qFE^`T{W7c zM)l;E)qrp1iEFQJ1ZS#QdTNmdMScH}c(tf0DJkVE6|JXQJo!r{gJBtQK$3g_%@h^e zqz7yIQEXoiI-zCL%!rP3xKOI;P}b#>IEFCkI+B;LWeu9$v;jaL&a_wYo~7kdebcp_ zoIc9O3^+Vp_glc>VVLHoXsa4kcSTp&Wex69Z^~mLsdexej~U%1(RRkmWAlCEm+6~f z(XW2!M&@ckERcjbF&cgVysJT%%uYt38VNM4B zm0WUk=)i8Vp7 z&&jqp$+ld?egc89pN2H4hD5mh9JOD4LqWwBKG3uHh~s}|VAYEmoI>rLZRf_-m4ymv8!k2!bCXJm-NSu`GA%?djE!kzs=?Tj@W&*iei zm&=aEw>TQ6o0&b#R=x2$ln$lA9J$82J`>RK2Djsx4K^33N8<2FeY!5O%xp&a?yR^& zmYlNHPQioTKxy{2)qVYAx!q}iMclvIU5EAv*LP~@U&2vO zS-+cRxia{K)U7J`DJlbb-&SJ*Df>& z?Op>iuIQStm~LGcer}7JKH^& zL7;N{3Jl*@yT0}IHiLU0%N(!4&W`anET9tRt$Z1GbFXV3_N-2$yvCL4LxH~nf}fnD>|KSp7CW8w^vg;^PkD+?Bi4W z7!xiDzqoAjZ3O7lY9$r_=pP~fmG1G6t}-vm?9fp%7mmm2iacbYx@vB))&S!3(rj5O zOcGyXzE(_b!mRg`VC*gM83O;V5 zY@Pc^ivbKZ_^~3OSjif>o>i&^HXUc0Vo+O%~nh6_}_MA`I6%orcv$QA1-o2zE{lsOv zHTgZKil=m_cCx|Gq5zWs`+DIbS$jXX@5O66j4u&GCW~T`8Jxw)>Te%LE9_)BuAg0E zPt-v_iiyxA#o=OY1gOxZqW9H(9)1W|j<6dU+wQ@i-96;*CdnlT-3 zj+q2=Tbkj(d)F$OE{7NNWB0G$RDdy(kf|!V(7c&X=M7>r*EEa>yKw(LHHBr~tJCgNa4ifzD&&{#mMCx1&kAZr{hOtU`AJtI|DZv- zkw(;qS)B5bfWRwJDYO*cB@Qy>;s-}%_CDyitLouk+a7UCux``+{Sz!p z)2cJSEK3EyElYyJ>>|U!_l`jCG)>E=sRlQ&kNtk-JOq1>6;N- zI@BRH)2qCDxGPBW)4oRyl=9QqSj>*BE3@xVjM)QAr5Ia53*mF8cwi4gDdlR;ZQ2}# zMW6O6gSVPrb<9aIUdxp$K#ZO4RK81Pq>l<*l>IE-82BFgIr@~01cht3&+3L_6o<5> z{&i3J7Xi6eqf9|RqFv9N^H<`J<&stpd|~Q-J7-t8%LwNfb9PdyXo>55!h^kr^BzYE z(LS{=ZaVJ=&f6WEPRb<91m9!eX>`O=8kk0e+}F%@p}!cZ^{AUS8;^UIu#a#g)56j>)xqonN2uBWatgOs-w-Rh$- zbJeSsN2O#XPW8Ef_!NpkMz0o=Ly7v)4~^A6_p2+u#k+c#knJ~EnQtUj^m+un6X!^K zU<`X=rdP*%%&0xdu*E42yN^}8dJ}`_inOUvrU*zOZ+pK+{F)hxVTjiY5IDLhOP|$enst-q^V(bUS;|g?V!@5fP zTN6eqT^_+7GMYEf8mWVG8c9b&UfJ@9I`dQBHzUpAuGzvs^tqGTI?2-{qh8Sg{&N;$ zYTsrBoh$U}A5ueToXw7LC9BFXGAohMR*}C_8S`3+NMmMp6wNfam!2`8-QYZ<;B&%4 zDAoC{->C@sw|!l_0%S}N@s5qAm?Z(TlGRl@ybn)Hms0K`Q)2qu*isWIm4FVL7j+2a zu~%MjJ9;LT1eJb5ghlDoQd9P8NR~_QHgpt?Yjl}+TN%lD;dsnWM0>Kce*9Ubn=|}e zp;$xG4)vU^CiBtQb=BhhH*1$dwBN{8L;M{|@AO25dD#8vAE1z^;<19!Z4@u&Hm8bfZw^ymgvfTd~Hn=RJp!H?j zBj}+y+cN!#5ScA4P_PlKCQQ8MXK z*)n$4`xIH!a;42jxc7C(SyCdX0mleqd;SQ@-u&v4XgNwOytaISewXcVG6pnCfy@CZWdO}li zHyCrrH-Bas8krj8Ef@4}#Hz2Um)r!3@Y}^E+`jYvm&Wri*Em=)+C{A7j2+9m8O9GU z`*RC?9E^0#`!5sI-&&74LorYjYabHSJD}aJT)4&m^i3f zRRX>s&96K#{E`zgG9u0hAv`VtN8Ak`s|S;$4o<;)EHkmkB-9g~+>O~z%kaI6KZ2Fo z`pkdIf5fqC{HB3V8L6dWOH6V2 z;wW(UczfL9<4>v`U!YxLje#y0_9cA>;dsAf!C_ZvP#fG-odu$&ej8?rv&gmBmk5wq z{)l&F8Q41|Tex*BBGcvxfddI)uu#L^cfc_62O_3*`YZF|$*bd;WTywJ#oXxdjb8^F zmbmVRAWOq8C0;AbQDi7!WDH0>bgXtt%DFgwpy~C9n}Xk+h@&d(O6s0>)B*x4si~4V z3kT?`zvW)0`1(#1hq{)IwtSzSx9lmZM7|Yxymmiwni**p%4xdg4T(%bf`B%s@5nQh}36WSQW5 zg~zal`9(fmH=7K%;!UgTOouXCdN!CO=a=Seh5w1z22a@L|VBYXEsTjhYr z*o{2Z%v4gg2dWKA?z5+^z9gxwqo+NW+>{koBQ2-;6s2^_4Bq+mX;jn+g*rC3RMQU- zZ@R{tr6%-4i{0u^qypjBZzjLx{un?)cI}Am!@*N*Cvug)7~f5p%tMjex0`aYF)g7* z`-coRzG#&g;X|z2S)b(AlU%DYD8}iY3Bc1v+pKbY^|jI+Jua6^<+91&v9kR9UCEk7yqo{vDovCD_7L&lv7%*f)pUTn=zFJ1g3qD@~jG0eezJ-pYOUi!U=H)pV z?8E!j^sc6e&#}^lRZc9X-2LO9B)HL%Q@S7ukPnodNBnXs4^&sZegYH2+y zs3t}3f9PX!DTxD#W{mU1?v-rkxsk|wfdc|%G6OH;B1}sD@QBmxbi*=OAP>*J5pukA zGfgGXKGv>>b-Ckoz)5@ET?^^QPx9Z}PH3k=Xm&%{=Q@COW?Go_zjb#24O^_Ll<^F!Nrnk#e{3$Ed;5|4yjlh2xkCIqI; z;OuLd$}$+tCh|iQV>QF1tM$4wQRf)n1o{^^j2?+^@~>8}tY2l0DPa55^2oqCamu^d z%|&19Irw|-j>~yJVLN5Nq&#exhoi4Syd!oPr$Mv{nm5B-quUAp%F5hWl zz?j{2fAb;nURL`~1M9@wz(HR85Er6Hb-F3YwbHb+h56jkF6HEB-L)hGw8y?~CSe*KiGN zc9%DmG*cNrp-E7b5u0CHKGR6fu2N0eZK^o#=`NP((YqG{u-`4+=VioWA^lD@BK>WNMbwHs zR)O#1z4gy>9mxeZ^JPlHmK=T)uf>NhZ3>;{H${#Vx7q zg6!fLj$m;o$CLR}r6)<(3nz0uva2*zhB0UQrgC2O=}Gah$xU4F6GyX=q1jrD7Bl?& zcXE9uL&J;2vd1g=9kF>WgmVnOyQ;hs4&r$}PJ|9Uqb&OiH?np z!@n!}8E0m&ya38R;s^F_1%j3A6)>IJy1figb1`eUGeKlV|{l_A-hnie}2p#f%=-oU2ys)j3eZDRV;#aNRN6x}`f znx`z2D|K&P>wsH+2fJ*a{~G(6qUYX0`LP~Or|4Qua@(kZo}$AiN2j3=pG>N|d} zy%$V3KM`(x>eXjmYSCLYsA)1X=1$r(wvP&Ov$y&B`uh}Ynp-1kgI@jim}FV&2*uFCF7Mx`J!k6ofA2ZN zFkD=%#nPxrwlJ19@2-k(O5{N04c5Kc8h!6d`BpDfJl8f1HI_o+!S1CmuCul7pW&Ds zcKG@1x6$wb(UHmiA=|l`4WmN^KUezMQihGY>z&`EwD$lS$75elFv)RRr26J47{_XO zQEFTq`xxs&`gR&~)yMzRd8>J#ksbPv*{*-jMGs|`1CsK=ESU}59fXEDa&dykwKnWA)%ri$sFtW z3~&uSw0Dd{b zXmBv=>M~wgYU_I#r}*h^r-2F5c%}VCF288RU}F*&?@0UE;ZIVoy%)c03&#l?(o~uX zu339iG`k6DpIZ=CjcjbJn`_lPGk1?dWcUe|vrm(=!_a3+kB>qu?DO-lu8ff2hG6-X zZ%U`isvN#VVl|z7T&@)D3hP*9FLDGvE@u4G9FI~&^Doib%c-#$gv#z9RGVH$!W7YV zikV@#na*eE9D2nj_3=&i(a4@xVUIiH&%O6Q@;LJKOJBi9 zN_w@GeMObHKz5JXr(r(osXsJ61|}NWOWgB#DdC`h66(ETt4uEP!4n=b5CA_B>Z|^m z-ro7rc=e^?G*b!Nt$+&`)^m6a`7Jq4AA-8`%0iABPNj;Z_|i)t6L`ld{y4tOdN{27 z$PZ~6I;L=)c@L-e`dqV(@!_AW3ZM8R>-Y-G6ZxGT)uShek`>D6I{L-Jh7|5fcqJ^v z)L)@HPM*r(dlzB%BHx$wvSG9xV>QQx_daKf-AgtvOzYjhEH59=6QZOr6{&wK&h(sp zZ6D;(>?MUB^+XX>=;~7wnwJIMksLXmeuq|F)o+Aem%um`>e=x&ZBy<-E>YDUr!F&) zQPH>mNV-(y?h@1|Bz;D=BSM10J<-BS{Vm_Z2<>X1-LuOv;ffv??=Vd>2J5?AT3P-c z^|V}Z_=C-@yxn!1go|`Fx-;vgFK8c-BcDc<&&fQEI{cU~hO&&$YWN$?-$1P)&Vkow zPBVGywD1s0DGoaY*u0wfSv!7yNaJ^*qYHTt8u~%i!3sqNEwP(7^Dg((Jdin*d$^-g zdhxvI&F<|eLgin5C)+&lR5_l>Tx8eYr}|f$uWckFp4Ja9Z8Ljb-Dt$t2wr;m|*R7ko?PA3D>hffr3;q@DCx<52`?y%6OBkXsB%Svf zFCGjuat4{o$pu)U6yzY=$lpJZEeQ^Tvl{<~K|rt>;m7)bf*b}?pa1g)0!4u^rGMW1 z`i}qvh5!+dL@)#rM6eOTkkEs5f90YhDu*T{n%@rtK|u%FgF=x9+5=ho0KF!vD~JNb zm_>sYiad z3W0<8KosovOOWev|8PMDOZ0&*LH>z@<=_zFrGp5<38}93EeQ+?B?L?o!%zodf&#>S zz@SJ%$S6@=lpyia!Jw!EXaR!>K=v%juSVcVxB$prvadZj5^-RBa3l(3Y9lU(f*oiN zC2#;O;3$xcj<_xg0XiV#4e55OP-XyP#=ArK^Szeup@#A8N6;2<^H{(eECFhZ_2!tXz0 zK|;`kBy9U(FbE;@>V6mk?C=2?;sE|35y%7k3t$J174Z5xfLBN)92^^>enHg(Yk)+d z4vY_da7~eD^j>23t6`LYAev~t5I72C1l->*1nfC6S%M${h-fSX81Xs-7{F+v_7G43 z2+`SsAfONg(Vioapkt!Bfn?k&65;nZJ`-SY=>9b&z`z0$m4kt8BQ6I+{R*Dl*B*c!7&8nFk_-{IhlU;K10jHd z6R#fvOxKY$xh;`R_w=w5aL#smTQf*_*L1Q`0?U_^TkRv8Z4i$f43nAKkl>esuy zV+Zd9{}v*Cy#r5#CHcL^;FAS=**F9RF#9i|gHT@Z03M-G0(->+P#$~~;TJ6graK;I_`1VZ>4Fm(?O#`q4 zlR`rPSvyb{O~lM05Hu8W0CCZPArm7X8VVy~MufVs0~?8kf`pI6{erV`pgkbp>_0HS z<_WfO?|lCa2Koi3<6wKljGIu7n8^@e!~z2WhC=Kg3xEj<5D{1agM+jBdwjoQ*-?KZ z3K|Y2-UFxr9Hf)}T^>vZkPbkRiPi_ephQfQP>z_P5nw=?AZm|5pNQK7M3s=wlJFxC z9tS%^Gt2vSj)zx#RVm$ zrD2ldFe#8DT^ucN9eG_sKAw4|sWuuIrG7}`1f68!;<1WAM8 Date: Thu, 23 Jan 2025 11:50:03 +0100 Subject: [PATCH 204/338] [Editor] Ensure that `highlightSelection` waits until we've fully updated the editing-mode (issue 19369) With the changes in PR 18843 the `AnnotationEditorUIManager.prototype.updateMode` method is now asynchronous, which we need to take into account when dispatching the "annotationeditormodechanged" event. --- test/integration/highlight_editor_spec.mjs | 38 ++++++++++++++-------- web/pdf_viewer.js | 17 ++++++++-- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 182755090eb62..e0027dde2c47e 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -1481,23 +1481,33 @@ describe("Highlight Editor", () => { it("must check that clicking on the highlight floating button triggers an highlight", async () => { await Promise.all( pages.map(async ([browserName, page]) => { - const rect = await getSpanRectFromText(page, 1, "Abstract"); - const x = rect.x + rect.width / 2; - const y = rect.y + rect.height / 2; - await page.mouse.click(x, y, { count: 2, delay: 100 }); + async function floatingHighlight(text, editorId) { + const rect = await getSpanRectFromText(page, 1, text); + const x = rect.x + rect.width / 2; + const y = rect.y + rect.height / 2; + await page.mouse.click(x, y, { count: 2, delay: 100 }); + + await page.waitForSelector(".textLayer .highlightButton"); + await page.click(".textLayer .highlightButton"); + + await page.waitForSelector(getEditorSelector(editorId)); + const usedColor = await page.evaluate(() => { + const highlight = document.querySelector( + `.page[data-page-number = "1"] .canvasWrapper > svg.highlight` + ); + return highlight.getAttribute("fill"); + }); - await page.waitForSelector(".textLayer .highlightButton"); - await page.click(".textLayer .highlightButton"); + expect(usedColor) + .withContext(`In ${browserName}`) + .toEqual("#AB0000"); + } - await page.waitForSelector(getEditorSelector(0)); - const usedColor = await page.evaluate(() => { - const highlight = document.querySelector( - `.page[data-page-number = "1"] .canvasWrapper > svg.highlight` - ); - return highlight.getAttribute("fill"); - }); + await floatingHighlight("Abstract", 0); - expect(usedColor).withContext(`In ${browserName}`).toEqual("#AB0000"); + // Disable editing mode, and highlight another string (issue 19369). + await switchToHighlight(page, /* disable */ true); + await floatingHighlight("Introduction", 1); }) ); }); diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 59621ba5e9e9f..986cfa71236ac 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -2339,11 +2339,22 @@ class PDFViewer { this.#mlManager?.loadModel("altText"); } - const { eventBus } = this; - const updater = () => { + const { eventBus, pdfDocument } = this; + const updater = async () => { this.#cleanupSwitchAnnotationEditorMode(); this.#annotationEditorMode = mode; - this.#annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard); + await this.#annotationEditorUIManager.updateMode( + mode, + editId, + isFromKeyboard + ); + if ( + mode !== this.#annotationEditorMode || + pdfDocument !== this.pdfDocument + ) { + // Since `updateMode` is async, the active mode could have changed. + return; + } eventBus.dispatch("annotationeditormodechanged", { source: this, mode, From 05b8a4a2b96f79426c5f3910a2ea8c3892c82d12 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 23 Jan 2025 16:33:14 +0100 Subject: [PATCH 205/338] [GENERIC viewer] Re-initialize the viewer-toolbar `ColorPicker` for each PDF document Steps to reproduce this in `master`: 1. Open https://mozilla.github.io/pdf.js/web/viewer.html 2. Use the "Open"-button (in the secondaryToolbar), or drag-and-drop, to load another PDF document. 3. Enable the highlight-editor. 4. Try to pick a new colour. Note how it's no longer possible to change the default highlight-colour. The reason for this is that we're only initializing the viewer-toolbar `ColorPicker` *once*, which doesn't work since every PDF document gets its own `AnnotationEditorUIManager`-instance. To address this we simply need to re-initialize the viewer-toolbar `ColorPicker`, and note that this patch won't affect the Firefox PDF Viewer. --- src/display/editor/tools.js | 2 ++ web/annotation_editor_params.js | 14 +++++++++++--- web/toolbar.js | 29 ++++++++++++----------------- 3 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index af2f49cd30be8..c0349c6888eaa 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -907,6 +907,8 @@ class AnnotationEditorUIManager { this.#altTextManager?.destroy(); this.#highlightToolbar?.hide(); this.#highlightToolbar = null; + this.#mainHighlightColorPicker?.destroy(); + this.#mainHighlightColorPicker = null; if (this.#focusMainContainerTimeoutId) { clearTimeout(this.#focusMainContainerTimeoutId); this.#focusMainContainerTimeoutId = null; diff --git a/web/annotation_editor_params.js b/web/annotation_editor_params.js index a69206214b3c9..951ce86a5bd0e 100644 --- a/web/annotation_editor_params.js +++ b/web/annotation_editor_params.js @@ -52,8 +52,10 @@ class AnnotationEditorParams { editorFreeHighlightThickness, editorHighlightShowAll, }) { + const { eventBus } = this; + const dispatchEvent = (typeStr, value) => { - this.eventBus.dispatch("switchannotationeditorparams", { + eventBus.dispatch("switchannotationeditorparams", { source: this, type: AnnotationEditorParamsType[typeStr], value, @@ -75,7 +77,7 @@ class AnnotationEditorParams { dispatchEvent("INK_OPACITY", this.valueAsNumber); }); editorStampAddImage.addEventListener("click", () => { - this.eventBus.dispatch("reporttelemetry", { + eventBus.dispatch("reporttelemetry", { source: this, details: { type: "editing", @@ -93,7 +95,7 @@ class AnnotationEditorParams { dispatchEvent("HIGHLIGHT_SHOW_ALL", !checked); }); - this.eventBus._on("annotationeditorparamschanged", evt => { + eventBus._on("annotationeditorparamschanged", evt => { for (const [type, value] of evt.details) { switch (type) { case AnnotationEditorParamsType.FREETEXT_SIZE: @@ -111,6 +113,12 @@ class AnnotationEditorParams { case AnnotationEditorParamsType.INK_OPACITY: editorInkOpacity.value = value; break; + case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR: + eventBus.dispatch("mainhighlightcolorpickerupdatecolor", { + source: this, + value, + }); + break; case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS: editorFreeHighlightThickness.value = value; break; diff --git a/web/toolbar.js b/web/toolbar.js index fa0d589acbe28..5d9725e8c8397 100644 --- a/web/toolbar.js +++ b/web/toolbar.js @@ -44,6 +44,8 @@ import { */ class Toolbar { + #colorPicker = null; + #opts; /** @@ -139,12 +141,6 @@ class Toolbar { document.documentElement.setAttribute("data-toolbar-density", name); } - #setAnnotationEditorUIManager(uiManager, parentContainer) { - const colorPicker = new ColorPicker({ uiManager }); - uiManager.setMainHighlightColorPicker(colorPicker); - parentContainer.append(colorPicker.renderMainDropdown()); - } - setPageNumber(pageNumber, pageLabel) { this.pageNumber = pageNumber; this.pageLabel = pageLabel; @@ -164,6 +160,7 @@ class Toolbar { } reset() { + this.#colorPicker = null; this.pageNumber = 0; this.pageLabel = null; this.hasPageLabels = false; @@ -255,17 +252,15 @@ class Toolbar { eventBus._on("toolbardensity", this.#updateToolbarDensity.bind(this)); if (editorHighlightColorPicker) { - eventBus._on( - "annotationeditoruimanager", - ({ uiManager }) => { - this.#setAnnotationEditorUIManager( - uiManager, - editorHighlightColorPicker - ); - }, - // Once the color picker has been added, we don't want to add it again. - { once: true } - ); + eventBus._on("annotationeditoruimanager", ({ uiManager }) => { + const cp = (this.#colorPicker = new ColorPicker({ uiManager })); + uiManager.setMainHighlightColorPicker(cp); + editorHighlightColorPicker.append(cp.renderMainDropdown()); + }); + + eventBus._on("mainhighlightcolorpickerupdatecolor", ({ value }) => { + this.#colorPicker?.updateColor(value); + }); } } From 493b740d1f7c13945fd9ba1ce88648308a63a4db Mon Sep 17 00:00:00 2001 From: avdoseferovic Date: Fri, 17 Jan 2025 13:45:22 +0100 Subject: [PATCH 206/338] fix: don't scroll when drawing [#17327] --- src/display/editor/annotation_editor_layer.js | 4 +- test/integration/ink_editor_spec.mjs | 50 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 7d718f7e53ce8..321f754a70a8d 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -805,7 +805,9 @@ class AnnotationEditorLayer { } startDrawingSession(event) { - this.div.focus(); + this.div.focus({ + preventScroll: true, + }); if (this.#drawingAC) { this.#currentEditorType.startDrawing(this, this.#uiManager, false, event); return; diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index f32fbd2a9b9aa..f679adcac002b 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -1075,4 +1075,54 @@ describe("Ink Editor", () => { ); }); }); + + describe("Page position should remain unchanged after drawing", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that the page position remains the same after drawing", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const pageInitialPosition = await getRect( + page, + ".page[data-page-number='1']" + ); + + await switchToInk(page); + + const editorLayerRect = await getRect(page, ".annotationEditorLayer"); + const drawStartX = editorLayerRect.x + 100; + const drawStartY = editorLayerRect.y + 100; + + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(drawStartX, drawStartY); + await page.mouse.down(); + await page.mouse.move(drawStartX + 50, drawStartY + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + await commit(page); + + const pageFinalPosition = await getRect( + page, + ".page[data-page-number='1']" + ); + + expect(pageInitialPosition.x) + .withContext(`In ${browserName}`) + .toEqual(pageFinalPosition.x); + + expect(pageInitialPosition.y) + .withContext(`In ${browserName}`) + .toEqual(pageFinalPosition.y); + }) + ); + }); + }); }); From 09a3627471658220dfc66d2051419a822d5a75ab Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 21 Jan 2025 23:26:20 +0100 Subject: [PATCH 207/338] [api-major] Change viewer component `render`-methods to take parameter objects This is nicer than a bunch of somewhat arbitrarily ordered parameters, and makes any future changes easier. --- web/annotation_editor_layer_builder.js | 12 ++++++++--- web/annotation_layer_builder.js | 17 +++++++++++----- web/draw_layer_builder.js | 10 +++++++-- web/pdf_page_view.js | 28 +++++++++++++++++--------- web/struct_tree_layer_builder.js | 14 +++++++++++++ web/text_layer_builder.js | 16 ++++++++++++--- web/xfa_layer_builder.js | 11 +++++++--- 7 files changed, 83 insertions(+), 25 deletions(-) diff --git a/web/annotation_editor_layer_builder.js b/web/annotation_editor_layer_builder.js index f6240f2c47720..9709628b61cc8 100644 --- a/web/annotation_editor_layer_builder.js +++ b/web/annotation_editor_layer_builder.js @@ -42,6 +42,12 @@ import { GenericL10n } from "web-null_l10n"; * @property {function} [onAppend] */ +/** + * @typedef {Object} AnnotationEditorLayerBuilderRenderOptions + * @property {PageViewport} viewport + * @property {string} [intent] - The default value is "display". + */ + class AnnotationEditorLayerBuilder { #annotationLayer = null; @@ -77,10 +83,10 @@ class AnnotationEditorLayerBuilder { } /** - * @param {PageViewport} viewport - * @param {string} intent (default value is 'display') + * @param {AnnotationEditorLayerBuilderRenderOptions} options + * @returns {Promise} */ - async render(viewport, intent = "display") { + async render({ viewport, intent = "display" }) { if (intent !== "display") { return; } diff --git a/web/annotation_layer_builder.js b/web/annotation_layer_builder.js index 4961d6a4bd148..b6e31404c20a8 100644 --- a/web/annotation_layer_builder.js +++ b/web/annotation_layer_builder.js @@ -21,6 +21,8 @@ /** @typedef {import("./interfaces").IDownloadManager} IDownloadManager */ /** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */ // eslint-disable-next-line max-len +/** @typedef {import("./struct_tree_layer_builder.js").StructTreeLayerBuilder} StructTreeLayerBuilder */ +// eslint-disable-next-line max-len /** @typedef {import("./text_accessibility.js").TextAccessibilityManager} TextAccessibilityManager */ // eslint-disable-next-line max-len /** @typedef {import("../src/display/editor/tools.js").AnnotationEditorUIManager} AnnotationEditorUIManager */ @@ -47,6 +49,13 @@ import { PresentationModeState } from "./ui_utils.js"; * @property {function} [onAppend] */ +/** + * @typedef {Object} AnnotationLayerBuilderRenderOptions + * @property {PageViewport} viewport + * @property {string} [intent] - The default value is "display". + * @property {StructTreeLayerBuilder} [structTreeLayer] + */ + class AnnotationLayerBuilder { #onAppend = null; @@ -91,13 +100,11 @@ class AnnotationLayerBuilder { } /** - * @param {PageViewport} viewport - * @param {Object} options - * @param {string} intent (default value is 'display') + * @param {AnnotationLayerBuilderRenderOptions} options * @returns {Promise} A promise that is resolved when rendering of the * annotations is complete. */ - async render(viewport, options, intent = "display") { + async render({ viewport, intent = "display", structTreeLayer = null }) { if (this.div) { if (this._cancelled || !this.annotationLayer) { return; @@ -137,7 +144,7 @@ class AnnotationLayerBuilder { annotationEditorUIManager: this._annotationEditorUIManager, page: this.pdfPage, viewport: viewport.clone({ dontFlip: true }), - structTreeLayer: options?.structTreeLayer || null, + structTreeLayer, }); await this.annotationLayer.render({ diff --git a/web/draw_layer_builder.js b/web/draw_layer_builder.js index 6f349b6cf134c..003a84e36897a 100644 --- a/web/draw_layer_builder.js +++ b/web/draw_layer_builder.js @@ -20,6 +20,11 @@ import { DrawLayer } from "pdfjs-lib"; * @property {number} pageIndex */ +/** + * @typedef {Object} DrawLayerBuilderRenderOptions + * @property {string} [intent] - The default value is "display". + */ + class DrawLayerBuilder { #drawLayer = null; @@ -31,9 +36,10 @@ class DrawLayerBuilder { } /** - * @param {string} intent (default value is 'display') + * @param {DrawLayerBuilderRenderOptions} options + * @returns {Promise} */ - async render(intent = "display") { + async render({ intent = "display" }) { if (intent !== "display" || this.#drawLayer || this._cancelled) { return; } diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 963dd644b7d25..fd33e3b762e52 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -396,11 +396,11 @@ class PDFPageView { async #renderAnnotationLayer() { let error = null; try { - await this.annotationLayer.render( - this.viewport, - { structTreeLayer: this.structTreeLayer }, - "display" - ); + await this.annotationLayer.render({ + viewport: this.viewport, + intent: "display", + structTreeLayer: this.structTreeLayer, + }); } catch (ex) { console.error("#renderAnnotationLayer:", ex); error = ex; @@ -412,7 +412,10 @@ class PDFPageView { async #renderAnnotationEditorLayer() { let error = null; try { - await this.annotationEditorLayer.render(this.viewport, "display"); + await this.annotationEditorLayer.render({ + viewport: this.viewport, + intent: "display", + }); } catch (ex) { console.error("#renderAnnotationEditorLayer:", ex); error = ex; @@ -423,7 +426,9 @@ class PDFPageView { async #renderDrawLayer() { try { - await this.drawLayer.render("display"); + await this.drawLayer.render({ + intent: "display", + }); } catch (ex) { console.error("#renderDrawLayer:", ex); } @@ -432,7 +437,10 @@ class PDFPageView { async #renderXfaLayer() { let error = null; try { - const result = await this.xfaLayer.render(this.viewport, "display"); + const result = await this.xfaLayer.render({ + viewport: this.viewport, + intent: "display", + }); if (result?.textDivs && this._textHighlighter) { // Given that the following method fetches the text asynchronously we // can invoke it *before* appending the xfaLayer to the DOM (below), @@ -461,7 +469,9 @@ class PDFPageView { let error = null; try { - await this.textLayer.render(this.viewport); + await this.textLayer.render({ + viewport: this.viewport, + }); } catch (ex) { if (ex instanceof AbortException) { return; diff --git a/web/struct_tree_layer_builder.js b/web/struct_tree_layer_builder.js index 72ba6bc5c111c..0741e598ec803 100644 --- a/web/struct_tree_layer_builder.js +++ b/web/struct_tree_layer_builder.js @@ -13,6 +13,8 @@ * limitations under the License. */ +/** @typedef {import("../src/display/api").PDFPageProxy} PDFPageProxy */ + import { removeNullCharacters } from "./ui_utils.js"; const PDF_ROLE_TO_HTML_ROLE = { @@ -73,6 +75,12 @@ const PDF_ROLE_TO_HTML_ROLE = { const HEADING_PATTERN = /^H(\d+)$/; +/** + * @typedef {Object} StructTreeLayerBuilderOptions + * @property {PDFPageProxy} pdfPage + * @property {Object} rawDims + */ + class StructTreeLayerBuilder { #promise; @@ -86,11 +94,17 @@ class StructTreeLayerBuilder { #elementsToAddToTextLayer = null; + /** + * @param {StructTreeLayerBuilderOptions} options + */ constructor(pdfPage, rawDims) { this.#promise = pdfPage.getStructTree(); this.#rawDims = rawDims; } + /** + * @returns {Promise} + */ async render() { if (this.#treePromise) { return this.#treePromise; diff --git a/web/text_layer_builder.js b/web/text_layer_builder.js index f642382b60643..30816eef0c238 100644 --- a/web/text_layer_builder.js +++ b/web/text_layer_builder.js @@ -29,9 +29,16 @@ import { removeNullCharacters } from "./ui_utils.js"; * @property {TextHighlighter} [highlighter] - Optional object that will handle * highlighting text from the find controller. * @property {TextAccessibilityManager} [accessibilityManager] + * @property {boolean} [enablePermissions] * @property {function} [onAppend] */ +/** + * @typedef {Object} TextLayerBuilderRenderOptions + * @property {PageViewport} viewport + * @property {Object} [textContentParams] + */ + /** * The text layer builder provides text selection functionality for the PDF. * It does this by creating overlay divs over the PDF's text. These divs @@ -50,6 +57,9 @@ class TextLayerBuilder { static #selectionChangeAbortController = null; + /** + * @param {TextLayerBuilderOptions} options + */ constructor({ pdfPage, highlighter = null, @@ -70,10 +80,10 @@ class TextLayerBuilder { /** * Renders the text layer. - * @param {PageViewport} viewport - * @param {Object} [textContentParams] + * @param {TextLayerBuilderRenderOptions} options + * @returns {Promise} */ - async render(viewport, textContentParams = null) { + async render({ viewport, textContentParams = null }) { if (this.#renderingDone && this.#textLayer) { this.#textLayer.update({ viewport, diff --git a/web/xfa_layer_builder.js b/web/xfa_layer_builder.js index 25a521d5f3bb9..95c540b93acec 100644 --- a/web/xfa_layer_builder.js +++ b/web/xfa_layer_builder.js @@ -30,6 +30,12 @@ import { XfaLayer } from "pdfjs-lib"; * @property {Object} [xfaHtml] */ +/** + * @typedef {Object} XfaLayerBuilderRenderOptions + * @property {PageViewport} viewport + * @property {string} [intent] - The default value is "display". + */ + class XfaLayerBuilder { /** * @param {XfaLayerBuilderOptions} options @@ -50,13 +56,12 @@ class XfaLayerBuilder { } /** - * @param {PageViewport} viewport - * @param {string} intent (default value is 'display') + * @param {XfaLayerBuilderRenderOptions} viewport * @returns {Promise} A promise that is resolved when rendering * of the XFA layer is complete. The first rendering will return an object * with a `textDivs` property that can be used with the TextHighlighter. */ - async render(viewport, intent = "display") { + async render({ viewport, intent = "display" }) { if (intent === "print") { const parameters = { viewport: viewport.clone({ dontFlip: true }), From 6484f204a7709ee54fd4220634c7fce2c076128e Mon Sep 17 00:00:00 2001 From: hydraulicus <852gin@gmail.com> Date: Thu, 23 Jan 2025 17:47:29 +0200 Subject: [PATCH 208/338] [Editor] Add validation for the target element of curve endpoints This patch fixes a bug that caused incorrect curve shapes when an endpoint lies beyond the page boundaries. It adds a check for the endpoint's position, and if it is outside the page, the point is excluded from the shape's coordinates. --- src/display/editor/draw.js | 2 +- test/integration/ink_editor_spec.mjs | 57 ++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index a2f5c1de91da4..accdd11d65ce5 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -834,7 +834,7 @@ class DrawingEditor extends AnnotationEditor { parent.toggleDrawing(true); this._cleanup(false); - if (event) { + if (event?.target === parent.div) { parent.drawLayer.updateProperties( this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index f679adcac002b..6fbb91acf7b25 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -1126,3 +1126,60 @@ describe("Ink Editor", () => { }); }); }); + +describe("The pen-drawn shape must maintain correct curvature regardless of the page it is drawn on or whether the curve's endpoint lies within or beyond the page boundaries", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + const getCurveOnPage = async ({ pageNumber = 1, page }) => { + const clickHandle = await waitForPointerUp(page); + const pageSelector = `.page[data-page-number = "${pageNumber}"]`; + await scrollIntoView(page, pageSelector); + await page.waitForSelector(pageSelector); + const rect = await getRect(page, `${pageSelector} .annotationEditorLayer`); + const x = rect.x + 100; + const y = rect.y + 200; + await page.mouse.move(x, y); + await page.mouse.down(); + // Create a reference curve on first page. + await page.mouse.move(x - 100, y); + if (page !== 1) { + // Add a move to create a curve that extends beyond the page boundary. + await page.mouse.move(x - 200, y); + } + await page.mouse.up(); + await awaitPromise(clickHandle); + const d = await page.$eval( + `${pageSelector} .canvasWrapper svg.draw path[d]:not([d=""])`, + el => el.getAttribute("d") + ); + return d; + }; + + it("must retain correct curvature regardless of the page or the curve's endpoint location", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + // Creating a reference curve on the first page with end + // within the page boundaries. + const d1 = await getCurveOnPage({ pageNumber: 1, page }); + + // Creating a curve on the second page with end + // beyond the page boundaries. + const d2 = await getCurveOnPage({ pageNumber: 2, page }); + + // Expect that the endpoint beyond the boundaries is ignored, + // ensuring both curves have the same shape on both pages. + expect(d1).withContext(`In ${browserName}`).toEqual(d2); + }) + ); + }); +}); From 6d3529dba7551eaa5ef42456ccc8c5c9d7214d55 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 15:37:40 +0000 Subject: [PATCH 209/338] Bump undici from 6.19.8 to 6.21.1 Bumps [undici](https://github.com/nodejs/undici) from 6.19.8 to 6.21.1. - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](https://github.com/nodejs/undici/compare/v6.19.8...v6.21.1) --- updated-dependencies: - dependency-name: undici dependency-type: indirect ... Signed-off-by: dependabot[bot] --- package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 780362493122f..d432df8d5ba75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12397,9 +12397,9 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true, "license": "MIT", "engines": { From 45905aee82c2392c452586c7c1c17314817e6dd1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 25 Jan 2025 13:17:25 +0100 Subject: [PATCH 210/338] Remove unused `isInEditingMode` method (PR 19311 follow-up) This method was added in PR 19311, however it's not actually used anywhere in the code-base. --- src/display/editor/tools.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index c0349c6888eaa..d6bd33c11361e 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -1716,10 +1716,6 @@ class AnnotationEditorUIManager { this.#updateModeCapability.resolve(); } - isInEditingMode() { - return this.#mode !== AnnotationEditorType.NONE; - } - addNewEditorFromKeyboard() { if (this.currentLayer.canCreateNewEmptyEditor()) { this.currentLayer.addNewEditor(); From dc1a3d228bd65761906372eff7f084e9313459ad Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 20 Jan 2025 22:10:36 +0100 Subject: [PATCH 211/338] Enable the "checks that the viewer re-exports the expected API functionality" unit-test in Node.js By also running `gulp generic-legacy` before the Node.js unit-tests, we can enable one more test-case in Node.js environments. --- gulpfile.mjs | 33 +++++++++++++++++++-------------- test/unit/pdf_spec.js | 20 +++++++++++++------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index 0e0a5a1ac5ee6..e119a570f8de7 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1952,20 +1952,25 @@ function createBaseline(done) { gulp.task( "unittestcli", - gulp.series(setTestEnv, "lib-legacy", function runUnitTestCli(done) { - const options = [ - "node_modules/jasmine/bin/jasmine", - "JASMINE_CONFIG_PATH=test/unit/clitests.json", - ]; - const jasmineProcess = startNode(options, { stdio: "inherit" }); - jasmineProcess.on("close", function (code) { - if (code !== 0) { - done(new Error("Unit tests failed.")); - return; - } - done(); - }); - }) + gulp.series( + setTestEnv, + "generic-legacy", + "lib-legacy", + function runUnitTestCli(done) { + const options = [ + "node_modules/jasmine/bin/jasmine", + "JASMINE_CONFIG_PATH=test/unit/clitests.json", + ]; + const jasmineProcess = startNode(options, { stdio: "inherit" }); + jasmineProcess.on("close", function (code) { + if (code !== 0) { + done(new Error("Unit tests failed.")); + return; + } + done(); + }); + } + ) ); gulp.task("lint", function (done) { diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index a513b8a4f1fe0..e5f0caceb5e59 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -22,7 +22,6 @@ import { FeatureTest, ImageKind, InvalidPDFException, - isNodeJS, normalizeUnicode, OPS, PasswordResponses, @@ -129,13 +128,20 @@ describe("pdfjs_api", function () { describe("web_pdfjsLib", function () { it("checks that the viewer re-exports the expected API functionality", async function () { - if (isNodeJS) { - pending("loadScript is not supported in Node.js."); - } - const apiPath = "../../build/generic/build/pdf.mjs"; - await import(apiPath); + // Load the API globally, as the viewer does. + // eslint-disable-next-line no-unsanitized/method + await import( + typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB") + ? "../../../generic-legacy/build/pdf.mjs" + : "../../build/generic/build/pdf.mjs" + ); - const webPdfjsLib = await import("../../web/pdfjs.js"); + // eslint-disable-next-line no-unsanitized/method + const webPdfjsLib = await import( + typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB") + ? "../../../../web/pdfjs.js" + : "../../web/pdfjs.js" + ); expect(Object.keys(webPdfjsLib).sort()).toEqual( Object.keys(expectedAPI).sort() From c36b057b1e7557a806a00f78df0ba3491b77c1ed Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 22 Jan 2025 11:02:16 +0100 Subject: [PATCH 212/338] [api-minor] Simplify clean-up of page resources after rendering After PR 2317, which landed in 2012, we'd immediately clean-up after rendering for pages with large image resources. This had the effect that re-rendering, e.g. after zooming, would force us to re-parse the entire page which could easily lead to bad performance. In PR 16108, which landed in 2023, we tried to lessen the impact of that by slightly delaying clean-up however that's obviously not a perfect solution (and it increased the complexity of the relevant code). Furthermore, the condition for this "immediate" clean-up seems a bit arbitrary to me since a page could easily contain a large number of smaller images whose total size vastly exceeds the threshold. Hence this patch, which suggests that we remove the conditional and delayed clean-up after rendering. Compared to the situation back in 2012, a number of things have improved since: - We have *multiple* caches for repeated image-resources on the worker-thread[1], which helps reduce overall memory usage and improves performance. - We downsize huge images on the worker-thread, which means that the images we're using on the main-thread cannot be arbitrarily large. - The amount of available RAM on devices should be a lot higher, since more than a decade has passed. A future improvement here, for more resource constrained environments, could be to instead clean-up when actually needed using e.g. `WeakRef`s (see issue 18148). --- [1] More specifically: - `LocalImageCache`, which caches image-data by /Name and /Ref on the `PartialEvaluator.prototype.getOperatorList` level. - `RegionalImageCache`, which caches image-data by /Ref on the `PartialEvaluator`-instance (i.e. at the page) level. - `GlobalImageCache`, which caches image-data by /Ref globally at the document level. --- src/core/image_utils.js | 9 ++------ src/display/api.js | 49 ++++++----------------------------------- src/shared/util.js | 3 --- 3 files changed, 9 insertions(+), 52 deletions(-) diff --git a/src/core/image_utils.js b/src/core/image_utils.js index 9638d37efa3ee..05e2b7b563293 100644 --- a/src/core/image_utils.js +++ b/src/core/image_utils.js @@ -13,12 +13,7 @@ * limitations under the License. */ -import { - assert, - MAX_IMAGE_SIZE_TO_CACHE, - unreachable, - warn, -} from "../shared/util.js"; +import { assert, unreachable, warn } from "../shared/util.js"; import { RefSet, RefSetCache } from "./primitives.js"; class BaseLocalCache { @@ -179,7 +174,7 @@ class GlobalImageCache { static MIN_IMAGES_TO_CACHE = 10; - static MAX_BYTE_SIZE = 5 * MAX_IMAGE_SIZE_TO_CACHE; + static MAX_BYTE_SIZE = 5e7; // Fifty megabytes. #decodeFailedSet = new RefSet(); diff --git a/src/display/api.js b/src/display/api.js index 8bc228dd51231..0c3a3e2eb349c 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -25,7 +25,6 @@ import { getVerbosityLevel, info, isNodeJS, - MAX_IMAGE_SIZE_TO_CACHE, RenderingIntentFlag, setVerbosityLevel, shadow, @@ -72,7 +71,6 @@ import { XfaText } from "./xfa_text.js"; const DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536 const RENDERING_CANCELLED_TIMEOUT = 100; // ms -const DELAYED_CLEANUP_TIMEOUT = 5000; // ms /** * @typedef { Int8Array | Uint8Array | Uint8ClampedArray | @@ -1339,8 +1337,6 @@ class PDFDocumentProxy { * Proxy to a `PDFPage` in the worker thread. */ class PDFPageProxy { - #delayedCleanupTimeout = null; - #pendingCleanup = false; constructor(pageIndex, pageInfo, transport, pdfBug = false) { @@ -1353,7 +1349,6 @@ class PDFPageProxy { this.commonObjs = transport.commonObjs; this.objs = new PDFObjects(); - this._maybeCleanupAfterRender = false; this._intentStates = new Map(); this.destroyed = false; } @@ -1490,10 +1485,8 @@ class PDFPageProxy { ); const { renderingIntent, cacheKey } = intentArgs; // If there was a pending destroy, cancel it so no cleanup happens during - // this call to render... + // this call to render. this.#pendingCleanup = false; - // ... and ensure that a delayed cleanup is always aborted. - this.#abortDelayedCleanup(); optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent); @@ -1532,10 +1525,10 @@ class PDFPageProxy { // Attempt to reduce memory usage during *printing*, by always running // cleanup immediately once rendering has finished. - if (this._maybeCleanupAfterRender || intentPrint) { + if (intentPrint) { this.#pendingCleanup = true; } - this.#tryCleanup(/* delayed = */ !intentPrint); + this.#tryCleanup(); if (error) { internalRenderTask.capability.reject(error); @@ -1769,7 +1762,6 @@ class PDFPageProxy { } this.objs.clear(); this.#pendingCleanup = false; - this.#abortDelayedCleanup(); return Promise.all(waitOn); } @@ -1783,7 +1775,7 @@ class PDFPageProxy { */ cleanup(resetStats = false) { this.#pendingCleanup = true; - const success = this.#tryCleanup(/* delayed = */ false); + const success = this.#tryCleanup(); if (resetStats && success) { this._stats &&= new StatTimer(); @@ -1793,25 +1785,12 @@ class PDFPageProxy { /** * Attempts to clean up if rendering is in a state where that's possible. - * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming - * performance in documents with large images. - * The default value is `false`. * @returns {boolean} Indicates if clean-up was successfully run. */ - #tryCleanup(delayed = false) { - this.#abortDelayedCleanup(); - + #tryCleanup() { if (!this.#pendingCleanup || this.destroyed) { return false; } - if (delayed) { - this.#delayedCleanupTimeout = setTimeout(() => { - this.#delayedCleanupTimeout = null; - this.#tryCleanup(/* delayed = */ false); - }, DELAYED_CLEANUP_TIMEOUT); - - return false; - } for (const { renderTasks, operatorList } of this._intentStates.values()) { if (renderTasks.size > 0 || !operatorList.lastChunk) { return false; @@ -1823,13 +1802,6 @@ class PDFPageProxy { return true; } - #abortDelayedCleanup() { - if (this.#delayedCleanupTimeout) { - clearTimeout(this.#delayedCleanupTimeout); - this.#delayedCleanupTimeout = null; - } - } - /** * @private */ @@ -1863,7 +1835,7 @@ class PDFPageProxy { } if (operatorListChunk.lastChunk) { - this.#tryCleanup(/* delayed = */ true); + this.#tryCleanup(); } } @@ -1926,7 +1898,7 @@ class PDFPageProxy { for (const internalRenderTask of intentState.renderTasks) { internalRenderTask.operatorListChanged(); } - this.#tryCleanup(/* delayed = */ true); + this.#tryCleanup(); } if (intentState.displayReadyCapability) { @@ -2884,13 +2856,6 @@ class WorkerTransport { switch (type) { case "Image": - pageProxy.objs.resolve(id, imageData); - - // Heuristic that will allow us not to store large data. - if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) { - pageProxy._maybeCleanupAfterRender = true; - } - break; case "Pattern": pageProxy.objs.resolve(id, imageData); break; diff --git a/src/shared/util.js b/src/shared/util.js index b4f8824b365b6..13c3b089aec67 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -28,8 +28,6 @@ const isNodeJS = const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; -const MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes. - // Represent the percentage of the height of a single-line field over // the font size. Acrobat seems to use this value. const LINE_FACTOR = 1.35; @@ -1155,7 +1153,6 @@ export { isNodeJS, LINE_DESCENT_FACTOR, LINE_FACTOR, - MAX_IMAGE_SIZE_TO_CACHE, normalizeUnicode, objectFromMap, objectSize, From b8fcabc78a891238311abfd3f8f445bab34d7801 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 27 Jan 2025 12:54:22 +0100 Subject: [PATCH 213/338] Handle *empty* BigInt64Array/BigUint64Array in the `isNumberArray` helper The current checks would accidentally allow *empty* BigInt64Array/BigUint64Array, which we can fix by instead checking directly for those types. This should be fine since those types are available in all environments that we support, see: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt64Array#browser_compatibility - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigUint64Array#browser_compatibility --- src/core/core_utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/core_utils.js b/src/core/core_utils.js index c92a0374dd876..fe2eaef05a597 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -280,7 +280,7 @@ function isNumberArray(arr, len) { // BigInt64Array/BigUint64Array types (their elements aren't "number"). return ( ArrayBuffer.isView(arr) && - (arr.length === 0 || typeof arr[0] === "number") && + !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) && (len === null || arr.length === len) ); } From efc115f7f039fc0881d6fd215a12447c8c4547dc Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 28 Jan 2025 17:13:42 +0100 Subject: [PATCH 214/338] Introduce a `readInt16` helper function in the `src/core/core_utils.js` file Rather than manually repeating code needed to get an int16, we can move and re-use an existing helper function instead. --- src/core/cff_parser.js | 7 ++++--- src/core/core_utils.js | 5 +++++ src/core/font_renderer.js | 19 ++++++++----------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/core/cff_parser.js b/src/core/cff_parser.js index 446764f0d6515..cdb66224098fd 100644 --- a/src/core/cff_parser.js +++ b/src/core/cff_parser.js @@ -28,6 +28,7 @@ import { ISOAdobeCharset, } from "./charsets.js"; import { ExpertEncoding, StandardEncoding } from "./encodings.js"; +import { readInt16 } from "./core_utils.js"; // Maximum subroutine call depth of type 2 charstrings. Matches OTS. const MAX_SUBR_NESTING = 10; @@ -359,8 +360,8 @@ class CFFParser { if (value === 30) { return parseFloatOperand(); } else if (value === 28) { - value = dict[pos++]; - value = ((value << 24) | (dict[pos++] << 16)) >> 16; + value = readInt16(dict, pos); + pos += 2; return value; } else if (value === 29) { value = dict[pos++]; @@ -510,7 +511,7 @@ class CFFParser { } } else if (value === 28) { // number (16 bit) - stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16; + stack[stackSize] = readInt16(data, j); j += 2; stackSize++; } else if (value === 14) { diff --git a/src/core/core_utils.js b/src/core/core_utils.js index fe2eaef05a597..f099f219effd7 100644 --- a/src/core/core_utils.js +++ b/src/core/core_utils.js @@ -227,6 +227,10 @@ function readInt8(data, offset) { return (data[offset] << 24) >> 24; } +function readInt16(data, offset) { + return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16; +} + function readUint16(data, offset) { return (data[offset] << 8) | data[offset + 1]; } @@ -733,6 +737,7 @@ export { ParserEOFException, parseXFAPath, PDF_VERSION_REGEXP, + readInt16, readInt8, readUint16, readUint32, diff --git a/src/core/font_renderer.js b/src/core/font_renderer.js index 3634d1cdbd5af..0cd2798d4dc97 100644 --- a/src/core/font_renderer.js +++ b/src/core/font_renderer.js @@ -24,6 +24,7 @@ import { } from "../shared/util.js"; import { isNumberArray, + readInt16, readInt8, readUint16, readUint32, @@ -35,12 +36,8 @@ import { Stream } from "./stream.js"; // TODO: use DataView and its methods. -function getInt16(data, offset) { - return ((data[offset] << 24) | (data[offset + 1] << 16)) >> 16; -} - function getFloat214(data, offset) { - return getInt16(data, offset) / 16384; + return readInt16(data, offset) / 16384; } function getSubroutineBias(subrs) { @@ -185,7 +182,7 @@ function compileGlyf(code, cmds, font) { } let i = 0; - const numberOfContours = getInt16(code, i); + const numberOfContours = readInt16(code, i); let flags; let firstPoint = null; let x = 0, @@ -200,8 +197,8 @@ function compileGlyf(code, cmds, font) { let arg1, arg2; if (flags & 0x01) { if (flags & 0x02) { - arg1 = getInt16(code, i); - arg2 = getInt16(code, i + 2); + arg1 = readInt16(code, i); + arg2 = readInt16(code, i + 2); } else { arg1 = readUint16(code, i); arg2 = readUint16(code, i + 2); @@ -279,7 +276,7 @@ function compileGlyf(code, cmds, font) { for (j = 0; j < numberOfPoints; j++) { switch (points[j].flags & 0x12) { case 0x00: - x += getInt16(code, i); + x += readInt16(code, i); i += 2; break; case 0x02: @@ -294,7 +291,7 @@ function compileGlyf(code, cmds, font) { for (j = 0; j < numberOfPoints; j++) { switch (points[j].flags & 0x24) { case 0x00: - y += getInt16(code, i); + y += readInt16(code, i); i += 2; break; case 0x04: @@ -653,7 +650,7 @@ function compileCharString(charStringCode, cmds, font, glyphId) { } break; case 28: - stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16); + stack.push(readInt16(code, i)); i += 2; break; case 29: // callgsubr From f9bdb4df0ed1c2a03cd27d129ca95b2e1ff387b7 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 29 Jan 2025 12:35:09 +0100 Subject: [PATCH 215/338] Support the password field-flag in TextWidgetAnnotation (issue 19389) --- src/core/annotation.js | 6 +++--- src/display/annotation_layer.js | 2 +- test/pdfs/.gitignore | 1 + test/pdfs/issue19389.pdf | Bin 0 -> 6931 bytes test/test_manifest.json | 8 ++++++++ 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 test/pdfs/issue19389.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index c87f99f4b3d4f..75d8b5c1af916 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -1888,6 +1888,7 @@ class WidgetAnnotation extends Annotation { data.fieldFlags = 0; } + data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD); data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY); data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED); data.hidden = @@ -2261,8 +2262,7 @@ class WidgetAnnotation extends Annotation { } async _getAppearance(evaluator, task, intent, annotationStorage) { - const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD); - if (isPassword) { + if (this.data.password) { return null; } const storageEntry = annotationStorage?.get(this.data.id); @@ -2962,7 +2962,7 @@ class TextWidgetAnnotation extends WidgetAnnotation { value: this.data.fieldValue, defaultValue: this.data.defaultFieldValue || "", multiline: this.data.multiLine, - password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD), + password: this.data.password, charLimit: this.data.maxLen, comb: this.data.comb, editable: !this.data.readOnly, diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 3866296722aa3..1b55f3d51f94c 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -1286,7 +1286,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement { } } else { element = document.createElement("input"); - element.type = "text"; + element.type = this.data.password ? "password" : "text"; element.setAttribute("value", fieldFormattedValues ?? textContent); if (this.data.doNotScroll) { element.style.overflowX = "hidden"; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index f9e0cd705c705..3001e51b4b03b 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -609,6 +609,7 @@ !issue16021.pdf !bug1770750.pdf !issue16063.pdf +!issue19389.pdf !issue16067.pdf !bug1820909.1.pdf !issue16221.pdf diff --git a/test/pdfs/issue19389.pdf b/test/pdfs/issue19389.pdf new file mode 100644 index 0000000000000000000000000000000000000000..44a95188e84e8b4ad53edc305f6d14a60f71293d GIT binary patch literal 6931 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 Date: Fri, 17 Jan 2025 18:04:34 +0100 Subject: [PATCH 216/338] [Editor] (WIP) Add a new tool in order to add an handwritten signature to a pdf (bug 1942343) This patch is adding some code in order to extract a drawing as curves from an image. The algorithm is basically the following: - reduce the dimensions - make it gray - apply a bilateral filter in order to add some blurryness while keeping the edges - compute the histogram - guess what's the background color which should contain a large majority of the pixels - make a binary image - extract the contours in using the Suzuki algorithm - apply the Douglas-Peucker algorithm in order to reduce the number of points The algorithm is improvable but it should work pretty well if there's a clear difference between the background and the drawing. In a v2 we could use a ML model in order to improve the extraction. There's few changes related to the UI in order to make the tool usable, but they're very basic for the moment. --- extensions/chromium/preferences_schema.json | 4 + src/display/editor/annotation_editor_layer.js | 18 +- src/display/editor/draw.js | 4 + src/display/editor/drawers/contour.js | 28 + src/display/editor/drawers/signaturedraw.js | 553 ++++++++++++++++++ src/display/editor/signature.js | 159 +++++ src/display/editor/toolbar.js | 1 + src/shared/util.js | 1 + web/annotation_editor_layer_builder.css | 13 +- web/annotation_editor_params.js | 5 + web/app.js | 4 + web/app_options.js | 5 + web/editor_undo_bar.js | 1 + web/images/toolbarButton-editorSignature.svg | 6 + web/toolbar.js | 20 + web/viewer.css | 7 +- web/viewer.html | 12 + web/viewer.js | 7 + 18 files changed, 839 insertions(+), 9 deletions(-) create mode 100644 src/display/editor/drawers/contour.js create mode 100644 src/display/editor/drawers/signaturedraw.js create mode 100644 src/display/editor/signature.js create mode 100644 web/images/toolbarButton-editorSignature.svg diff --git a/extensions/chromium/preferences_schema.json b/extensions/chromium/preferences_schema.json index 886cc87b44029..e3cc9e941780c 100644 --- a/extensions/chromium/preferences_schema.json +++ b/extensions/chromium/preferences_schema.json @@ -71,6 +71,10 @@ "type": "string", "default": "" }, + "enableSignatureEditor": { + "type": "boolean", + "default": false + }, "enableUpdatedAddImage": { "type": "boolean", "default": false diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 321f754a70a8d..ee0377935a655 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -31,6 +31,7 @@ import { FreeTextEditor } from "./freetext.js"; import { HighlightEditor } from "./highlight.js"; import { InkEditor } from "./ink.js"; import { setLayerDimensions } from "../display_utils.js"; +import { SignatureEditor } from "./signature.js"; import { StampEditor } from "./stamp.js"; /** @@ -89,10 +90,13 @@ class AnnotationEditorLayer { static _initialized = false; static #editorTypes = new Map( - [FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [ - type._editorType, - type, - ]) + [ + FreeTextEditor, + InkEditor, + StampEditor, + HighlightEditor, + SignatureEditor, + ].map(type => [type._editorType, type]) ); /** @@ -758,7 +762,11 @@ class AnnotationEditorLayer { return; } - if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) { + const currentMode = this.#uiManager.getMode(); + if ( + currentMode === AnnotationEditorType.STAMP || + currentMode === AnnotationEditorType.SIGNATURE + ) { this.#uiManager.unselectAll(); return; } diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index accdd11d65ce5..52d0a3a47cbed 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -91,6 +91,10 @@ class DrawingEditor extends AnnotationEditor { super(params); this.#mustBeCommitted = params.mustBeCommitted || false; + this._addOutlines(params); + } + + _addOutlines(params) { if (params.drawOutlines) { this.#createDrawOutlines(params); this.#addToDrawLayer(); diff --git a/src/display/editor/drawers/contour.js b/src/display/editor/drawers/contour.js new file mode 100644 index 0000000000000..528e25d71500c --- /dev/null +++ b/src/display/editor/drawers/contour.js @@ -0,0 +1,28 @@ +/* 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. + */ + +import { InkDrawOutline } from "./inkdraw.js"; + +class ContourDrawOutline extends InkDrawOutline { + toSVGPath() { + let path = super.toSVGPath(); + if (!path.endsWith("Z")) { + path += "Z"; + } + return path; + } +} + +export { ContourDrawOutline }; diff --git a/src/display/editor/drawers/signaturedraw.js b/src/display/editor/drawers/signaturedraw.js new file mode 100644 index 0000000000000..2b0490f03a707 --- /dev/null +++ b/src/display/editor/drawers/signaturedraw.js @@ -0,0 +1,553 @@ +/* Copyright 2022 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. + */ + +import { ContourDrawOutline } from "./contour.js"; +import { Outline } from "./outline.js"; + +/** + * Basic text editor in order to create a Signature annotation. + */ +class SignatureExtractor { + static #PARAMETERS = { + maxDim: 512, + sigmaSFactor: 0.02, + sigmaR: 25, + kernelSize: 16, + }; + + static #neighborIndexToId(i0, j0, i, j) { + /* + The idea is to map the neighbors of a pixel into a unique id. + 3 2 1 + 4 X 0 + 5 6 7 + */ + + i -= i0; + j -= j0; + + if (i === 0) { + return j > 0 ? 0 : 4; + } + + if (i === 1) { + return j + 6; + } + + return 2 - j; + } + + static #neighborIdToIndex = new Int32Array([ + 0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1, + ]); + + static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) { + const id = this.#neighborIndexToId(i0, j0, i, j); + for (let k = 0; k < 8; k++) { + const kk = (-k + id - offset + 16) % 8; + const shiftI = this.#neighborIdToIndex[2 * kk]; + const shiftJ = this.#neighborIdToIndex[2 * kk + 1]; + if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) { + return kk; + } + } + return -1; + } + + static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) { + const id = this.#neighborIndexToId(i0, j0, i, j); + for (let k = 0; k < 8; k++) { + const kk = (k + id + offset + 16) % 8; + const shiftI = this.#neighborIdToIndex[2 * kk]; + const shiftJ = this.#neighborIdToIndex[2 * kk + 1]; + if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) { + return kk; + } + } + return -1; + } + + static #findContours(buf, width, height, threshold) { + // Based on the Suzuki's algorithm: + // https://web.archive.org/web/20231213161741/https://www.nevis.columbia.edu/~vgenty/public/suzuki_et_al.pdf + + const N = buf.length; + const types = new Int32Array(N); + for (let i = 0; i < N; i++) { + types[i] = buf[i] <= threshold ? 1 : 0; + } + + for (let i = 1; i < height - 1; i++) { + types[i * width] = types[i * width + width - 1] = 0; + } + for (let i = 0; i < width; i++) { + types[i] = types[width * height - 1 - i] = 0; + } + + let nbd = 1; + let lnbd; + const contours = []; + + for (let i = 1; i < height - 1; i++) { + lnbd = 1; + for (let j = 1; j < width - 1; j++) { + const ij = i * width + j; + const pix = types[ij]; + if (pix === 0) { + continue; + } + + let i2 = i; + let j2 = j; + + if (pix === 1 && types[ij - 1] === 0) { + // Outer border. + nbd += 1; + j2 -= 1; + } else if (pix >= 1 && types[ij + 1] === 0) { + // Hole border. + nbd += 1; + j2 += 1; + if (pix > 1) { + lnbd = pix; + } + } else { + if (pix !== 1) { + lnbd = Math.abs(pix); + } + continue; + } + + const points = [j, i]; + const isHole = j2 === j + 1; + const contour = { + isHole, + points, + id: nbd, + parent: 0, + }; + contours.push(contour); + + let contour0; + for (const c of contours) { + if (c.id === lnbd) { + contour0 = c; + break; + } + } + + if (!contour0) { + contour.parent = isHole ? lnbd : 0; + } else if (contour0.isHole) { + contour.parent = isHole ? contour0.parent : lnbd; + } else { + contour.parent = isHole ? lnbd : contour0.parent; + } + + const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0); + if (k === -1) { + types[ij] = -nbd; + if (types[ij] !== 1) { + lnbd = Math.abs(types[ij]); + } + continue; + } + + let shiftI = this.#neighborIdToIndex[2 * k]; + let shiftJ = this.#neighborIdToIndex[2 * k + 1]; + const i1 = i + shiftI; + const j1 = j + shiftJ; + i2 = i1; + j2 = j1; + let i3 = i; + let j3 = j; + + while (true) { + const kk = this.#counterClockwiseNonZero( + types, + width, + i3, + j3, + i2, + j2, + 1 + ); + shiftI = this.#neighborIdToIndex[2 * kk]; + shiftJ = this.#neighborIdToIndex[2 * kk + 1]; + const i4 = i3 + shiftI; + const j4 = j3 + shiftJ; + points.push(j4, i4); + const ij3 = i3 * width + j3; + if (types[ij3 + 1] === 0) { + types[ij3] = -nbd; + } else if (types[ij3] === 1) { + types[ij3] = nbd; + } + + if (i4 === i && j4 === j && i3 === i1 && j3 === j1) { + if (types[ij] !== 1) { + lnbd = Math.abs(types[ij]); + } + break; + } else { + i2 = i3; + j2 = j3; + i3 = i4; + j3 = j4; + } + } + } + } + return contours; + } + + static #douglasPeuckerHelper(points, start, end, output) { + // Based on the Douglas-Peucker algorithm: + // https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm + if (end - start <= 4) { + for (let i = start; i < end - 2; i += 2) { + output.push(points[i], points[i + 1]); + } + return; + } + + const ax = points[start]; + const ay = points[start + 1]; + const abx = points[end - 4] - ax; + const aby = points[end - 3] - ay; + const dist = Math.hypot(abx, aby); + const nabx = abx / dist; + const naby = aby / dist; + const aa = nabx * ay - naby * ax; + + // Guessing the epsilon value. + // See "A novel framework for making dominant point detection methods + // non-parametric". + const m = aby / abx; + const invS = 1 / dist; + const phi = Math.atan(m); + const cosPhi = Math.cos(phi); + const sinPhi = Math.sin(phi); + const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi)); + const poly = invS * (1 - tmax + tmax ** 2); + const partialPhi = Math.max( + Math.atan(Math.abs(sinPhi + cosPhi) * poly), + Math.atan(Math.abs(sinPhi - cosPhi) * poly) + ); + + let dmax = 0; + let index = start; + for (let i = start + 2; i < end - 2; i += 2) { + const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]); + if (d > dmax) { + index = i; + dmax = d; + } + } + + if (dmax > (dist * partialPhi) ** 2) { + this.#douglasPeuckerHelper(points, start, index + 2, output); + this.#douglasPeuckerHelper(points, index, end, output); + } else { + output.push(ax, ay); + } + } + + static #douglasPeucker(points) { + const output = []; + const len = points.length; + this.#douglasPeuckerHelper(points, 0, len, output); + output.push(points[len - 2], points[len - 1]); + return output.length <= 4 ? null : output; + } + + static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) { + // The bilateral filter is a nonlinear filter that does spatial averaging. + // Its main interest is to preserve edges while removing noise. + // See https://en.wikipedia.org/wiki/Bilateral_filter for more details. + // sigmaS is the standard deviation of the spatial gaussian. + // sigmaR is the standard deviation of the range (in term of pixel + // intensity) gaussian. + + // Create a gaussian kernel + const kernel = new Float32Array(kernelSize ** 2); + const sigmaS2 = -2 * sigmaS ** 2; + const halfSize = kernelSize >> 1; + + for (let i = 0; i < kernelSize; i++) { + const x = (i - halfSize) ** 2; + for (let j = 0; j < kernelSize; j++) { + kernel[i * kernelSize + j] = Math.exp( + (x + (j - halfSize) ** 2) / sigmaS2 + ); + } + } + + // Create the range values to be used with the distance between pixels. + // It's a way faster with a lookup table than computing the exponential. + const rangeValues = new Float32Array(256); + const sigmaR2 = -2 * sigmaR ** 2; + for (let i = 0; i < 256; i++) { + rangeValues[i] = Math.exp(i ** 2 / sigmaR2); + } + + const N = buf.length; + const out = new Uint8Array(N); + + // We compute the histogram here instead of doing it later: it's slightly + // faster. + const histogram = new Uint32Array(256); + for (let i = 0; i < height; i++) { + for (let j = 0; j < width; j++) { + const ij = i * width + j; + const center = buf[ij]; + let sum = 0; + let norm = 0; + + for (let k = 0; k < kernelSize; k++) { + const y = i + k - halfSize; + if (y < 0 || y >= height) { + continue; + } + for (let l = 0; l < kernelSize; l++) { + const x = j + l - halfSize; + if (x < 0 || x >= width) { + continue; + } + const neighbour = buf[y * width + x]; + const w = + kernel[k * kernelSize + l] * + rangeValues[Math.abs(neighbour - center)]; + sum += neighbour * w; + norm += w; + } + } + + const pix = (out[ij] = Math.round(sum / norm)); + histogram[pix]++; + } + } + + return [out, histogram]; + } + + static #toUint8(buf) { + // We have a RGBA buffer, containing a grayscale image. + // We want to convert it into a basic G buffer. + // Also, we want to normalize the values between 0 and 255 in order to + // increase the contrast. + const N = buf.length; + const out = new Uint8ClampedArray(N >> 2); + let max = -Infinity; + let min = Infinity; + for (let i = 0, ii = out.length; i < ii; i++) { + const A = buf[(i << 2) + 3]; + if (A === 0) { + max = out[i] = 0xff; + continue; + } + const pix = (out[i] = buf[i << 2]); + if (pix > max) { + max = pix; + } + if (pix < min) { + min = pix; + } + } + const ratio = 255 / (max - min); + for (let i = 0; i < N; i++) { + out[i] = (out[i] - min) * ratio; + } + + return out; + } + + static #guessThreshold(histogram) { + // We want to find the threshold that will separate the background from the + // foreground. + // We could have used Otsu's method, but unfortunately it doesn't work well + // when the background has too much shade of greys. + // So the idea is to find a maximum in the black part of the histogram and + // figure out the value which will be the first one of the white part. + + let i; + let M = -Infinity; + let L = -Infinity; + const min = histogram.findIndex(v => v !== 0); + let pos = min; + let spos = min; + for (i = min; i < 256; i++) { + const v = histogram[i]; + if (v > M) { + if (i - pos > L) { + L = i - pos; + spos = i - 1; + } + M = v; + pos = i; + } + } + for (i = spos - 1; i >= 0; i--) { + if (histogram[i] > histogram[i + 1]) { + break; + } + } + + return i; + } + + static #getGrayPixels(bitmap) { + const originalBitmap = bitmap; + const { width, height } = bitmap; + const { maxDim } = this.#PARAMETERS; + let newWidth = width; + let newHeight = height; + + if (width > maxDim || height > maxDim) { + let prevWidth = width; + let prevHeight = height; + + let steps = Math.log2(Math.max(width, height) / maxDim); + const isteps = Math.floor(steps); + steps = steps === isteps ? isteps - 1 : isteps; + for (let i = 0; i < steps; i++) { + newWidth = prevWidth; + newHeight = prevHeight; + if (newWidth > maxDim) { + newWidth = Math.ceil(newWidth / 2); + } + if (newHeight > maxDim) { + newHeight = Math.ceil(newHeight / 2); + } + + const offscreen = new OffscreenCanvas(newWidth, newHeight); + const ctx = offscreen.getContext("2d"); + ctx.drawImage( + bitmap, + 0, + 0, + prevWidth, + prevHeight, + 0, + 0, + newWidth, + newHeight + ); + prevWidth = newWidth; + prevHeight = newHeight; + + // Release the resources associated with the bitmap. + if (bitmap !== originalBitmap) { + bitmap.close(); + } + bitmap = offscreen.transferToImageBitmap(); + } + + const ratio = Math.min(maxDim / newWidth, maxDim / newHeight); + newWidth = Math.round(newWidth * ratio); + newHeight = Math.round(newHeight * ratio); + } + const offscreen = new OffscreenCanvas(newWidth, newHeight); + const ctx = offscreen.getContext("2d", { willReadFrequently: true }); + ctx.filter = "grayscale(1)"; + ctx.drawImage( + bitmap, + 0, + 0, + bitmap.width, + bitmap.height, + 0, + 0, + newWidth, + newHeight + ); + const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data; + const uint8Buf = this.#toUint8(grayImage); + + return [uint8Buf, newWidth, newHeight]; + } + + static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) { + const [uint8Buf, width, height] = this.#getGrayPixels(bitmap); + const [uint8Filtered, histogram] = this.#bilateralFilter( + uint8Buf, + width, + height, + Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, + this.#PARAMETERS.sigmaR, + this.#PARAMETERS.kernelSize + ); + + const threshold = this.#guessThreshold(histogram); + const contourList = this.#findContours( + uint8Filtered, + width, + height, + threshold + ); + const linesAndPoints = []; + + if (rotation % 180 !== 0) { + [pageWidth, pageHeight] = [pageHeight, pageWidth]; + } + + // The points need to be converted into page coordinates. + const ratio = 0.5 * Math.min(pageWidth / width, pageHeight / height); + const xScale = ratio / pageWidth; + const yScale = ratio / pageHeight; + + for (const { points } of contourList) { + const reducedPoints = this.#douglasPeucker(points); + if (!reducedPoints) { + continue; + } + + const len = reducedPoints.length; + const newPoints = new Float32Array(len); + const line = new Float32Array(3 * (len - 2)); + + let [x1, y1, x2, y2] = reducedPoints; + x1 *= xScale; + y1 *= yScale; + x2 *= xScale; + y2 *= yScale; + newPoints.set([x1, y1, x2, y2], 0); + + line.set([NaN, NaN, NaN, NaN, x1, y1], 0); + for (let i = 4; i < len; i += 2) { + const x = (newPoints[i] = reducedPoints[i] * xScale); + const y = (newPoints[i + 1] = reducedPoints[i + 1] * yScale); + line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3); + [x1, y1, x2, y2] = [x2, y2, x, y]; + } + + linesAndPoints.push({ line, points: newPoints }); + } + const outline = new ContourDrawOutline(); + outline.build( + linesAndPoints, + pageWidth, + pageHeight, + 1, + rotation, + 0, + innerMargin + ); + + return outline; + } +} + +export { SignatureExtractor }; diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js new file mode 100644 index 0000000000000..ad7c5e10202f6 --- /dev/null +++ b/src/display/editor/signature.js @@ -0,0 +1,159 @@ +/* Copyright 2025 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. + */ + +import { AnnotationEditorType, shadow } from "../../shared/util.js"; +import { DrawingEditor, DrawingOptions } from "./draw.js"; +import { AnnotationEditor } from "./editor.js"; +import { SignatureExtractor } from "./drawers/signaturedraw.js"; +import { StampEditor } from "./stamp.js"; + +class SignatureOptions extends DrawingOptions { + #viewParameters; + + constructor(viewerParameters) { + super(); + this.#viewParameters = viewerParameters; + + super.updateProperties({ + fill: "black", + "stroke-width": 0, + }); + } + + clone() { + const clone = new SignatureOptions(this.#viewParameters); + clone.updateAll(this); + return clone; + } +} + +/** + * Basic editor in order to generate an Stamp annotation annotation containing + * a signature drawing. + */ +class SignatureEditor extends DrawingEditor { + static _type = "signature"; + + static _editorType = AnnotationEditorType.SIGNATURE; + + static _defaultDrawingOptions = null; + + constructor(params) { + super({ ...params, mustBeCommitted: true, name: "signatureEditor" }); + this._willKeepAspectRatio = false; + } + + /** @inheritdoc */ + static initialize(l10n, uiManager) { + AnnotationEditor.initialize(l10n, uiManager); + this._defaultDrawingOptions = new SignatureOptions( + uiManager.viewParameters + ); + } + + /** @inheritdoc */ + static getDefaultDrawingOptions(options) { + const clone = this._defaultDrawingOptions.clone(); + clone.updateProperties(options); + return clone; + } + + /** @inheritdoc */ + static get supportMultipleDrawings() { + return false; + } + + static get typesMap() { + return shadow(this, "typesMap", new Map()); + } + + static get isDrawer() { + return false; + } + + /** @inheritdoc */ + get isResizable() { + return true; + } + + /** @inheritdoc */ + render() { + if (this.div) { + return this.div; + } + + super.render(); + this.div.hidden = true; + this.div.setAttribute("role", "figure"); + + this.#extractSignature(); + + return this.div; + } + + async #extractSignature() { + const input = document.createElement("input"); + input.type = "file"; + input.accept = StampEditor.supportedTypesStr; + const signal = this._uiManager._signal; + const { promise, resolve } = Promise.withResolvers(); + + input.addEventListener( + "change", + async () => { + if (!input.files || input.files.length === 0) { + resolve(); + } else { + this._uiManager.enableWaiting(true); + const data = await this._uiManager.imageManager.getFromFile( + input.files[0] + ); + this._uiManager.enableWaiting(false); + resolve(data); + } + resolve(); + }, + { signal } + ); + input.addEventListener("cancel", resolve, { signal }); + input.click(); + + const bitmap = await promise; + if (!bitmap?.bitmap) { + this.remove(); + return; + } + const { + rawDims: { pageWidth, pageHeight }, + rotation, + } = this.parent.viewport; + const drawOutlines = SignatureExtractor.process( + bitmap.bitmap, + pageWidth, + pageHeight, + rotation, + SignatureEditor._INNER_MARGIN + ); + this._addOutlines({ + drawOutlines, + drawingOptions: SignatureEditor.getDefaultDrawingOptions(), + }); + this.onScaleChanging(); + this.rotate(); + this.div.hidden = false; + } +} + +export { SignatureEditor }; diff --git a/src/display/editor/toolbar.js b/src/display/editor/toolbar.js index b6a71f51a0b2c..24cd47d1b3505 100644 --- a/src/display/editor/toolbar.js +++ b/src/display/editor/toolbar.js @@ -36,6 +36,7 @@ class EditorToolbar { highlight: "pdfjs-editor-remove-highlight-button", ink: "pdfjs-editor-remove-ink-button", stamp: "pdfjs-editor-remove-stamp-button", + signature: "pdfjs-editor-remove-signature-button", }); } diff --git a/src/shared/util.js b/src/shared/util.js index 13c3b089aec67..03dedc365fb18 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -76,6 +76,7 @@ const AnnotationEditorType = { HIGHLIGHT: 9, STAMP: 13, INK: 15, + SIGNATURE: 101, }; const AnnotationEditorParamsType = { diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index d778c7e83d2d8..b34bfe50bcc2a 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -162,7 +162,8 @@ box-sizing: border-box; } -.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) { +.annotationEditorLayer + :is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor) { position: absolute; background: transparent; z-index: 1; @@ -220,7 +221,13 @@ } .annotationEditorLayer - :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor), + :is( + .freeTextEditor, + .inkEditor, + .stampEditor, + .highlightEditor, + .signatureEditor + ), .textLayer { .editToolbar { --editor-toolbar-delete-image: url(images/editor-toolbar-delete.svg); @@ -622,7 +629,7 @@ } .annotationEditorLayer { - :is(.freeTextEditor, .inkEditor, .stampEditor) { + :is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor) { & > .resizers { position: absolute; inset: 0; diff --git a/web/annotation_editor_params.js b/web/annotation_editor_params.js index 951ce86a5bd0e..436902eedeafc 100644 --- a/web/annotation_editor_params.js +++ b/web/annotation_editor_params.js @@ -27,6 +27,7 @@ import { AnnotationEditorParamsType } from "pdfjs-lib"; * @property {HTMLButtonElement} editorStampAddImage * @property {HTMLInputElement} editorFreeHighlightThickness * @property {HTMLButtonElement} editorHighlightShowAll + * @property {HTMLButtonElement} editorSignatureAddSignature */ class AnnotationEditorParams { @@ -51,6 +52,7 @@ class AnnotationEditorParams { editorStampAddImage, editorFreeHighlightThickness, editorHighlightShowAll, + editorSignatureAddSignature, }) { const { eventBus } = this; @@ -94,6 +96,9 @@ class AnnotationEditorParams { this.setAttribute("aria-pressed", !checked); dispatchEvent("HIGHLIGHT_SHOW_ALL", !checked); }); + editorSignatureAddSignature.addEventListener("click", () => { + dispatchEvent("CREATE"); + }); eventBus._on("annotationeditorparamschanged", evt => { for (const [type, value] of evt.details) { diff --git a/web/app.js b/web/app.js index a7d55db3bb99d..820a2fb423557 100644 --- a/web/app.js +++ b/web/app.js @@ -536,6 +536,10 @@ const PDFViewerApplication = { typeof AbortSignal.any === "function") && annotationEditorMode !== AnnotationEditorType.DISABLE ) { + const editorSignatureButton = appConfig.toolbar?.editorSignatureButton; + if (editorSignatureButton && AppOptions.get("enableSignatureEditor")) { + editorSignatureButton.parentElement.hidden = false; + } this.annotationEditorParams = new AnnotationEditorParams( appConfig.annotationEditorParams, eventBus diff --git a/web/app_options.js b/web/app_options.js index aa3fd0de92d92..20839cdca0008 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -228,6 +228,11 @@ const defaultOptions = { value: typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME"), kind: OptionKind.VIEWER + OptionKind.PREFERENCE, }, + enableSignatureEditor: { + /** @type {boolean} */ + value: typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING"), + kind: OptionKind.VIEWER + OptionKind.PREFERENCE, + }, enableUpdatedAddImage: { // We'll probably want to make some experiments before enabling this // in Firefox release, but it has to be temporary. diff --git a/web/editor_undo_bar.js b/web/editor_undo_bar.js index aa064e3841f0c..096547062db4c 100644 --- a/web/editor_undo_bar.js +++ b/web/editor_undo_bar.js @@ -39,6 +39,7 @@ class EditorUndoBar { freetext: "pdfjs-editor-undo-bar-message-freetext", stamp: "pdfjs-editor-undo-bar-message-stamp", ink: "pdfjs-editor-undo-bar-message-ink", + signature: "pdfjs-editor-undo-bar-message-signature", _multiple: "pdfjs-editor-undo-bar-message-multiple", }); diff --git a/web/images/toolbarButton-editorSignature.svg b/web/images/toolbarButton-editorSignature.svg new file mode 100644 index 0000000000000..26e484864d6ab --- /dev/null +++ b/web/images/toolbarButton-editorSignature.svg @@ -0,0 +1,6 @@ + + + + diff --git a/web/toolbar.js b/web/toolbar.js index 5d9725e8c8397..5945cd409165a 100644 --- a/web/toolbar.js +++ b/web/toolbar.js @@ -119,6 +119,18 @@ class Toolbar { data: { action: "pdfjs.image.icon_click" }, }, }, + { + element: options.editorSignatureButton, + eventName: "switchannotationeditormode", + eventDetails: { + get mode() { + const { classList } = options.editorSignatureButton; + return classList.contains("toggled") + ? AnnotationEditorType.NONE + : AnnotationEditorType.SIGNATURE; + }, + }, + }, ]; // Bind the event listeners for click and various other actions. @@ -274,6 +286,8 @@ class Toolbar { editorInkParamsToolbar, editorStampButton, editorStampParamsToolbar, + editorSignatureButton, + editorSignatureParamsToolbar, } = this.#opts; toggleExpandedBtn( @@ -296,12 +310,18 @@ class Toolbar { mode === AnnotationEditorType.STAMP, editorStampParamsToolbar ); + toggleExpandedBtn( + editorSignatureButton, + mode === AnnotationEditorType.SIGNATURE, + editorSignatureParamsToolbar + ); const isDisable = mode === AnnotationEditorType.DISABLE; editorFreeTextButton.disabled = isDisable; editorHighlightButton.disabled = isDisable; editorInkButton.disabled = isDisable; editorStampButton.disabled = isDisable; + editorSignatureButton.disabled = isDisable; } #updateUIState(resetNumPages = false) { diff --git a/web/viewer.css b/web/viewer.css index 71d7dd5f81a85..d577895b2726f 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -89,6 +89,7 @@ --toolbarButton-editorHighlight-icon: url(images/toolbarButton-editorHighlight.svg); --toolbarButton-editorInk-icon: url(images/toolbarButton-editorInk.svg); --toolbarButton-editorStamp-icon: url(images/toolbarButton-editorStamp.svg); + --toolbarButton-editorSignature-icon: url(images/toolbarButton-editorSignature.svg); --toolbarButton-menuArrow-icon: url(images/toolbarButton-menuArrow.svg); --toolbarButton-sidebarToggle-icon: url(images/toolbarButton-sidebarToggle.svg); --toolbarButton-secondaryToolbarToggle-icon: url(images/toolbarButton-secondaryToolbarToggle.svg); @@ -572,6 +573,10 @@ body { mask-image: var(--toolbarButton-editorStamp-icon); } +#editorSignatureButton::before { + mask-image: var(--toolbarButton-editorSignature-icon); +} + #printButton::before { mask-image: var(--toolbarButton-print-icon); } @@ -1119,7 +1124,7 @@ dialog :link { z-index: 30000; cursor: default; - #editorStampAddImage::before { + :is(#editorStampAddImage, #editorSignatureAddSignature)::before { mask-image: var(--editorParams-stampAddImage-icon); } diff --git a/web/viewer.html b/web/viewer.html index db270c3607410..7bd09571d1af9 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -318,6 +318,18 @@ + diff --git a/web/viewer.js b/web/viewer.js index 1ef6f1a535625..0fb7e45a60234 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -68,6 +68,10 @@ function getViewerConfiguration() { editorStampParamsToolbar: document.getElementById( "editorStampParamsToolbar" ), + editorSignatureButton: document.getElementById("editorSignatureButton"), + editorSignatureParamsToolbar: document.getElementById( + "editorSignatureParamsToolbar" + ), download: document.getElementById("downloadButton"), }, secondaryToolbar: { @@ -217,6 +221,9 @@ function getViewerConfiguration() { editorInkThickness: document.getElementById("editorInkThickness"), editorInkOpacity: document.getElementById("editorInkOpacity"), editorStampAddImage: document.getElementById("editorStampAddImage"), + editorSignatureAddSignature: document.getElementById( + "editorSignatureAddSignature" + ), editorFreeHighlightThickness: document.getElementById( "editorFreeHighlightThickness" ), From 491e0676f6934d7181baf60610641f063f46ea87 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 30 Jan 2025 11:46:38 +0100 Subject: [PATCH 217/338] Initialize the image-options, on the worker-thread, once per document Currently we're initializing the image-options for every page, which seems unnecessary since it should suffice to do that once per document. Also, changes the `BasePdfManager` constructor to improve readability/documentation a little bit. --- src/core/evaluator.js | 10 ---------- src/core/pdf_manager.js | 35 +++++++++++++++++++++++++++-------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 07253e6475bea..d8a88c6562a40 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -75,9 +75,6 @@ import { getFontSubstitution } from "./font_substitutions.js"; import { getGlyphsUnicode } from "./glyphlist.js"; import { getMetrics } from "./metrics.js"; import { getUnicodeForGlyph } from "./unicode.js"; -import { ImageResizer } from "./image_resizer.js"; -import { JpegStream } from "./jpeg_stream.js"; -import { JpxImage } from "./jpx.js"; import { MurmurHash3_64 } from "../shared/murmurhash3.js"; import { OperatorList } from "./operator_list.js"; import { PDFImage } from "./image.js"; @@ -240,13 +237,6 @@ class PartialEvaluator { this._regionalImageCache = new RegionalImageCache(); this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this); - - ImageResizer.setOptions(this.options); - JpegStream.setOptions(this.options); - JpxImage.setOptions({ - wasmUrl: this.options.wasmUrl, - handler, - }); } /** diff --git a/src/core/pdf_manager.js b/src/core/pdf_manager.js index 94285f47ec48d..3b277ea85bfc4 100644 --- a/src/core/pdf_manager.js +++ b/src/core/pdf_manager.js @@ -20,6 +20,9 @@ import { warn, } from "../shared/util.js"; import { ChunkedStreamManager } from "./chunked_stream.js"; +import { ImageResizer } from "./image_resizer.js"; +import { JpegStream } from "./jpeg_stream.js"; +import { JpxImage } from "./jpx.js"; import { MissingDataException } from "./core_utils.js"; import { PDFDocument } from "./document.js"; import { Stream } from "./stream.js"; @@ -36,25 +39,41 @@ function parseDocBaseUrl(url) { } class BasePdfManager { - constructor(args) { + constructor({ + // source, + // disableAutoFetch, + docBaseUrl, + docId, + enableXfa, + evaluatorOptions, + handler, + // length, + password, + // rangeChunkSize, + }) { if ( (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) && this.constructor === BasePdfManager ) { unreachable("Cannot initialize BasePdfManager."); } - this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl); - this._docId = args.docId; - this._password = args.password; - this.enableXfa = args.enableXfa; + this._docBaseUrl = parseDocBaseUrl(docBaseUrl); + this._docId = docId; + this._password = password; + this.enableXfa = enableXfa; // Check `OffscreenCanvas` and `ImageDecoder` support once, // rather than repeatedly throughout the worker-thread code. - args.evaluatorOptions.isOffscreenCanvasSupported &&= + evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported; - args.evaluatorOptions.isImageDecoderSupported &&= + evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported; - this.evaluatorOptions = Object.freeze(args.evaluatorOptions); + this.evaluatorOptions = Object.freeze(evaluatorOptions); + + // Initially image-options once per document. + ImageResizer.setOptions(evaluatorOptions); + JpegStream.setOptions(evaluatorOptions); + JpxImage.setOptions({ ...evaluatorOptions, handler }); } get docId() { From 4c296c7b11f548d6130a6431086be388e320b683 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 30 Jan 2025 13:38:57 +0100 Subject: [PATCH 218/338] Use fewer `hasFieldFlag` calls in the `src/core/annotation.js` file We lookup a number of field-flags multiple times, which seems unnecessary. --- src/core/annotation.js | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 75d8b5c1af916..f34dc48965bed 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -2774,8 +2774,8 @@ class TextWidgetAnnotation extends WidgetAnnotation { this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE); this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && - !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) && - !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) && + !this.data.multiLine && + !this.data.password && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0; this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL); @@ -2986,13 +2986,12 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { this.checkedAppearance = null; this.uncheckedAppearance = null; - this.data.checkBox = - !this.hasFieldFlag(AnnotationFieldFlag.RADIO) && - !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON); - this.data.radioButton = - this.hasFieldFlag(AnnotationFieldFlag.RADIO) && - !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON); - this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON); + const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO), + isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON); + + this.data.checkBox = !isRadio && !isPushButton; + this.data.radioButton = isRadio && !isPushButton; + this.data.pushButton = isPushButton; this.data.isTooltipOnly = false; if (this.data.checkBox) { From fde698a75337a3bc2e7f4eb7d886dcff7c603c16 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 30 Jan 2025 15:14:29 +0100 Subject: [PATCH 219/338] Move the array containing the supported image mime types in display_utils and make it available for the viewer (it'll be used in the signature UI). --- src/display/display_utils.js | 15 +++++++++++++ src/display/editor/signature.js | 4 ++-- src/display/editor/stamp.js | 39 ++++++--------------------------- src/pdf.js | 2 ++ test/unit/pdf_spec.js | 2 ++ web/pdfjs.js | 2 ++ 6 files changed, 30 insertions(+), 34 deletions(-) diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 5d40e23498d83..1bac155c9828d 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -650,6 +650,20 @@ class OutputScale { } } +// See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types +// to know which types are supported by the browser. +const SupportedImageMimeTypes = [ + "image/apng", + "image/avif", + "image/bmp", + "image/gif", + "image/jpeg", + "image/png", + "image/svg+xml", + "image/webp", + "image/x-icon", +]; + export { deprecated, fetchData, @@ -672,5 +686,6 @@ export { setLayerDimensions, StatTimer, stopEvent, + SupportedImageMimeTypes, SVG_NS, }; diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index ad7c5e10202f6..cb51a73d7c7b5 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -17,7 +17,7 @@ import { AnnotationEditorType, shadow } from "../../shared/util.js"; import { DrawingEditor, DrawingOptions } from "./draw.js"; import { AnnotationEditor } from "./editor.js"; import { SignatureExtractor } from "./drawers/signaturedraw.js"; -import { StampEditor } from "./stamp.js"; +import { SupportedImageMimeTypes } from "../display_utils.js"; class SignatureOptions extends DrawingOptions { #viewParameters; @@ -106,7 +106,7 @@ class SignatureEditor extends DrawingEditor { async #extractSignature() { const input = document.createElement("input"); input.type = "file"; - input.accept = StampEditor.supportedTypesStr; + input.accept = SupportedImageMimeTypes.join(","); const signal = this._uiManager._signal; const { promise, resolve } = Promise.withResolvers(); diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index 72ebfa6f8be7c..c6b8586bdee3d 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -13,12 +13,12 @@ * limitations under the License. */ +import { AnnotationEditorType, AnnotationPrefix } from "../../shared/util.js"; import { - AnnotationEditorType, - AnnotationPrefix, - shadow, -} from "../../shared/util.js"; -import { OutputScale, PixelsPerInch } from "../display_utils.js"; + OutputScale, + PixelsPerInch, + SupportedImageMimeTypes, +} from "../display_utils.js"; import { AnnotationEditor } from "./editor.js"; import { StampAnnotationElement } from "../annotation_layer.js"; @@ -63,34 +63,9 @@ class StampEditor extends AnnotationEditor { AnnotationEditor.initialize(l10n, uiManager); } - static get supportedTypes() { - // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types - // to know which types are supported by the browser. - const types = [ - "apng", - "avif", - "bmp", - "gif", - "jpeg", - "png", - "svg+xml", - "webp", - "x-icon", - ]; - return shadow( - this, - "supportedTypes", - types.map(type => `image/${type}`) - ); - } - - static get supportedTypesStr() { - return shadow(this, "supportedTypesStr", this.supportedTypes.join(",")); - } - /** @inheritdoc */ static isHandlingMimeForPasting(mime) { - return this.supportedTypes.includes(mime); + return SupportedImageMimeTypes.includes(mime); } /** @inheritdoc */ @@ -258,7 +233,7 @@ class StampEditor extends AnnotationEditor { document.body.append(input); } input.type = "file"; - input.accept = StampEditor.supportedTypesStr; + input.accept = SupportedImageMimeTypes.join(","); const signal = this._uiManager._signal; this.#bitmapPromise = new Promise(resolve => { input.addEventListener( diff --git a/src/pdf.js b/src/pdf.js index 757e97e4ccf11..edac1d0537318 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -61,6 +61,7 @@ import { RenderingCancelledException, setLayerDimensions, stopEvent, + SupportedImageMimeTypes, } from "./display/display_utils.js"; import { AnnotationEditorLayer } from "./display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "./display/editor/tools.js"; @@ -126,6 +127,7 @@ export { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index e5f0caceb5e59..8b13b440672e5 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -52,6 +52,7 @@ import { RenderingCancelledException, setLayerDimensions, stopEvent, + SupportedImageMimeTypes, } from "../../src/display/display_utils.js"; import { AnnotationEditorLayer } from "../../src/display/editor/annotation_editor_layer.js"; import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js"; @@ -103,6 +104,7 @@ const expectedAPI = Object.freeze({ setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, diff --git a/web/pdfjs.js b/web/pdfjs.js index 7ac129513be5a..23c46dbb76cb4 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -52,6 +52,7 @@ const { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, @@ -99,6 +100,7 @@ export { setLayerDimensions, shadow, stopEvent, + SupportedImageMimeTypes, TextLayer, TouchManager, Util, From 7e64bf7aeb6c4725a97fbd387f6361f9fb55b1a4 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 30 Jan 2025 16:13:48 +0100 Subject: [PATCH 220/338] Avoid to remove the active overlay when a cancelled dialog (like the file picker) was called from a dialog --- web/overlay_manager.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/web/overlay_manager.js b/web/overlay_manager.js index 891e3a253f2f9..616baed710804 100644 --- a/web/overlay_manager.js +++ b/web/overlay_manager.js @@ -37,8 +37,10 @@ class OverlayManager { } this.#overlays.set(dialog, { canForceClose }); - dialog.addEventListener("cancel", evt => { - this.#active = null; + dialog.addEventListener("cancel", ({ target }) => { + if (this.#active === target) { + this.#active = null; + } }); } From 37a76acaa4d0678c3a1b909664fe20bc9f4e504e Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 31 Jan 2025 13:19:26 +0100 Subject: [PATCH 221/338] [Editor] Add some functions in order to extract contours from text and to generate a drawing from a drawn signature --- src/display/editor/drawers/inkdraw.js | 2 +- src/display/editor/drawers/signaturedraw.js | 146 +++++++++++++++++--- src/display/editor/signature.js | 30 ++-- 3 files changed, 150 insertions(+), 28 deletions(-) diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index b746f1a536cc4..11447e723ba3b 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -344,7 +344,7 @@ class InkDrawOutline extends Outline { buffer.push("Z"); continue; } - if (line.length === 12) { + if (line.length === 12 && isNaN(line[6])) { buffer.push( `L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}` ); diff --git a/src/display/editor/drawers/signaturedraw.js b/src/display/editor/drawers/signaturedraw.js index 2b0490f03a707..f0a0ed36f72af 100644 --- a/src/display/editor/drawers/signaturedraw.js +++ b/src/display/editor/drawers/signaturedraw.js @@ -14,6 +14,7 @@ */ import { ContourDrawOutline } from "./contour.js"; +import { InkDrawOutline } from "./inkdraw.js"; import { Outline } from "./outline.js"; /** @@ -343,6 +344,14 @@ class SignatureExtractor { return [out, histogram]; } + static #getHistogram(buf) { + const histogram = new Uint32Array(256); + for (const g of buf) { + histogram[g]++; + } + return histogram; + } + static #toUint8(buf) { // We have a RGBA buffer, containing a grayscale image. // We want to convert it into a basic G buffer. @@ -479,9 +488,85 @@ class SignatureExtractor { return [uint8Buf, newWidth, newHeight]; } + static extractContoursFromText( + text, + { fontFamily, fontStyle, fontWeight }, + pageWidth, + pageHeight, + rotation, + innerMargin + ) { + let canvas = new OffscreenCanvas(1, 1); + let ctx = canvas.getContext("2d", { alpha: false }); + const fontSize = 200; + const font = + (ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`); + const { + actualBoundingBoxLeft, + actualBoundingBoxRight, + actualBoundingBoxAscent, + actualBoundingBoxDescent, + fontBoundingBoxAscent, + fontBoundingBoxDescent, + width, + } = ctx.measureText(text); + + // We rescale the canvas to make "sure" the text fits. + const SCALE = 1.5; + const canvasWidth = Math.ceil( + Math.max( + Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, + width + ) * SCALE + ); + const canvasHeight = Math.ceil( + Math.max( + Math.abs(actualBoundingBoxAscent) + + Math.abs(actualBoundingBoxDescent) || fontSize, + Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || + fontSize + ) * SCALE + ); + canvas = new OffscreenCanvas(canvasWidth, canvasHeight); + ctx = canvas.getContext("2d", { alpha: true, willReadFrequently: true }); + ctx.font = font; + ctx.filter = "grayscale(1)"; + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, canvasWidth, canvasHeight); + ctx.fillStyle = "black"; + ctx.fillText( + text, + (canvasWidth * (SCALE - 1)) / 2, + (canvasHeight * (3 - SCALE)) / 2 + ); + + const uint8Buf = this.#toUint8( + ctx.getImageData(0, 0, canvasWidth, canvasHeight).data + ); + const histogram = this.#getHistogram(uint8Buf); + const threshold = this.#guessThreshold(histogram); + + const contourList = this.#findContours( + uint8Buf, + canvasWidth, + canvasHeight, + threshold + ); + + return this.processDrawnLines({ + lines: { curves: contourList, width: canvasWidth, height: canvasHeight }, + pageWidth, + pageHeight, + rotation, + innerMargin, + mustSmooth: true, + areContours: true, + }); + } + static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) { const [uint8Buf, width, height] = this.#getGrayPixels(bitmap); - const [uint8Filtered, histogram] = this.#bilateralFilter( + const [buffer, histogram] = this.#bilateralFilter( uint8Buf, width, height, @@ -491,32 +576,55 @@ class SignatureExtractor { ); const threshold = this.#guessThreshold(histogram); - const contourList = this.#findContours( - uint8Filtered, - width, - height, - threshold - ); - const linesAndPoints = []; + const contourList = this.#findContours(buffer, width, height, threshold); + + return this.processDrawnLines({ + lines: { curves: contourList, width, height }, + pageWidth, + pageHeight, + rotation, + innerMargin, + mustSmooth: true, + areContours: true, + }); + } + static processDrawnLines({ + lines, + pageWidth, + pageHeight, + rotation, + innerMargin, + mustSmooth, + areContours, + }) { if (rotation % 180 !== 0) { [pageWidth, pageHeight] = [pageHeight, pageWidth]; } - // The points need to be converted into page coordinates. - const ratio = 0.5 * Math.min(pageWidth / width, pageHeight / height); + const { curves, thickness, width, height } = lines; + const linesAndPoints = []; + const ratio = Math.min(pageWidth / width, pageHeight / height); const xScale = ratio / pageWidth; const yScale = ratio / pageHeight; - for (const { points } of contourList) { - const reducedPoints = this.#douglasPeucker(points); + for (const { points } of curves) { + const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points; if (!reducedPoints) { continue; } const len = reducedPoints.length; const newPoints = new Float32Array(len); - const line = new Float32Array(3 * (len - 2)); + const line = new Float32Array(3 * (len === 2 ? 2 : len - 2)); + linesAndPoints.push({ line, points: newPoints }); + + if (len === 2) { + newPoints[0] = reducedPoints[0] * xScale; + newPoints[1] = reducedPoints[1] * yScale; + line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0); + continue; + } let [x1, y1, x2, y2] = reducedPoints; x1 *= xScale; @@ -532,17 +640,23 @@ class SignatureExtractor { line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3); [x1, y1, x2, y2] = [x2, y2, x, y]; } + } - linesAndPoints.push({ line, points: newPoints }); + if (linesAndPoints.length === 0) { + return null; } - const outline = new ContourDrawOutline(); + + const outline = areContours + ? new ContourDrawOutline() + : new InkDrawOutline(); + outline.build( linesAndPoints, pageWidth, pageHeight, 1, rotation, - 0, + areContours ? 0 : thickness, innerMargin ); diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index cb51a73d7c7b5..ec27e8b3fcece 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -131,21 +131,29 @@ class SignatureEditor extends DrawingEditor { input.click(); const bitmap = await promise; - if (!bitmap?.bitmap) { - this.remove(); - return; - } const { rawDims: { pageWidth, pageHeight }, rotation, } = this.parent.viewport; - const drawOutlines = SignatureExtractor.process( - bitmap.bitmap, - pageWidth, - pageHeight, - rotation, - SignatureEditor._INNER_MARGIN - ); + let drawOutlines; + if (bitmap?.bitmap) { + drawOutlines = SignatureExtractor.process( + bitmap.bitmap, + pageWidth, + pageHeight, + rotation, + SignatureEditor._INNER_MARGIN + ); + } else { + drawOutlines = SignatureExtractor.extractContoursFromText( + "Hello PDF.js' World !!", + { fontStyle: "italic", fontWeight: "400", fontFamily: "cursive" }, + pageWidth, + pageHeight, + rotation, + SignatureEditor._INNER_MARGIN + ); + } this._addOutlines({ drawOutlines, drawingOptions: SignatureEditor.getDefaultDrawingOptions(), From cd3fda166f0a83e5a60fd1b45b077fb510950473 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 31 Jan 2025 13:08:04 +0100 Subject: [PATCH 222/338] Add width/height getters in the `Annotation` class Currently we're manually computing the width/height of the /Rect-entry in a number of spots throughout the worker-thread Annotation code, which these new getters help avoid. --- src/core/annotation.js | 55 +++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 35 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index f34dc48965bed..f92dddb82b5b8 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -1153,7 +1153,7 @@ class Annotation { const isUsingOwnCanvas = !!( hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY ); - if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) { + if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) { // Empty annotation, don't draw anything. this.data.hasOwnCanvas = false; return { @@ -1411,6 +1411,14 @@ class Annotation { } return fieldName.join("."); } + + get width() { + return this.data.rect[2] - this.data.rect[0]; + } + + get height() { + return this.data.rect[3] - this.data.rect[1]; + } } /** @@ -1960,14 +1968,9 @@ class WidgetAnnotation extends Annotation { rotation = this.rotation; } - if (rotation === 0) { - return IDENTITY_MATRIX; - } - - const width = this.data.rect[2] - this.data.rect[0]; - const height = this.data.rect[3] - this.data.rect[1]; - - return getRotationMatrix(rotation, width, height); + return rotation === 0 + ? IDENTITY_MATRIX + : getRotationMatrix(rotation, this.width, this.height); } getBorderAndBackgroundAppearances(annotationStorage) { @@ -1979,12 +1982,10 @@ class WidgetAnnotation extends Annotation { if (!this.backgroundColor && !this.borderColor) { return ""; } - const width = this.data.rect[2] - this.data.rect[0]; - const height = this.data.rect[3] - this.data.rect[1]; const rect = rotation === 0 || rotation === 180 - ? `0 0 ${width} ${height} re` - : `0 0 ${height} ${width} re`; + ? `0 0 ${this.width} ${this.height} re` + : `0 0 ${this.height} ${this.width} re`; let str = ""; if (this.backgroundColor) { @@ -2048,12 +2049,7 @@ class WidgetAnnotation extends Annotation { ); const matrix = [1, 0, 0, 1, 0, 0]; - const bbox = [ - 0, - 0, - this.data.rect[2] - this.data.rect[0], - this.data.rect[3] - this.data.rect[1], - ]; + const bbox = [0, 0, this.width, this.height]; const transform = getTransformMatrix(this.data.rect, bbox, matrix); let optionalContent; @@ -2238,12 +2234,7 @@ class WidgetAnnotation extends Annotation { const appearanceDict = (appearanceStream.dict = new Dict(xref)); appearanceDict.set("Subtype", Name.get("Form")); appearanceDict.set("Resources", resources); - appearanceDict.set("BBox", [ - 0, - 0, - this.data.rect[2] - this.data.rect[0], - this.data.rect[3] - this.data.rect[1], - ]); + appearanceDict.set("BBox", [0, 0, this.width, this.height]); const rotationMatrix = this.getRotationMatrix(annotationStorage); if (rotationMatrix !== IDENTITY_MATRIX) { @@ -2343,8 +2334,7 @@ class WidgetAnnotation extends Annotation { const defaultPadding = 1; const defaultHPadding = 2; - let totalHeight = this.data.rect[3] - this.data.rect[1]; - let totalWidth = this.data.rect[2] - this.data.rect[0]; + let { width: totalWidth, height: totalHeight } = this; if (rotation === 90 || rotation === 270) { [totalWidth, totalHeight] = [totalHeight, totalWidth]; @@ -3210,8 +3200,7 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { } _getDefaultCheckedAppearance(params, type) { - const width = this.data.rect[2] - this.data.rect[0]; - const height = this.data.rect[3] - this.data.rect[1]; + const { width, height } = this; const bbox = [0, 0, width, height]; // Ratio used to have a mark slightly smaller than the bbox. @@ -3596,8 +3585,7 @@ class ChoiceWidgetAnnotation extends WidgetAnnotation { const defaultPadding = 1; const defaultHPadding = 2; - let totalHeight = this.data.rect[3] - this.data.rect[1]; - let totalWidth = this.data.rect[2] - this.data.rect[0]; + let { width: totalWidth, height: totalHeight } = this; if (rotation === 90 || rotation === 270) { [totalWidth, totalHeight] = [totalHeight, totalWidth]; @@ -3809,10 +3797,7 @@ class PopupAnnotation extends Annotation { // version. this.data.noHTML = false; - if ( - this.data.rect[0] === this.data.rect[2] || - this.data.rect[1] === this.data.rect[3] - ) { + if (this.width === 0 || this.height === 0) { this.data.rect = null; } From 079bf698245700d47ff5fadbbadd69b72af6fa7e Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 1 Feb 2025 13:00:32 +0100 Subject: [PATCH 223/338] Add width/height getters in the `AnnotationElement` class This is similar to PR 19397, but for the main-thread code, and helps to slightly shorten the code. --- src/display/annotation_layer.js | 54 ++++++++++++++------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 1b55f3d51f94c..7e023c67d6a29 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -47,13 +47,6 @@ const DEFAULT_TAB_INDEX = 1000; const DEFAULT_FONT_SIZE = 9; const GetElementsByNameSet = new WeakSet(); -function getRectDims(rect) { - return { - width: rect[2] - rect[0], - height: rect[3] - rect[1], - }; -} - /** * @typedef {Object} AnnotationElementParameters * @property {Object} data @@ -243,12 +236,11 @@ class AnnotationElement { }, } = this; currentRect?.splice(0, 4, ...rect); - const { width, height } = getRectDims(rect); style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`; style.top = `${(100 * (pageHeight - rect[3] + pageY)) / pageHeight}%`; if (rotation === 0) { - style.width = `${(100 * width) / pageWidth}%`; - style.height = `${(100 * height) / pageHeight}%`; + style.width = `${(100 * /* width = */ (rect[2] - rect[0])) / pageWidth}%`; + style.height = `${(100 * /* height = */ (rect[3] - rect[1])) / pageHeight}%`; } else { this.setRotation(rotation); } @@ -297,8 +289,7 @@ class AnnotationElement { } return container; } - - const { width, height } = getRectDims(data.rect); + const { width, height } = this; if (!ignoreBorder && data.borderStyle.width > 0) { style.borderWidth = `${data.borderStyle.width}px`; @@ -381,19 +372,13 @@ class AnnotationElement { return; } const { pageWidth, pageHeight } = this.parent.viewport.rawDims; - const { width, height } = getRectDims(this.data.rect); + let { width, height } = this; - let elementWidth, elementHeight; - if (angle % 180 === 0) { - elementWidth = (100 * width) / pageWidth; - elementHeight = (100 * height) / pageHeight; - } else { - elementWidth = (100 * height) / pageWidth; - elementHeight = (100 * width) / pageHeight; + if (angle % 180 !== 0) { + [width, height] = [height, width]; } - - container.style.width = `${elementWidth}%`; - container.style.height = `${elementHeight}%`; + container.style.width = `${(100 * width) / pageWidth}%`; + container.style.height = `${(100 * height) / pageHeight}%`; container.setAttribute("data-main-rotation", (360 - angle) % 360); } @@ -748,6 +733,14 @@ class AnnotationElement { }); }); } + + get width() { + return this.data.rect[2] - this.data.rect[0]; + } + + get height() { + return this.data.rect[3] - this.data.rect[1]; + } } class LinkAnnotationElement extends AnnotationElement { @@ -2537,8 +2530,7 @@ class LineAnnotationElement extends AnnotationElement { // Create an invisible line with the same starting and ending coordinates // that acts as the trigger for the popup. Only the line itself should // trigger the popup, not the entire container. - const data = this.data; - const { width, height } = getRectDims(data.rect); + const { data, width, height } = this; const svg = this.svgFactory.create( width, height, @@ -2592,8 +2584,7 @@ class SquareAnnotationElement extends AnnotationElement { // Create an invisible square with the same rectangle that acts as the // trigger for the popup. Only the square itself should trigger the // popup, not the entire container. - const data = this.data; - const { width, height } = getRectDims(data.rect); + const { data, width, height } = this; const svg = this.svgFactory.create( width, height, @@ -2649,8 +2640,7 @@ class CircleAnnotationElement extends AnnotationElement { // Create an invisible circle with the same ellipse that acts as the // trigger for the popup. Only the circle itself should trigger the // popup, not the entire container. - const data = this.data; - const { width, height } = getRectDims(data.rect); + const { data, width, height } = this; const svg = this.svgFactory.create( width, height, @@ -2712,11 +2702,12 @@ class PolylineAnnotationElement extends AnnotationElement { // popup, not the entire container. const { data: { rect, vertices, borderStyle, popupRef }, + width, + height, } = this; if (!vertices) { return this.container; } - const { width, height } = getRectDims(rect); const svg = this.svgFactory.create( width, height, @@ -3221,8 +3212,7 @@ class AnnotationLayer { } const isPopupAnnotation = data.annotationType === AnnotationType.POPUP; if (!isPopupAnnotation) { - const { width, height } = getRectDims(data.rect); - if (width <= 0 || height <= 0) { + if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) { continue; // Ignore empty annotations. } } else { From 1a6c0b8ecf2a1528e5e5fb2858cdd875e154dadf Mon Sep 17 00:00:00 2001 From: Hamir Mahal Date: Sat, 1 Feb 2025 15:32:09 -0800 Subject: [PATCH 224/338] Replace uninformative `README` badge (issue 19406) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e9fac7833597..15adbd23408e3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PDF.js [![Build Status](https://github.com/mozilla/pdf.js/workflows/CI/badge.svg?branch=master)](https://github.com/mozilla/pdf.js/actions?query=workflow%3ACI+branch%3Amaster) +# PDF.js [![CI](https://github.com/mozilla/pdf.js/actions/workflows/ci.yml/badge.svg?query=branch%3Amaster)](https://github.com/mozilla/pdf.js/actions/workflows/ci.yml?query=branch%3Amaster) [PDF.js](https://mozilla.github.io/pdf.js/) is a Portable Document Format (PDF) viewer that is built with HTML5. From de4b90ddb2b1bf9d394997e5a836ba8c20ccb20b Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 1 Feb 2025 18:31:58 +0100 Subject: [PATCH 225/338] Update dependencies to the most recent versions --- package-lock.json | 376 ++++++++++++++++++++-------------------------- package.json | 22 +-- 2 files changed, 172 insertions(+), 226 deletions(-) diff --git a/package-lock.json b/package-lock.json index d432df8d5ba75..929866e18b342 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,26 +7,26 @@ "name": "pdf.js", "license": "Apache-2.0", "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/preset-env": "^7.26.0", - "@babel/runtime": "^7.26.0", + "@babel/core": "^7.26.7", + "@babel/preset-env": "^7.26.7", + "@babel/runtime": "^7.26.7", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.7", + "@types/node": "^22.13.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001692", + "caniuse-lite": "^1.0.30001696", "core-js": "^3.40.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.6.0", - "eslint-plugin-prettier": "^5.2.2", + "eslint-plugin-perfectionist": "^4.7.0", + "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", "gulp": "^5.0.0", @@ -49,9 +49,9 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^24.1.0", - "stylelint": "^16.13.2", - "stylelint-prettier": "^5.0.2", + "puppeteer": "^24.1.1", + "stylelint": "^16.14.1", + "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", @@ -117,9 +117,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true, "license": "MIT", "engines": { @@ -127,22 +127,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", + "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -167,14 +167,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -196,28 +196,14 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -381,9 +367,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "license": "MIT", "engines": { @@ -426,20 +412,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -500,27 +472,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -726,13 +698,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -922,13 +894,12 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1071,15 +1042,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1158,13 +1128,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1440,13 +1410,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1523,15 +1493,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", + "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -1545,7 +1515,7 @@ "@babel/plugin-transform-arrow-functions": "^7.25.9", "@babel/plugin-transform-async-generator-functions": "^7.25.9", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1556,7 +1526,7 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", "@babel/plugin-transform-for-of": "^7.25.9", "@babel/plugin-transform-function-name": "^7.25.9", @@ -1565,12 +1535,12 @@ "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1587,7 +1557,7 @@ "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", @@ -1630,9 +1600,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1658,17 +1628,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", + "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.7", "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/types": "^7.26.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1687,9 +1657,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -1889,9 +1859,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, "license": "MIT", "engines": { @@ -2545,9 +2515,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -2654,9 +2624,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", + "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", "dev": true, "license": "MIT", "dependencies": { @@ -2692,14 +2662,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", - "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", + "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1" + "@typescript-eslint/types": "8.22.0", + "@typescript-eslint/visitor-keys": "8.22.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2710,9 +2680,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", - "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", + "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", "dev": true, "license": "MIT", "engines": { @@ -2724,14 +2694,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", - "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", + "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/visitor-keys": "8.19.1", + "@typescript-eslint/types": "8.22.0", + "@typescript-eslint/visitor-keys": "8.22.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2777,9 +2747,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", "dev": true, "license": "ISC", "bin": { @@ -2790,16 +2760,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", - "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.22.0.tgz", + "integrity": "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.19.1", - "@typescript-eslint/types": "8.19.1", - "@typescript-eslint/typescript-estree": "8.19.1" + "@typescript-eslint/scope-manager": "8.22.0", + "@typescript-eslint/types": "8.22.0", + "@typescript-eslint/typescript-estree": "8.22.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2814,13 +2784,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.19.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", - "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", + "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/types": "8.22.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3927,9 +3897,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001692", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", - "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", + "version": "1.0.30001696", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", + "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", "dev": true, "funding": [ { @@ -4032,9 +4002,9 @@ } }, "node_modules/chromium-bidi": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.12.0.tgz", - "integrity": "sha512-xzXveJmX826GGq1MeE5okD8XxaDT8172CXByhFJ687eY65rbjOIebdbUuQh+jXKaNyGKI14Veb3KjLLmSueaxA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.1.0.tgz", + "integrity": "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5061,9 +5031,9 @@ } }, "node_modules/eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", + "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", "dev": true, "license": "MIT", "dependencies": { @@ -5072,7 +5042,7 @@ "@eslint/config-array": "^0.19.0", "@eslint/core": "^0.10.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", + "@eslint/js": "9.19.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -5282,14 +5252,14 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.6.0.tgz", - "integrity": "sha512-kOswTebUK0LlYExRwqz7YQtvyTUIRsKfp8XrwBBeHGh2e8MBOS6K+7VvG6HpmNckyKySi1I96uPeAlptMFGcRQ==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.7.0.tgz", + "integrity": "sha512-e2ODzm2SsAztFWY3ZRJd1K702vyl8Sapacjc3JluOW294CfA3+jfjin+UxjcrK48EvlNIMOp+JJB9N54YR2LRw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.19.0", - "@typescript-eslint/utils": "^8.19.0", + "@typescript-eslint/types": "^8.21.0", + "@typescript-eslint/utils": "^8.21.0", "natural-orderby": "^5.0.0" }, "engines": { @@ -5300,9 +5270,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.2.tgz", - "integrity": "sha512-1yI3/hf35wmlq66C8yOyrujQnel+v5l1Vop5Cl2I6ylyNTT1JbuUUnV3/41PzwTzcyDp/oF0jWE3HXvcH5AQOQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", "dev": true, "license": "MIT", "dependencies": { @@ -10014,18 +9984,18 @@ } }, "node_modules/puppeteer": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.1.0.tgz", - "integrity": "sha512-F+3yKILaosLToT7amR7LIkTKkKMR0EGQPjFBch+MtgS8vRPS+4cPnLJuXDVTfCj2NqfrCnShtOr7yD+9dEgHRQ==", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.1.1.tgz", + "integrity": "sha512-fuhceZ5HZuDXVuaMIRxUuDHfCJLmK0pXh8FlzVQ0/+OApStevxZhU5kAVeYFOEqeCF5OoAyZjcWbdQK27xW/9A==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.7.0", - "chromium-bidi": "0.12.0", + "chromium-bidi": "1.1.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1380148", - "puppeteer-core": "24.1.0", + "puppeteer-core": "24.1.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10036,14 +10006,14 @@ } }, "node_modules/puppeteer-core": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.1.0.tgz", - "integrity": "sha512-ReefWoQgqdyl67uWEBy/TMZ4mAB7hP0JB5HIxSE8B1ot/4ningX1gmzHCOSNfMbTiS/VJHCvaZAe3oJTXph7yw==", + "version": "24.1.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.1.1.tgz", + "integrity": "sha512-7FF3gq6bpIsbq3I8mfbodXh3DCzXagoz3l2eGv1cXooYU4g0P4mcHQVHuBD4iSZPXNg8WjzlP5kmRwK9UvwF0A==", "dev": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.7.0", - "chromium-bidi": "0.11.0", + "chromium-bidi": "1.1.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1380148", "typed-query-selector": "^2.12.0", @@ -10053,30 +10023,6 @@ "node": ">=18" } }, - "node_modules/puppeteer-core/node_modules/chromium-bidi": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.11.0.tgz", - "integrity": "sha512-6CJWHkNRoyZyjV9Rwv2lYONZf1Xm0IuDyNq97nwSsxxP3wf5Bwy15K5rOvVKMtJ127jJBmxFUanSAOjgFRxgrA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mitt": "3.0.1", - "zod": "3.23.8" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/puppeteer-core/node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, "node_modules/queue-lit": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/queue-lit/-/queue-lit-1.5.0.tgz", @@ -11155,9 +11101,9 @@ "dev": true }, "node_modules/stylelint": { - "version": "16.13.2", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.13.2.tgz", - "integrity": "sha512-wDlgh0mRO9RtSa3TdidqHd0nOG8MmUyVKl+dxA6C1j8aZRzpNeEgdhFmU5y4sZx4Fc6r46p0fI7p1vR5O2DZqA==", + "version": "16.14.1", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.1.tgz", + "integrity": "sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==", "dev": true, "funding": [ { @@ -11189,7 +11135,7 @@ "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", - "ignore": "^7.0.1", + "ignore": "^7.0.3", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.35.0", @@ -11198,7 +11144,7 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.4.49", + "postcss": "^8.5.1", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.0.0", @@ -11218,9 +11164,9 @@ } }, "node_modules/stylelint-prettier": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.2.tgz", - "integrity": "sha512-qJ+BN+1T2ZcKz9WIrv0x+eFGHzSUnXfXd5gL///T6XoJvr3D8/ztzz2fhtmXef7Vb8P33zBXmLTTveByr0nwBw==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.3.tgz", + "integrity": "sha512-B6V0oa35ekRrKZlf+6+jA+i50C4GXJ7X1PPmoCqSUoXN6BrNF6NhqqhanvkLjqw2qgvrS0wjdpeC+Tn06KN3jw==", "dev": true, "license": "MIT", "dependencies": { @@ -12011,9 +11957,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 2e4dc7ec0665f..ad51073827fb0 100644 --- a/package.json +++ b/package.json @@ -2,26 +2,26 @@ "name": "pdf.js", "type": "module", "devDependencies": { - "@babel/core": "^7.26.0", - "@babel/preset-env": "^7.26.0", - "@babel/runtime": "^7.26.0", + "@babel/core": "^7.26.7", + "@babel/preset-env": "^7.26.7", + "@babel/runtime": "^7.26.7", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.10.7", + "@types/node": "^22.13.0", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001692", + "caniuse-lite": "^1.0.30001696", "core-js": "^3.40.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.6.0", - "eslint-plugin-prettier": "^5.2.2", + "eslint-plugin-perfectionist": "^4.7.0", + "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", "gulp": "^5.0.0", @@ -44,9 +44,9 @@ "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", "prettier": "^3.4.2", - "puppeteer": "^24.1.0", - "stylelint": "^16.13.2", - "stylelint-prettier": "^5.0.2", + "puppeteer": "^24.1.1", + "stylelint": "^16.14.1", + "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", "terser-webpack-plugin": "^5.3.11", "tsc-alias": "^1.8.10", From 9e6fa47496d3241ca5c86cfafdc2da3ed63ad8b4 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 1 Feb 2025 18:37:01 +0100 Subject: [PATCH 226/338] Update translations to the most recent versions --- l10n/ach/viewer.ftl | 23 ++++++++ l10n/af/viewer.ftl | 23 ++++++++ l10n/an/viewer.ftl | 23 ++++++++ l10n/ar/viewer.ftl | 95 ++++++++++++++++++++++++++++++- l10n/ast/viewer.ftl | 23 ++++++++ l10n/az/viewer.ftl | 23 ++++++++ l10n/bg/viewer.ftl | 4 +- l10n/bn/viewer.ftl | 23 ++++++++ l10n/bo/viewer.ftl | 23 ++++++++ l10n/br/viewer.ftl | 3 + l10n/brx/viewer.ftl | 23 ++++++++ l10n/bs/viewer.ftl | 23 ++++++++ l10n/ca/viewer.ftl | 3 + l10n/cak/viewer.ftl | 23 ++++++++ l10n/ckb/viewer.ftl | 23 ++++++++ l10n/et/viewer.ftl | 23 ++++++++ l10n/fa/viewer.ftl | 3 + l10n/ff/viewer.ftl | 23 ++++++++ l10n/fur/viewer.ftl | 7 +-- l10n/ga-IE/viewer.ftl | 23 ++++++++ l10n/gd/viewer.ftl | 3 + l10n/gl/viewer.ftl | 4 +- l10n/gu-IN/viewer.ftl | 23 ++++++++ l10n/he/viewer.ftl | 2 +- l10n/hi-IN/viewer.ftl | 3 + l10n/hr/viewer.ftl | 45 +++++++++++++++ l10n/hy-AM/viewer.ftl | 10 ++++ l10n/hye/viewer.ftl | 23 ++++++++ l10n/id/viewer.ftl | 129 ++++++++++++++++++++++++++++++++++++++++++ l10n/kab/viewer.ftl | 4 +- l10n/km/viewer.ftl | 23 ++++++++ l10n/kn/viewer.ftl | 23 ++++++++ l10n/lij/viewer.ftl | 23 ++++++++ l10n/lo/viewer.ftl | 3 + l10n/lt/viewer.ftl | 23 ++++++++ l10n/ltg/viewer.ftl | 23 ++++++++ l10n/lv/viewer.ftl | 23 ++++++++ l10n/meh/viewer.ftl | 23 ++++++++ l10n/mk/viewer.ftl | 23 ++++++++ l10n/mr/viewer.ftl | 23 ++++++++ l10n/ms/viewer.ftl | 23 ++++++++ l10n/my/viewer.ftl | 23 ++++++++ l10n/nb-NO/viewer.ftl | 9 +++ l10n/ne-NP/viewer.ftl | 23 ++++++++ l10n/nn-NO/viewer.ftl | 6 ++ l10n/ro/viewer.ftl | 23 ++++++++ l10n/sat/viewer.ftl | 3 + l10n/sc/viewer.ftl | 6 +- l10n/scn/viewer.ftl | 23 ++++++++ l10n/sco/viewer.ftl | 23 ++++++++ l10n/si/viewer.ftl | 3 + l10n/son/viewer.ftl | 23 ++++++++ l10n/sr/viewer.ftl | 3 + l10n/szl/viewer.ftl | 23 ++++++++ l10n/ta/viewer.ftl | 23 ++++++++ l10n/te/viewer.ftl | 23 ++++++++ l10n/tl/viewer.ftl | 23 ++++++++ l10n/trs/viewer.ftl | 23 ++++++++ l10n/ur/viewer.ftl | 23 ++++++++ l10n/uz/viewer.ftl | 23 ++++++++ l10n/wo/viewer.ftl | 23 ++++++++ l10n/xh/viewer.ftl | 23 ++++++++ 62 files changed, 1278 insertions(+), 13 deletions(-) diff --git a/l10n/ach/viewer.ftl b/l10n/ach/viewer.ftl index 36769b7084c2c..a512c4053b1f5 100644 --- a/l10n/ach/viewer.ftl +++ b/l10n/ach/viewer.ftl @@ -217,9 +217,32 @@ pdfjs-web-fonts-disabled = Kijuko dit pa coc me kakube woko: pe romo tic ki dit ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/af/viewer.ftl b/l10n/af/viewer.ftl index 7c4346fe018b0..6f9d32cf6e58d 100644 --- a/l10n/af/viewer.ftl +++ b/l10n/af/viewer.ftl @@ -204,9 +204,32 @@ pdfjs-web-fonts-disabled = Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingeb ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/an/viewer.ftl b/l10n/an/viewer.ftl index 673314778ad8b..a42666554b089 100644 --- a/l10n/an/viewer.ftl +++ b/l10n/an/viewer.ftl @@ -249,9 +249,32 @@ pdfjs-web-fonts-disabled = As fuents web son desactivadas: no se puet incrustar ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ar/viewer.ftl b/l10n/ar/viewer.ftl index 8d14767063a2d..aeb7e51cf97ea 100644 --- a/l10n/ar/viewer.ftl +++ b/l10n/ar/viewer.ftl @@ -105,6 +105,14 @@ pdfjs-document-properties-button-label = خصائص المستند… pdfjs-document-properties-file-name = اسم الملف: pdfjs-document-properties-file-size = حجم الملف: # Variables: +# $kb (Number) - the PDF file size in kilobytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } ك.بايت ({ $b } بايتات) +# Variables: +# $mb (Number) - the PDF file size in megabytes +# $b (Number) - the PDF file size in bytes +pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } م.بايت ({ $b } بايتات) +# Variables: # $size_kb (Number) - the PDF file size in kilobytes # $size_b (Number) - the PDF file size in bytes pdfjs-document-properties-kb = { $size_kb } ك.بايت ({ $size_b } بايت) @@ -119,6 +127,9 @@ pdfjs-document-properties-keywords = الكلمات الأساسية: pdfjs-document-properties-creation-date = تاريخ الإنشاء: pdfjs-document-properties-modification-date = تاريخ التعديل: # Variables: +# $dateObj (Date) - the creation/modification date and time of the PDF file +pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } +# Variables: # $date (Date) - the creation/modification date of the PDF file # $time (Time) - the creation/modification time of the PDF file pdfjs-document-properties-date-string = { $date }، { $time } @@ -216,7 +227,7 @@ pdfjs-find-next-button = pdfjs-find-next-button-label = التالي pdfjs-find-highlight-checkbox = أبرِز الكل pdfjs-find-match-case-checkbox-label = طابق حالة الأحرف -pdfjs-find-match-diacritics-checkbox-label = طابِق الحركات +pdfjs-find-match-diacritics-checkbox-label = طابِق التشكيل pdfjs-find-entire-word-checkbox-label = كلمات كاملة pdfjs-find-reached-top = تابعت من الأسفل بعدما وصلت إلى بداية المستند pdfjs-find-reached-bottom = تابعت من الأعلى بعدما وصلت إلى نهاية المستند @@ -283,6 +294,9 @@ pdfjs-annotation-date-string = { $date }، { $time } # Some common types are e.g.: "Check", "Text", "Comment", "Note" pdfjs-text-annotation-type = .alt = [تعليق { $type }] +# Variables: +# $dateObj (Date) - the modification date and time of the annotation +pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", timeStyle: "medium") } ## Password @@ -337,6 +351,10 @@ pdfjs-editor-stamp-add-image-button-label = أضِف صورة pdfjs-editor-free-highlight-thickness-input = السماكة pdfjs-editor-free-highlight-thickness-title = .title = غيّر السُمك عند إبراز عناصر أُخرى غير النص +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = محرِّر النص + .default-content = ابدأ في كتابة… pdfjs-free-text = .aria-label = محرِّر النص pdfjs-free-text-default-content = ابدأ الكتابة… @@ -347,8 +365,9 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = نص بديل +pdfjs-editor-alt-text-edit-button = + .aria-label = حرّر النص البديل pdfjs-editor-alt-text-edit-button-label = تحرير النص البديل pdfjs-editor-alt-text-dialog-label = اختر خيار pdfjs-editor-alt-text-dialog-description = يساعد النص البديل عندما لا يتمكن الأشخاص من رؤية الصورة أو عندما لا يتم تحميلها. @@ -362,6 +381,9 @@ pdfjs-editor-alt-text-decorative-tooltip = عُلّمت على أنها زخرف # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = على سبيل المثال، "يجلس شاب على الطاولة لتناول وجبة" +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = نص بديل ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -420,6 +442,75 @@ pdfjs-editor-highlight-show-all-button = ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = حرّر النص البديل (وصف الصورة) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = أضِف النص البديل (وصف الصورة) +pdfjs-editor-new-alt-text-textarea = + .placeholder = اكتب وصفك هنا… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = وصف مختصر للأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = أُنشئ هذا النص البديل تلقائيًا وقد يكون غير دقيق. +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = اطّلع على المزيد +pdfjs-editor-new-alt-text-create-automatically-button-label = أنشئ نص بديل تلقائيًا +pdfjs-editor-new-alt-text-not-now-button = ليس الآن +pdfjs-editor-new-alt-text-error-title = لم يتمكن من إنشاء نص بديل تلقائيًا +pdfjs-editor-new-alt-text-error-description = يُرجى كتابة نص بديلك أو المحاولة مرة أخرى لاحقًا. +pdfjs-editor-new-alt-text-error-close-button = أغلق +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت) + .aria-valuetext = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = أُضِيف نص بديل +pdfjs-editor-new-alt-text-added-button-label = أُضِيف نص بديل +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = نص بديل مفقود +pdfjs-editor-new-alt-text-missing-button-label = نص بديل مفقود +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = راجع النص البديل +pdfjs-editor-new-alt-text-to-review-button-label = راجع النص البديل +# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. +# Variables: +# $generatedAltText (String) - the generated alt-text. +pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = أُنشئ تلقائيًا: { $generatedAltText } ## Image alt-text settings +pdfjs-image-alt-text-settings-button = + .title = إعدادات النص البديل للصورة +pdfjs-image-alt-text-settings-button-label = إعدادات النص البديل للصورة +pdfjs-editor-alt-text-settings-dialog-label = إعدادات النص البديل للصورة +pdfjs-editor-alt-text-settings-automatic-title = نص بديل تلقائي +pdfjs-editor-alt-text-settings-create-model-button-label = أنشئ نص بديل تلقائيًا +pdfjs-editor-alt-text-settings-create-model-description = يقترح أوصافًا لمساعدة الأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = نموذج الذكاء الاصطناعي للنص البديل ({ $totalSize } م.بايت) +pdfjs-editor-alt-text-settings-ai-model-description = يتم تشغيله محليًا على جهازك حتى تظل بياناتك خاصة. مطلوب للنص البديل التلقائي. +pdfjs-editor-alt-text-settings-delete-model-button = احذف +pdfjs-editor-alt-text-settings-download-model-button = نزّل +pdfjs-editor-alt-text-settings-downloading-model-button = يُنزل… +pdfjs-editor-alt-text-settings-editor-title = مُحرِّر النص البديل +pdfjs-editor-alt-text-settings-show-dialog-button-label = أظهِر مُحرِّر النص البديل على الفور عند إضافة صورة +pdfjs-editor-alt-text-settings-show-dialog-description = يساعدك على التأكد من أن جميع صورك تحتوي على نص بديل. +pdfjs-editor-alt-text-settings-close-button = أغلق + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = أُزِيل البرز +pdfjs-editor-undo-bar-message-freetext = أُزيل النص +pdfjs-editor-undo-bar-message-ink = أُزِيلت الرسمة +pdfjs-editor-undo-bar-message-stamp = أُزيلت الصورة +pdfjs-editor-undo-bar-undo-button = + .title = تراجع +pdfjs-editor-undo-bar-undo-button-label = تراجع +pdfjs-editor-undo-bar-close-button = + .title = أغلق +pdfjs-editor-undo-bar-close-button-label = أغلق diff --git a/l10n/ast/viewer.ftl b/l10n/ast/viewer.ftl index 2503cafceeab4..6bc54576ca0f1 100644 --- a/l10n/ast/viewer.ftl +++ b/l10n/ast/viewer.ftl @@ -193,9 +193,32 @@ pdfjs-password-cancel-button = Encaboxar ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/az/viewer.ftl b/l10n/az/viewer.ftl index 773aae4d62743..b18f019999507 100644 --- a/l10n/az/viewer.ftl +++ b/l10n/az/viewer.ftl @@ -249,9 +249,32 @@ pdfjs-web-fonts-disabled = Web Şriftlər söndürülüb: yerləşdirilmiş PDF ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/bg/viewer.ftl b/l10n/bg/viewer.ftl index 8b1124ee27cc5..0ab64d0ac413c 100644 --- a/l10n/bg/viewer.ftl +++ b/l10n/bg/viewer.ftl @@ -342,7 +342,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Алтернативен текст pdfjs-editor-alt-text-edit-button-label = Промяна на алтернативния текст pdfjs-editor-alt-text-dialog-label = Изберете от възможностите @@ -416,3 +415,6 @@ pdfjs-editor-new-alt-text-not-now-button = Не сега ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/bn/viewer.ftl b/l10n/bn/viewer.ftl index 1e20ecb835e0b..71055f6cadedd 100644 --- a/l10n/bn/viewer.ftl +++ b/l10n/bn/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = ওয়েব ফন্ট নিষ্ক্রিয় ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/bo/viewer.ftl b/l10n/bo/viewer.ftl index 824eab4ffbaa3..60b343018d73b 100644 --- a/l10n/bo/viewer.ftl +++ b/l10n/bo/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/br/viewer.ftl b/l10n/br/viewer.ftl index 60a3df0cb8a7e..1938bc65b15a1 100644 --- a/l10n/br/viewer.ftl +++ b/l10n/br/viewer.ftl @@ -338,3 +338,6 @@ pdfjs-editor-alt-text-settings-delete-model-button = Dilemel pdfjs-editor-alt-text-settings-download-model-button = Pellgargañ pdfjs-editor-alt-text-settings-downloading-model-button = O pellgargañ… pdfjs-editor-alt-text-settings-close-button = Serriñ + +## "Annotations removed" bar + diff --git a/l10n/brx/viewer.ftl b/l10n/brx/viewer.ftl index 53ff72c5601db..8882781f20db0 100644 --- a/l10n/brx/viewer.ftl +++ b/l10n/brx/viewer.ftl @@ -210,9 +210,32 @@ pdfjs-web-fonts-disabled = वेब फन्टखौ लोरबां ख ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/bs/viewer.ftl b/l10n/bs/viewer.ftl index 39440424fc296..cd592a78911bd 100644 --- a/l10n/bs/viewer.ftl +++ b/l10n/bs/viewer.ftl @@ -215,9 +215,32 @@ pdfjs-web-fonts-disabled = Web fontovi su onemogućeni: nemoguće koristiti uba ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ca/viewer.ftl b/l10n/ca/viewer.ftl index 7417741df41d0..229c54444b142 100644 --- a/l10n/ca/viewer.ftl +++ b/l10n/ca/viewer.ftl @@ -311,3 +311,6 @@ pdfjs-ink-canvas = ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/cak/viewer.ftl b/l10n/cak/viewer.ftl index f40c1e92a4e42..4ff8fb7deb9d7 100644 --- a/l10n/cak/viewer.ftl +++ b/l10n/cak/viewer.ftl @@ -269,6 +269,12 @@ pdfjs-editor-free-text-button-label = Rucholajem tz'ib' pdfjs-editor-ink-button = .title = Tiwachib'ëx pdfjs-editor-ink-button-label = Tiwachib'ëx + +## Remove button for the various kind of editor. + + +## + # Editor Parameters pdfjs-editor-free-text-color-input = B'onil pdfjs-editor-free-text-size-input = Nimilem @@ -289,3 +295,20 @@ pdfjs-ink-canvas = ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ckb/viewer.ftl b/l10n/ckb/viewer.ftl index ae87335b8ba1a..e87fce06e67fb 100644 --- a/l10n/ckb/viewer.ftl +++ b/l10n/ckb/viewer.ftl @@ -234,9 +234,32 @@ pdfjs-web-fonts-disabled = جۆرەپیتی وێب ناچالاکە: نەتوا ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/et/viewer.ftl b/l10n/et/viewer.ftl index b28c6d5041226..84f1245c4c78d 100644 --- a/l10n/et/viewer.ftl +++ b/l10n/et/viewer.ftl @@ -260,9 +260,32 @@ pdfjs-web-fonts-disabled = Veebifondid on keelatud: PDFiga kaasatud fonte pole v ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/fa/viewer.ftl b/l10n/fa/viewer.ftl index 4969209e131cc..1ba7f086f33c0 100644 --- a/l10n/fa/viewer.ftl +++ b/l10n/fa/viewer.ftl @@ -346,3 +346,6 @@ pdfjs-editor-alt-text-settings-delete-model-button = حذف pdfjs-editor-alt-text-settings-download-model-button = دریافت pdfjs-editor-alt-text-settings-downloading-model-button = در حال دریافت… pdfjs-editor-alt-text-settings-close-button = بستن + +## "Annotations removed" bar + diff --git a/l10n/ff/viewer.ftl b/l10n/ff/viewer.ftl index d1419f54340a1..b519092d86fbe 100644 --- a/l10n/ff/viewer.ftl +++ b/l10n/ff/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = Ponte geese ko daaƴaaɗe: horiima huutoraade ponte P ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/fur/viewer.ftl b/l10n/fur/viewer.ftl index 370af3f23bd81..ab94626d9c771 100644 --- a/l10n/fur/viewer.ftl +++ b/l10n/fur/viewer.ftl @@ -357,7 +357,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Test alternatîf pdfjs-editor-alt-text-edit-button-label = Modifiche test alternatîf pdfjs-editor-alt-text-dialog-label = Sielç une opzion @@ -452,11 +451,8 @@ pdfjs-editor-new-alt-text-error-close-button = Siere # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Daûr a discjariâil model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) .aria-valuetext = Daûr a discjariâ il model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) -# This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button-label = Test alternatîf zontât -# This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button-label = Al mancje il test alternatîf -# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. pdfjs-editor-new-alt-text-to-review-button-label = Verifiche test alternatîf # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -483,3 +479,6 @@ pdfjs-editor-alt-text-settings-editor-title = Modifiche test alternatîf pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostre l'editôr dal test alternatîf a pene che e ven zontade une imagjin pdfjs-editor-alt-text-settings-show-dialog-description = Ti jude a sigurâti che dutis lis tôs imagjins a vedin il test alternatîf. pdfjs-editor-alt-text-settings-close-button = Siere + +## "Annotations removed" bar + diff --git a/l10n/ga-IE/viewer.ftl b/l10n/ga-IE/viewer.ftl index cb5930890c078..590c576edc731 100644 --- a/l10n/ga-IE/viewer.ftl +++ b/l10n/ga-IE/viewer.ftl @@ -205,9 +205,32 @@ pdfjs-web-fonts-disabled = Tá clófhoirne Gréasáin díchumasaithe: ní féidi ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/gd/viewer.ftl b/l10n/gd/viewer.ftl index a3d62a0fd3ad9..5c1abc03d1bd7 100644 --- a/l10n/gd/viewer.ftl +++ b/l10n/gd/viewer.ftl @@ -311,3 +311,6 @@ pdfjs-ink-canvas = ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/gl/viewer.ftl b/l10n/gl/viewer.ftl index 641a6075bce99..28e10b06a8ed8 100644 --- a/l10n/gl/viewer.ftl +++ b/l10n/gl/viewer.ftl @@ -328,7 +328,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Texto alternativo pdfjs-editor-alt-text-edit-button-label = Editar o texto alternativo pdfjs-editor-alt-text-dialog-label = Escoller unha opción @@ -383,3 +382,6 @@ pdfjs-editor-resizer-middle-left = ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/gu-IN/viewer.ftl b/l10n/gu-IN/viewer.ftl index 5d8bb549f3125..1bc278d4ddfc3 100644 --- a/l10n/gu-IN/viewer.ftl +++ b/l10n/gu-IN/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = વેબ ફોન્ટ નિષ્ક્રિય ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index 08308c0be4e47..2f04851854f21 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -293,7 +293,7 @@ pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", tim ## Password pdfjs-password-label = נא להכניס את הססמה לפתיחת קובץ PDF זה. -pdfjs-password-invalid = ססמה שגויה. נא לנסות שנית. +pdfjs-password-invalid = ססמה שגויה. נא לנסות שוב. pdfjs-password-ok-button = אישור pdfjs-password-cancel-button = ביטול pdfjs-web-fonts-disabled = גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים. diff --git a/l10n/hi-IN/viewer.ftl b/l10n/hi-IN/viewer.ftl index b6f378f6919ab..e90fabc1c3ab5 100644 --- a/l10n/hi-IN/viewer.ftl +++ b/l10n/hi-IN/viewer.ftl @@ -265,3 +265,6 @@ pdfjs-editor-free-text-color-input = रंग ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index c081c6f42a498..c97831df9c2ee 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -345,6 +345,10 @@ pdfjs-editor-stamp-add-image-button-label = Dodaj sliku pdfjs-editor-free-highlight-thickness-input = Debljina pdfjs-editor-free-highlight-thickness-title = .title = Promjeni debljinu pri isticanju drugih stavki osim teksta +# .default-content is used as a placeholder in an empty text editor. +pdfjs-free-text2 = + .aria-label = Uređivač teksta + .default-content = Počni tipkati … pdfjs-free-text = .aria-label = Uređivač teksta pdfjs-free-text-default-content = Počni tipkati … @@ -356,6 +360,8 @@ pdfjs-ink-canvas = ## Alt-text dialog pdfjs-editor-alt-text-button-label = Alternativni tekst +pdfjs-editor-alt-text-edit-button = + .aria-label = Uredi alternativni tekst pdfjs-editor-alt-text-edit-button-label = Uredi alternativni tekst pdfjs-editor-alt-text-dialog-label = Odaberi jednu opciju pdfjs-editor-alt-text-dialog-description = Alternativni tekst pomaže slijepim osobama ili kada se slika ne učita. @@ -369,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Označeno kao ukrasno # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Na primjer, „Mladić sjeda za stol kako bi jeo” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Alternativni tekst ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -427,20 +436,35 @@ pdfjs-editor-highlight-show-all-button = ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = Uredi alternativni tekst (opis slike) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = Dodaj alternativni tekst (opis slike) pdfjs-editor-new-alt-text-textarea = .placeholder = Ovdje upiši tvoj opis … +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Kratki opis koji pomažu osobama koji ne mogu vidjeti sliku ili kada se slika ne učita. # This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. pdfjs-editor-new-alt-text-disclaimer1 = Ovaj je alternativni tekst stvoren automatski i može biti netočan. pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saznaj više pdfjs-editor-new-alt-text-create-automatically-button-label = Automatski stvori alternativni tekst +pdfjs-editor-new-alt-text-not-now-button = Ne sada pdfjs-editor-new-alt-text-error-title = Nije bilo moguće automatski izraditi alternativni tekst +pdfjs-editor-new-alt-text-error-description = Napiši vlastiti alternativni tekst ili pokušaj kasnije ponovo. +pdfjs-editor-new-alt-text-error-close-button = Zatvori # Variables: # $totalSize (Number) - the total size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) .aria-valuetext = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Alternativni tekst je dodan pdfjs-editor-new-alt-text-added-button-label = Alternativni tekst je dodan +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Nedostaje alternativni tekst pdfjs-editor-new-alt-text-missing-button-label = Nedostaje alternativni tekst # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. pdfjs-editor-new-alt-text-to-review-button = @@ -471,3 +495,24 @@ pdfjs-editor-alt-text-settings-editor-title = Uređivač alternativnog teksta pdfjs-editor-alt-text-settings-show-dialog-button-label = Prikaži uređivač alternativnog teksta odmah pri dodavanju slike pdfjs-editor-alt-text-settings-show-dialog-description = Pomaže osigurati da sve tvoje slike imaju alternativni tekst. pdfjs-editor-alt-text-settings-close-button = Zatvori + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Isticanje uklonjeno +pdfjs-editor-undo-bar-message-freetext = Tekst uklonjen +pdfjs-editor-undo-bar-message-ink = Crtež uklonjen +pdfjs-editor-undo-bar-message-stamp = Slika uklonjena +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } pribilješka uklonjena + [few] { $count } pribilješke uklonjene + *[other] { $count } pribilješki uklonjeno + } +pdfjs-editor-undo-bar-undo-button = + .title = Poništi +pdfjs-editor-undo-bar-undo-button-label = Poništi +pdfjs-editor-undo-bar-close-button = + .title = Zatvori +pdfjs-editor-undo-bar-close-button-label = Zatvori diff --git a/l10n/hy-AM/viewer.ftl b/l10n/hy-AM/viewer.ftl index 5c9dd27b180a6..b89932fb5ee6c 100644 --- a/l10n/hy-AM/viewer.ftl +++ b/l10n/hy-AM/viewer.ftl @@ -270,3 +270,13 @@ pdfjs-free-text-default-content = Սկսել մուտքագրումը… pdfjs-editor-highlight-show-all-button-label = Ցուցադրել բոլորը pdfjs-editor-highlight-show-all-button = .title = Ցուցադրել բոլորը + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/hye/viewer.ftl b/l10n/hye/viewer.ftl index 75cdc06431cbd..3ac911c094013 100644 --- a/l10n/hye/viewer.ftl +++ b/l10n/hye/viewer.ftl @@ -260,9 +260,32 @@ pdfjs-web-fonts-disabled = Վեբ-տառատեսակները անջատուած ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/id/viewer.ftl b/l10n/id/viewer.ftl index c985a33fee110..bbc475b1f7241 100644 --- a/l10n/id/viewer.ftl +++ b/l10n/id/viewer.ftl @@ -354,21 +354,150 @@ pdfjs-editor-alt-text-edit-button = .aria-label = Edit teks alternatif pdfjs-editor-alt-text-edit-button-label = Edit teks alternatif pdfjs-editor-alt-text-dialog-label = Pilih opsi +pdfjs-editor-alt-text-dialog-description = Teks alternatif membantu ketika orang tidak dapat melihat gambar atau ketika tidak termuat. +pdfjs-editor-alt-text-add-description-label = Tambahkan deskripsi +pdfjs-editor-alt-text-add-description-description = Upayakan 1-2 kalimat yang menggambarkan subjek, latar, atau tindakan. +pdfjs-editor-alt-text-mark-decorative-label = Tandai sebagai dekoratif +pdfjs-editor-alt-text-mark-decorative-description = Ini digunakan untuk gambar hias, seperti batas atau tanda air. +pdfjs-editor-alt-text-cancel-button = Batal +pdfjs-editor-alt-text-save-button = Simpan +pdfjs-editor-alt-text-decorative-tooltip = Ditandai sebagai dekoratif +# .placeholder: This is a placeholder for the alt text input area +pdfjs-editor-alt-text-textarea = + .placeholder = Misalnya, “Seorang pemuda duduk di meja untuk makan” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Teks alternatif ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. +pdfjs-editor-resizer-label-top-left = Pojok kiri atas — ubah ukuran +pdfjs-editor-resizer-label-top-middle = Tengah atas — ubah ukuran +pdfjs-editor-resizer-label-top-right = Pojok kanan atas — ubah ukuran +pdfjs-editor-resizer-label-middle-right = Kanan tengah — ubah ukuran +pdfjs-editor-resizer-label-bottom-right = Pojok kanan bawah — ubah ukuran +pdfjs-editor-resizer-label-bottom-middle = Tengah bawah — ubah ukuran +pdfjs-editor-resizer-label-bottom-left = Pojok kiri bawah — ubah ukuran +pdfjs-editor-resizer-label-middle-left = Kiri tengah — ubah ukuran +pdfjs-editor-resizer-top-left = + .aria-label = Pojok kiri atas — ubah ukuran +pdfjs-editor-resizer-top-middle = + .aria-label = Tengah atas — ubah ukuran +pdfjs-editor-resizer-top-right = + .aria-label = Pojok kanan atas — ubah ukuran +pdfjs-editor-resizer-middle-right = + .aria-label = Kanan tengah — ubah ukuran +pdfjs-editor-resizer-bottom-right = + .aria-label = Pojok kanan bawah — ubah ukuran +pdfjs-editor-resizer-bottom-middle = + .aria-label = Tengah bawah — ubah ukuran +pdfjs-editor-resizer-bottom-left = + .aria-label = Pojok kiri bawah — ubah ukuran +pdfjs-editor-resizer-middle-left = + .aria-label = Kiri tengah — ubah ukuran ## Color picker +# This means "Color used to highlight text" +pdfjs-editor-highlight-colorpicker-label = Warna sorot +pdfjs-editor-colorpicker-button = + .title = Ubah warna +pdfjs-editor-colorpicker-dropdown = + .aria-label = Pilihan warna +pdfjs-editor-colorpicker-yellow = + .title = Kuning +pdfjs-editor-colorpicker-green = + .title = Hijau +pdfjs-editor-colorpicker-blue = + .title = Biru +pdfjs-editor-colorpicker-pink = + .title = Merah Jambu +pdfjs-editor-colorpicker-red = + .title = Merah ## Show all highlights ## This is a toggle button to show/hide all the highlights. +pdfjs-editor-highlight-show-all-button-label = Tampilkan semua +pdfjs-editor-highlight-show-all-button = + .title = Tampilkan semua ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. +# Modal header positioned above a text box where users can edit the alt text. +pdfjs-editor-new-alt-text-dialog-edit-label = Edit teks alternatif (deskripsi gambar) +# Modal header positioned above a text box where users can add the alt text. +pdfjs-editor-new-alt-text-dialog-add-label = Tambahkan teks alternatif (deskripsi gambar) +pdfjs-editor-new-alt-text-textarea = + .placeholder = Tulis deskripsi Anda di sini… +# This text refers to the alt text box above this description. It offers a definition of alt text. +pdfjs-editor-new-alt-text-description = Deskripsi singkat untuk orang yang tidak dapat melihat gambar atau saat gambar tidak termuat. +# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. +pdfjs-editor-new-alt-text-disclaimer1 = Teks alternatif ini dibuat secara otomatis dan mungkin tidak akurat. +pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Pelajari lebih lanjut +pdfjs-editor-new-alt-text-create-automatically-button-label = Buat teks alternatif secara otomatis +pdfjs-editor-new-alt-text-not-now-button = Jangan sekarang +pdfjs-editor-new-alt-text-error-title = Tidak bisa membuat teks alternatif secara otomatis +pdfjs-editor-new-alt-text-error-description = Silakan tulis teks alternatif Anda sendiri atau coba lagi nanti. +pdfjs-editor-new-alt-text-error-close-button = Tutup +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +# $downloadedSize (Number) - the downloaded size (in MB) of the AI model. +# $percent (Number) - the percentage of the downloaded size. +pdfjs-editor-new-alt-text-ai-model-downloading-progress = Mengunduh model AI teks alternatif ({ $downloadedSize } dari { $totalSize } MB) + .aria-valuetext = Mengunduh model AI teks alternatif ({ $downloadedSize } dari { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Teks alternatif ditambahkan +pdfjs-editor-new-alt-text-added-button-label = Teks alternatif ditambahkan +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Teks alternatif hilang +pdfjs-editor-new-alt-text-missing-button-label = Teks alternatif hilang +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Tinjau teks alternatif +pdfjs-editor-new-alt-text-to-review-button-label = Tinjau teks alternatif +# "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. +# Variables: +# $generatedAltText (String) - the generated alt-text. +pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Dibuat secara otomatis: { $generatedAltText } ## Image alt-text settings +pdfjs-image-alt-text-settings-button = + .title = Pengaturan teks alternatif gambar +pdfjs-image-alt-text-settings-button-label = Pengaturan teks alternatif gambar +pdfjs-editor-alt-text-settings-dialog-label = Pengaturan teks alternatif gambar +pdfjs-editor-alt-text-settings-automatic-title = Teks alternatif otomatis +pdfjs-editor-alt-text-settings-create-model-button-label = Buat teks alternatif secara otomatis +pdfjs-editor-alt-text-settings-create-model-description = Menyarankan deskripsi untuk membantu orang yang tidak dapat melihat gambar atau ketika gambar tidak termuat. +# Variables: +# $totalSize (Number) - the total size (in MB) of the AI model. +pdfjs-editor-alt-text-settings-download-model-label = Model AI teks alternatif ({ $totalSize } MB) +pdfjs-editor-alt-text-settings-ai-model-description = Berjalan secara lokal di perangkat Anda sehingga data Anda tetap pribadi. Diperlukan untuk teks alternatif otomatis. +pdfjs-editor-alt-text-settings-delete-model-button = Hapus +pdfjs-editor-alt-text-settings-download-model-button = Unduh +pdfjs-editor-alt-text-settings-downloading-model-button = Mengunduh… +pdfjs-editor-alt-text-settings-editor-title = Editor teks alternatif +pdfjs-editor-alt-text-settings-show-dialog-button-label = Tampilkan editor teks alternatif segera saat menambahkan gambar +pdfjs-editor-alt-text-settings-show-dialog-description = Membantu Anda memastikan semua gambar Anda memiliki teks alternatif. +pdfjs-editor-alt-text-settings-close-button = Tutup + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-message-highlight = Sorotan dihapus +pdfjs-editor-undo-bar-message-freetext = Teks dihapus +pdfjs-editor-undo-bar-message-ink = Gambar dihapus +pdfjs-editor-undo-bar-message-stamp = Gambar dihapus +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = { $count } anotasi dihapus +pdfjs-editor-undo-bar-undo-button = + .title = Urungkan +pdfjs-editor-undo-bar-undo-button-label = Urungkan +pdfjs-editor-undo-bar-close-button = + .title = Tutup +pdfjs-editor-undo-bar-close-button-label = Tutup diff --git a/l10n/kab/viewer.ftl b/l10n/kab/viewer.ftl index dda88c1e315ac..50f3b9e882372 100644 --- a/l10n/kab/viewer.ftl +++ b/l10n/kab/viewer.ftl @@ -353,7 +353,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Aḍris amaskal pdfjs-editor-alt-text-edit-button-label = Ẓreg aḍris amaskal pdfjs-editor-alt-text-dialog-label = Fren taxtirt @@ -436,3 +435,6 @@ pdfjs-editor-alt-text-settings-delete-model-button = Kkes pdfjs-editor-alt-text-settings-download-model-button = Sader pdfjs-editor-alt-text-settings-downloading-model-button = Asader… pdfjs-editor-alt-text-settings-close-button = Mdel + +## "Annotations removed" bar + diff --git a/l10n/km/viewer.ftl b/l10n/km/viewer.ftl index 6efd105460f5f..c4362b9dc6aaa 100644 --- a/l10n/km/viewer.ftl +++ b/l10n/km/viewer.ftl @@ -215,9 +215,32 @@ pdfjs-web-fonts-disabled = បាន​បិទ​ពុម្ពអក្ស ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/kn/viewer.ftl b/l10n/kn/viewer.ftl index 03322555e1941..f9d48f7afcd4d 100644 --- a/l10n/kn/viewer.ftl +++ b/l10n/kn/viewer.ftl @@ -205,9 +205,32 @@ pdfjs-web-fonts-disabled = ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/lij/viewer.ftl b/l10n/lij/viewer.ftl index b2941f9f659b5..eb828b5474d04 100644 --- a/l10n/lij/viewer.ftl +++ b/l10n/lij/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = I font do web en dizativæ: inposcibile adeuviâ i ca ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/lo/viewer.ftl b/l10n/lo/viewer.ftl index 557e201527a03..10ffc9edc2b09 100644 --- a/l10n/lo/viewer.ftl +++ b/l10n/lo/viewer.ftl @@ -311,3 +311,6 @@ pdfjs-ink-canvas = ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/lt/viewer.ftl b/l10n/lt/viewer.ftl index a8ee7a08f3745..d2777c85ec4c6 100644 --- a/l10n/lt/viewer.ftl +++ b/l10n/lt/viewer.ftl @@ -260,9 +260,32 @@ pdfjs-web-fonts-disabled = Saityno šriftai išjungti – PDF faile esančių š ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ltg/viewer.ftl b/l10n/ltg/viewer.ftl index d262165450683..f0dbbe2dfc30c 100644 --- a/l10n/ltg/viewer.ftl +++ b/l10n/ltg/viewer.ftl @@ -238,9 +238,32 @@ pdfjs-web-fonts-disabled = Šķārsteikla fonti nav aktivizāti: Navar īgult PD ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/lv/viewer.ftl b/l10n/lv/viewer.ftl index 067dc105e659c..aba51a823af3b 100644 --- a/l10n/lv/viewer.ftl +++ b/l10n/lv/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fon ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/meh/viewer.ftl b/l10n/meh/viewer.ftl index d8bddc9d543f3..f5161b3fc9630 100644 --- a/l10n/meh/viewer.ftl +++ b/l10n/meh/viewer.ftl @@ -79,9 +79,32 @@ pdfjs-password-cancel-button = Nkuvi-ka ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/mk/viewer.ftl b/l10n/mk/viewer.ftl index 47d24b24091fc..7529732f2d678 100644 --- a/l10n/mk/viewer.ftl +++ b/l10n/mk/viewer.ftl @@ -207,9 +207,32 @@ pdfjs-web-fonts-disabled = Интернет фонтовите се оневоз ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/mr/viewer.ftl b/l10n/mr/viewer.ftl index 49948b1938a14..dbef75e588bf4 100644 --- a/l10n/mr/viewer.ftl +++ b/l10n/mr/viewer.ftl @@ -231,9 +231,32 @@ pdfjs-web-fonts-disabled = वेब टंक असमर्थीत आह ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ms/viewer.ftl b/l10n/ms/viewer.ftl index 11b866514144a..1419b6e3cf92c 100644 --- a/l10n/ms/viewer.ftl +++ b/l10n/ms/viewer.ftl @@ -239,9 +239,32 @@ pdfjs-web-fonts-disabled = Fon web dinyahdayakan: tidak dapat menggunakan fon te ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/my/viewer.ftl b/l10n/my/viewer.ftl index d3b973d87f18a..0b045cd41cf9c 100644 --- a/l10n/my/viewer.ftl +++ b/l10n/my/viewer.ftl @@ -198,9 +198,32 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/nb-NO/viewer.ftl b/l10n/nb-NO/viewer.ftl index a6441571d124a..b038670f9ff26 100644 --- a/l10n/nb-NO/viewer.ftl +++ b/l10n/nb-NO/viewer.ftl @@ -493,3 +493,12 @@ pdfjs-editor-alt-text-settings-editor-title = Alternativ tekst-redigerer pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis alternativ tekst-redigerer direkte når du legger til et bilde pdfjs-editor-alt-text-settings-show-dialog-description = Hjelper deg å sørge for at alle bildene dine har alternativ tekst. pdfjs-editor-alt-text-settings-close-button = Lukk + +## "Annotations removed" bar + +pdfjs-editor-undo-bar-undo-button = + .title = Angre +pdfjs-editor-undo-bar-undo-button-label = Angre +pdfjs-editor-undo-bar-close-button = + .title = Lukk +pdfjs-editor-undo-bar-close-button-label = Lukk diff --git a/l10n/ne-NP/viewer.ftl b/l10n/ne-NP/viewer.ftl index 65193b6e8cd3a..79de63bd63932 100644 --- a/l10n/ne-NP/viewer.ftl +++ b/l10n/ne-NP/viewer.ftl @@ -226,9 +226,32 @@ pdfjs-web-fonts-disabled = वेब फन्ट असक्षम छन्: ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index d617e16afec38..e8acedac0950e 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -496,3 +496,9 @@ pdfjs-editor-alt-text-settings-close-button = Lat att ## "Annotations removed" bar +pdfjs-editor-undo-bar-undo-button = + .title = Angre +pdfjs-editor-undo-bar-undo-button-label = Angre +pdfjs-editor-undo-bar-close-button = + .title = Lat att +pdfjs-editor-undo-bar-close-button-label = Lat att diff --git a/l10n/ro/viewer.ftl b/l10n/ro/viewer.ftl index 7c6f0b6a33d71..17f9c4363acd0 100644 --- a/l10n/ro/viewer.ftl +++ b/l10n/ro/viewer.ftl @@ -243,9 +243,32 @@ pdfjs-web-fonts-disabled = Fonturile web sunt dezactivate: nu se pot folosi font ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/sat/viewer.ftl b/l10n/sat/viewer.ftl index 2fbbc123cee50..90773f790678f 100644 --- a/l10n/sat/viewer.ftl +++ b/l10n/sat/viewer.ftl @@ -323,3 +323,6 @@ pdfjs-ink-canvas = ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/sc/viewer.ftl b/l10n/sc/viewer.ftl index 1137c2bb083f8..feae3a0226daf 100644 --- a/l10n/sc/viewer.ftl +++ b/l10n/sc/viewer.ftl @@ -301,7 +301,6 @@ pdfjs-ink-canvas = ## Alt-text dialog -# Alternative text (alt text) helps when people can't see the image. pdfjs-editor-alt-text-button-label = Testu alternativu pdfjs-editor-alt-text-edit-button-label = Modifica su testu alternativu pdfjs-editor-alt-text-dialog-label = Sèbera un’optzione @@ -336,9 +335,7 @@ pdfjs-editor-colorpicker-pink = ## New alt-text dialog ## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. -# This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button-label = Mancat su testu alternativu -# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. pdfjs-editor-new-alt-text-to-review-button-label = Revisiona su testu alternativu # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -365,3 +362,6 @@ pdfjs-editor-alt-text-settings-editor-title = Editore de testu alternativu pdfjs-editor-alt-text-settings-show-dialog-button-label = Mustra deretu s’editore de testu alternativu cando siat agiunta un’immàgine pdfjs-editor-alt-text-settings-show-dialog-description = T’agiudat a assegurare chi totu is immàgines tuas tèngiant unu testu alternativu. pdfjs-editor-alt-text-settings-close-button = Serra + +## "Annotations removed" bar + diff --git a/l10n/scn/viewer.ftl b/l10n/scn/viewer.ftl index a3c7c038c0927..d45b9004bbf49 100644 --- a/l10n/scn/viewer.ftl +++ b/l10n/scn/viewer.ftl @@ -66,9 +66,32 @@ pdfjs-password-cancel-button = Sfai ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/sco/viewer.ftl b/l10n/sco/viewer.ftl index 6f71c47a3ff91..aa6f9b2c8d17f 100644 --- a/l10n/sco/viewer.ftl +++ b/l10n/sco/viewer.ftl @@ -256,9 +256,32 @@ pdfjs-web-fonts-disabled = Wab fonts are disabled: cannae yaise embeddit PDF fon ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/si/viewer.ftl b/l10n/si/viewer.ftl index 0481116099ae2..b41e2e1e26efc 100644 --- a/l10n/si/viewer.ftl +++ b/l10n/si/viewer.ftl @@ -269,3 +269,6 @@ pdfjs-editor-alt-text-mark-decorative-description = මෙය දාර හෝ ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/son/viewer.ftl b/l10n/son/viewer.ftl index fa4f6b1fc1403..d8adf9c8ee225 100644 --- a/l10n/son/viewer.ftl +++ b/l10n/son/viewer.ftl @@ -198,9 +198,32 @@ pdfjs-web-fonts-disabled = Interneti šigirawey kay: ši hin ka goy nda PDF šig ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/sr/viewer.ftl b/l10n/sr/viewer.ftl index e125dfb89b177..534c6686cb20a 100644 --- a/l10n/sr/viewer.ftl +++ b/l10n/sr/viewer.ftl @@ -419,3 +419,6 @@ pdfjs-editor-new-alt-text-not-now-button = Не сада ## Image alt-text settings + +## "Annotations removed" bar + diff --git a/l10n/szl/viewer.ftl b/l10n/szl/viewer.ftl index cbf166e452569..cefa4e6782e39 100644 --- a/l10n/szl/viewer.ftl +++ b/l10n/szl/viewer.ftl @@ -249,9 +249,32 @@ pdfjs-web-fonts-disabled = Necowe fōnty sōm zastawiōne: niy idzie użyć wklu ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ta/viewer.ftl b/l10n/ta/viewer.ftl index 82cf19703753c..48a692201c75f 100644 --- a/l10n/ta/viewer.ftl +++ b/l10n/ta/viewer.ftl @@ -215,9 +215,32 @@ pdfjs-web-fonts-disabled = வலை எழுத்துருக்கள் ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/te/viewer.ftl b/l10n/te/viewer.ftl index 94dc2b8eef22d..37b5ba52a6795 100644 --- a/l10n/te/viewer.ftl +++ b/l10n/te/viewer.ftl @@ -224,6 +224,12 @@ pdfjs-web-fonts-disabled = వెబ్ ఫాంట్లు అచేతని ## Editing + +## Remove button for the various kind of editor. + + +## + # Editor Parameters pdfjs-editor-free-text-color-input = రంగు pdfjs-editor-free-text-size-input = పరిమాణం @@ -237,3 +243,20 @@ pdfjs-editor-ink-opacity-input = అకిరణ్యత ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/tl/viewer.ftl b/l10n/tl/viewer.ftl index faa0009bd4db3..6daa6103851c8 100644 --- a/l10n/tl/viewer.ftl +++ b/l10n/tl/viewer.ftl @@ -249,9 +249,32 @@ pdfjs-web-fonts-disabled = Naka-disable ang mga Web font: hindi kayang gamitin a ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/trs/viewer.ftl b/l10n/trs/viewer.ftl index aba3c72a93f25..6bc0307ebdd2a 100644 --- a/l10n/trs/viewer.ftl +++ b/l10n/trs/viewer.ftl @@ -189,9 +189,32 @@ pdfjs-password-cancel-button = Duyichin' ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/ur/viewer.ftl b/l10n/ur/viewer.ftl index c15f157e78b73..981217796ab59 100644 --- a/l10n/ur/viewer.ftl +++ b/l10n/ur/viewer.ftl @@ -240,9 +240,32 @@ pdfjs-web-fonts-disabled = ویب فانٹ نا اہل ہیں: شامل PDF فا ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/uz/viewer.ftl b/l10n/uz/viewer.ftl index fb82f22d41c5e..e22cf7a71c7d3 100644 --- a/l10n/uz/viewer.ftl +++ b/l10n/uz/viewer.ftl @@ -179,9 +179,32 @@ pdfjs-web-fonts-disabled = Veb shriftlar oʻchirilgan: ichki PDF shriftlardan fo ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/wo/viewer.ftl b/l10n/wo/viewer.ftl index d66c4591fcd01..5cea775608b2f 100644 --- a/l10n/wo/viewer.ftl +++ b/l10n/wo/viewer.ftl @@ -119,9 +119,32 @@ pdfjs-password-cancel-button = Neenal ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + diff --git a/l10n/xh/viewer.ftl b/l10n/xh/viewer.ftl index 079888733d062..4888b999f5db8 100644 --- a/l10n/xh/viewer.ftl +++ b/l10n/xh/viewer.ftl @@ -204,9 +204,32 @@ pdfjs-web-fonts-disabled = Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa ## Editing +## Remove button for the various kind of editor. + + +## + + ## Alt-text dialog ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. + +## Color picker + + +## Show all highlights +## This is a toggle button to show/hide all the highlights. + + +## New alt-text dialog +## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy. + + +## Image alt-text settings + + +## "Annotations removed" bar + From a94f7538fb8b95a5c4ceaa5c7ece206f2488ce9c Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sat, 1 Feb 2025 19:01:54 +0100 Subject: [PATCH 227/338] Centralize the editor selector definitions in the highlight editor integration tests In most integration tests we already use the pattern of defining the editor selector once and reusing it in the rest of the test, but it's not fully consistent everywhere yet. This commit fixes that for the highlight editor integration tests, which has multiple advantages: - it improves consistency between the various editor integration tests; - it removes duplicate function calls and aligns variable definitions; - it reduces the number of `getEditorSelector` calls that contained hardcoded IDs, which helps to isolate the tests and to simplify follow-up patches. --- test/integration/highlight_editor_spec.mjs | 139 ++++++++++++--------- 1 file changed, 77 insertions(+), 62 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index e0027dde2c47e..c2a5da2934704 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -252,22 +252,22 @@ describe("Highlight Editor", () => { x = rect.x + rect.width / 2; y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(`${getEditorSelector(1)}`); + + const editorSelector = getEditorSelector(1); + await page.waitForSelector(editorSelector); await page.waitForSelector( `.page[data-page-number = "14"] svg.highlightOutline.selected` ); await selectAll(page); await page.waitForSelector( - `${getEditorSelector(1)} .editToolbar button.colorPicker` - ); - await page.click( - `${getEditorSelector(1)} .editToolbar button.colorPicker` + `${editorSelector} .editToolbar button.colorPicker` ); + await page.click(`${editorSelector} .editToolbar button.colorPicker`); await page.waitForSelector( - `${getEditorSelector(1)} .editToolbar button[title = "Green"]` + `${editorSelector} .editToolbar button[title = "Green"]` ); await page.click( - `${getEditorSelector(1)} .editToolbar button[title = "Green"]` + `${editorSelector} .editToolbar button[title = "Green"]` ); await page.waitForSelector( `.page[data-page-number = "14"] svg.highlight[fill = "#53FFBC"]` @@ -489,24 +489,25 @@ describe("Highlight Editor", () => { const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(`${getEditorSelector(0)}`); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await page.waitForSelector( `.page[data-page-number = "1"] svg.highlightOutline.selected` ); - await page.focus(getEditorSelector(0)); + await page.focus(editorSelector); - const xy = await getXY(page, getEditorSelector(0)); + const xy = await getXY(page, editorSelector); for (let i = 0; i < 5; i++) { await kbBigMoveLeft(page); } - expect(await getXY(page, getEditorSelector(0))) + expect(await getXY(page, editorSelector)) .withContext(`In ${browserName}`) .toEqual(xy); for (let i = 0; i < 5; i++) { await kbBigMoveUp(page); } - expect(await getXY(page, getEditorSelector(0))) + expect(await getXY(page, editorSelector)) .withContext(`In ${browserName}`) .toEqual(xy); }) @@ -638,10 +639,8 @@ describe("Highlight Editor", () => { await selectAll(page); - const { width: prevWidth } = await getRect( - page, - getEditorSelector(0) - ); + const editorSelector = getEditorSelector(0); + const { width: prevWidth } = await getRect(page, editorSelector); value = 24; page.evaluate(val => { @@ -661,7 +660,7 @@ describe("Highlight Editor", () => { document.querySelector(sel).getBoundingClientRect().width !== w, {}, prevWidth, - getEditorSelector(0) + editorSelector ); await waitForSerialized(page, 3); @@ -768,7 +767,8 @@ describe("Highlight Editor", () => { await page.mouse.up(); await awaitPromise(clickHandle); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await page.evaluate(() => { window.PDFViewerApplication.rotatePages(90); @@ -778,10 +778,7 @@ describe("Highlight Editor", () => { ); await selectAll(page); - const { width: prevWidth } = await getRect( - page, - getEditorSelector(0) - ); + const { width: prevWidth } = await getRect(page, editorSelector); page.evaluate(val => { window.PDFViewerApplication.eventBus.dispatch( @@ -800,10 +797,10 @@ describe("Highlight Editor", () => { document.querySelector(sel).getBoundingClientRect().width !== w, {}, prevWidth, - getEditorSelector(0) + editorSelector ); - const rectDiv = await getRect(page, getEditorSelector(0)); + const rectDiv = await getRect(page, editorSelector); const rectSVG = await getRect(page, "svg.highlight.free"); expect(Math.abs(rectDiv.x - rectSVG.x) <= 2) @@ -1043,8 +1040,10 @@ describe("Highlight Editor", () => { const x = rect.x + rect.width / 2; const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(`${getEditorSelector(0)}`); - await unselectEditor(page, getEditorSelector(0)); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); + await unselectEditor(page, editorSelector); await setCaretAt( page, @@ -1189,11 +1188,12 @@ describe("Highlight Editor", () => { const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); - await page.focus(`${getEditorSelector(0)} button.delete`); + await page.focus(`${editorSelector} button.delete`); await page.keyboard.press(" "); await waitForSerialized(page, 0); @@ -1225,7 +1225,8 @@ describe("Highlight Editor", () => { { count: 2, delay: 100 } ); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); rect = await getRect(page, ".annotationEditorLayer"); @@ -1241,8 +1242,8 @@ describe("Highlight Editor", () => { "#editorFreeHighlightThickness:not([disabled])" ); - await page.click(getEditorSelector(0)); - await page.waitForSelector(getEditorSelector(0)); + await page.click(editorSelector); + await page.waitForSelector(editorSelector); await page.waitForSelector("#editorFreeHighlightThickness[disabled]"); await switchToHighlight(page, /* disable */ true); @@ -1349,11 +1350,12 @@ describe("Highlight Editor", () => { const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(0)); - await page.focus(`${getEditorSelector(0)} button.colorPicker`); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); + await page.focus(`${editorSelector} button.colorPicker`); await page.keyboard.press("Escape"); - await page.focus(`${getEditorSelector(0)}:not(selectedEditor)`); + await page.focus(`${editorSelector}:not(selectedEditor)`); }) ); }); @@ -1384,9 +1386,10 @@ describe("Highlight Editor", () => { await page.mouse.up(); await awaitPromise(clickHandle); - await page.waitForSelector(getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); - const { x: editorX } = await getRect(page, getEditorSelector(0)); + const { x: editorX } = await getRect(page, editorSelector); expect(editorX < rect.x) .withContext(`In ${browserName}`) @@ -1419,7 +1422,9 @@ describe("Highlight Editor", () => { await page.mouse.move(rect.x + 20, rect.y + 120); await page.mouse.up(); await awaitPromise(clickHandle); - await page.waitForSelector(getEditorSelector(0)); + + const firstEditorSelector = getEditorSelector(0); + await page.waitForSelector(firstEditorSelector); rect = await getSpanRectFromText(page, 1, "Languages"); await page.mouse.click( @@ -1427,19 +1432,21 @@ describe("Highlight Editor", () => { rect.y + rect.height / 2, { count: 2, delay: 100 } ); - await page.waitForSelector(getEditorSelector(1)); + + const secondEditorSelector = getEditorSelector(1); + await page.waitForSelector(secondEditorSelector); await page.click("#editorHighlightShowAll"); - await page.waitForSelector(`${getEditorSelector(0)}.hidden`); - await page.waitForSelector(`${getEditorSelector(1)}.hidden`); + await page.waitForSelector(`${firstEditorSelector}.hidden`); + await page.waitForSelector(`${secondEditorSelector}.hidden`); await page.click("#editorHighlightShowAll"); - await page.waitForSelector(`${getEditorSelector(0)}:not(.hidden)`); - await page.waitForSelector(`${getEditorSelector(1)}:not(.hidden)`); + await page.waitForSelector(`${firstEditorSelector}:not(.hidden)`); + await page.waitForSelector(`${secondEditorSelector}:not(.hidden)`); await page.click("#editorHighlightShowAll"); - await page.waitForSelector(`${getEditorSelector(0)}.hidden`); - await page.waitForSelector(`${getEditorSelector(1)}.hidden`); + await page.waitForSelector(`${firstEditorSelector}.hidden`); + await page.waitForSelector(`${secondEditorSelector}.hidden`); const oneToOne = Array.from(new Array(13).keys(), n => n + 2).concat( Array.from(new Array(13).keys(), n => 13 - n) @@ -1454,8 +1461,8 @@ describe("Highlight Editor", () => { } } - await page.waitForSelector(`${getEditorSelector(0)}:not(.hidden)`); - await page.waitForSelector(`${getEditorSelector(1)}:not(.hidden)`); + await page.waitForSelector(`${firstEditorSelector}:not(.hidden)`); + await page.waitForSelector(`${secondEditorSelector}:not(.hidden)`); }) ); }); @@ -1539,8 +1546,10 @@ describe("Highlight Editor", () => { x = rect.x + rect.width / 2; y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(1)); - await page.focus(getEditorSelector(1)); + + const editorSelector = getEditorSelector(1); + await page.waitForSelector(editorSelector); + await page.focus(editorSelector); await kbFocusPrevious(page); await page.waitForSelector( @@ -1548,7 +1557,7 @@ describe("Highlight Editor", () => { ); await kbFocusNext(page); - await page.waitForSelector(`${getEditorSelector(1)}:focus`); + await page.waitForSelector(`${editorSelector}:focus`); }) ); }); @@ -1574,16 +1583,18 @@ describe("Highlight Editor", () => { const x = rect.x + rect.width / 2; const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(0)); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -1618,11 +1629,13 @@ describe("Highlight Editor", () => { const x = rect.x + rect.width / 2; const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(0)); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToFourteen = Array.from(new Array(13).keys(), n => n + 2); @@ -1640,7 +1653,7 @@ describe("Highlight Editor", () => { await scrollIntoView(page, pageSelector); } - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); await page.waitForSelector( `.page[data-page-number = "1"] svg.highlight[fill = "#FFFF00"]` ); @@ -1678,11 +1691,13 @@ describe("Highlight Editor", () => { const x = rect.x + rect.width / 2; const y = rect.y + rect.height / 2; await page.mouse.click(x, y, { count: 2, delay: 100 }); - await page.waitForSelector(getEditorSelector(0)); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToOne = Array.from(new Array(13).keys(), n => n + 2).concat( @@ -1695,7 +1710,7 @@ describe("Highlight Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); await page.waitForSelector( `.page[data-page-number = "1"] svg.highlight[fill = "#FFFF00"]` ); From 74f093a05b58338a84cf27bc0fc5e71dd56eef0d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 2 Feb 2025 10:24:26 +0100 Subject: [PATCH 228/338] Remove the `color-mix` fallback used with PopupAnnotations This CSS feature is now available in *most* browsers that we support, with old Chromium-based browsers being the only exception; please see https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility From this data we see that the feature in question has been supported since Chrome 111, which was released on 2023-03-01 (i.e. almost two years ago). Please note that we've never guaranteed that all features and functionality will be available in the oldest supported browsers. Furthermore, even with the `color-mix` fallback removed PopupAnnotations will still function just as before but may render with the default color (defined in the CSS-file) rather than the one specified in the PDF document. --- src/display/annotation_layer.js | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 7e023c67d6a29..80b083c619ffa 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -2199,23 +2199,7 @@ class PopupElement { const baseColor = (popup.style.outlineColor = Util.makeHexColor( ...this.#color )); - if ( - (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || - CSS.supports("background-color", "color-mix(in srgb, red 30%, white)") - ) { - popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`; - } else { - // color-mix isn't supported in some browsers hence this version. - // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility - // TODO: Use color-mix when it's supported everywhere. - // Enlighten the color. - const BACKGROUND_ENLIGHT = 0.7; - popup.style.backgroundColor = Util.makeHexColor( - ...this.#color.map(c => - Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c) - ) - ); - } + popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`; } const header = document.createElement("span"); From 12a598cf13b375af880ef97b01250f6a9150cdbb Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 2 Feb 2025 16:28:18 +0100 Subject: [PATCH 229/338] Centralize the editor selector definitions in the freetext editor integration tests In most integration tests we already use the pattern of defining the editor selector once and reusing it in the rest of the test, but it's not fully consistent everywhere yet. This commit fixes that for the freetext editor integration tests, which has multiple advantages: - it improves consistency between the various editor integration tests; - it removes duplicate function calls and aligns variable definitions; - it reduces the number of `getEditorSelector` calls that contained hardcoded IDs, which helps to isolate the tests and to simplify follow-up patches. --- test/integration/freetext_editor_spec.mjs | 287 ++++++++++++---------- 1 file changed, 153 insertions(+), 134 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 13afe708d4760..f28c410728bed 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -138,19 +138,19 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); - await waitForSelectedEditor(page, getEditorSelector(0)); + await waitForSelectedEditor(page, editorSelector); await waitForStorageEntries(page, 1); - let content = await page.$eval(getEditorSelector(0), el => + let content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); expect(content).withContext(`In ${browserName}`).toEqual(data); @@ -158,11 +158,11 @@ describe("FreeText Editor", () => { // Edit again. await page.keyboard.press("Enter"); await page.waitForSelector( - `${getEditorSelector(0)} .overlay:not(.enabled)` + `${editorSelector} .overlay:not(.enabled)` ); await commit(page); - content = await page.$eval(getEditorSelector(0), el => + content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); expect(content).withContext(`In ${browserName}`).toEqual(data); @@ -173,19 +173,21 @@ describe("FreeText Editor", () => { it("must copy/paste", async () => { // Run sequentially to avoid clipboard issues. for (const [browserName, page] of pages) { - await selectEditor(page, getEditorSelector(0)); + const firstEditorSelector = getEditorSelector(0); + await selectEditor(page, firstEditorSelector); await copy(page); await paste(page); - await page.waitForSelector(getEditorSelector(1), { + const secondEditorSelector = getEditorSelector(1); + await page.waitForSelector(secondEditorSelector, { visible: true, }); await waitForStorageEntries(page, 2); - const content = await page.$eval(getEditorSelector(0), el => + const content = await page.$eval(firstEditorSelector, el => el.innerText.trimEnd().replaceAll("\xa0", " ") ); - let pastedContent = await page.$eval(getEditorSelector(1), el => + let pastedContent = await page.$eval(secondEditorSelector, el => el.innerText.trimEnd().replaceAll("\xa0", " ") ); @@ -193,12 +195,13 @@ describe("FreeText Editor", () => { await copy(page); await paste(page); - await page.waitForSelector(getEditorSelector(2), { + const thirdEditorSelector = getEditorSelector(2); + await page.waitForSelector(thirdEditorSelector, { visible: true, }); await waitForStorageEntries(page, 3); - pastedContent = await page.$eval(getEditorSelector(2), el => + pastedContent = await page.$eval(thirdEditorSelector, el => el.innerText.trimEnd().replaceAll("\xa0", " ") ); expect(pastedContent).withContext(`In ${browserName}`).toEqual(content); @@ -228,19 +231,20 @@ describe("FreeText Editor", () => { // Run sequentially to avoid clipboard issues. for (const [, page] of pages) { const rect = await getRect(page, ".annotationEditorLayer"); - + let editorSelector = getEditorSelector(3); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(3), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(3)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); - await selectEditor(page, getEditorSelector(3)); + await selectEditor(page, editorSelector); await copy(page); await paste(page); - await page.waitForSelector(getEditorSelector(4), { + editorSelector = getEditorSelector(4); + await page.waitForSelector(editorSelector, { visible: true, }); @@ -248,7 +252,7 @@ describe("FreeText Editor", () => { await page.waitForFunction( sel => !document.querySelector(sel), {}, - getEditorSelector(4) + editorSelector ); for (let i = 0; i < 2; i++) { @@ -289,15 +293,16 @@ describe("FreeText Editor", () => { expect(oldAriaOwns).withContext(`In ${browserName}`).toEqual(null); + const editorSelector = getEditorSelector(7); const data = "Hello PDF.js World !!"; await page.mouse.click( stacksRect.x + stacksRect.width + 1, stacksRect.y + stacksRect.height / 2 ); - await page.waitForSelector(getEditorSelector(7), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(7)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); const ariaOwns = await page.$eval(".textLayer", el => { @@ -320,12 +325,13 @@ describe("FreeText Editor", () => { await clearAll(page); + const editorSelector = getEditorSelector(8); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(8), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(8)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); expect(await getEditors(page, "selected")) @@ -337,7 +343,7 @@ describe("FreeText Editor", () => { () => !document.querySelector(".selectedEditor") ); - await selectEditor(page, getEditorSelector(8)); + await selectEditor(page, editorSelector); expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); @@ -469,15 +475,16 @@ describe("FreeText Editor", () => { const editorCenters = []; let lastX = rect.x + rect.width / 10; for (let i = 0; i < 4; i++) { + const editorSelector = getEditorSelector(i); const data = `FreeText ${i}`; await page.mouse.click(lastX, rect.y + rect.height / 10); - await page.waitForSelector(getEditorSelector(i), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(i)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); - const editorRect = await getRect(page, getEditorSelector(i)); + const editorRect = await getRect(page, editorSelector); lastX = editorRect.x + editorRect.width + 10; editorCenters.push({ x: editorRect.x + editorRect.width / 2, @@ -645,20 +652,20 @@ describe("FreeText Editor", () => { } const rect = await getRect(page, annotationLayerSelector); - + const editorSelector = getEditorSelector(currentId); const data = `Hello PDF.js World !! on page ${pageNumber}`; expected.push(data); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(currentId), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(currentId)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); - await waitForSelectedEditor(page, getEditorSelector(currentId)); + await waitForSelectedEditor(page, editorSelector); await waitForStorageEntries(page, currentId + 1); - const content = await page.$eval(getEditorSelector(currentId), el => + const content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); expect(content).withContext(`In ${browserName}`).toEqual(data); @@ -778,15 +785,15 @@ describe("FreeText Editor", () => { for (let step = 0; step < 3; step++) { await firstPageOnTop(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(currentId); const data = `Hello ${step}`; const x = Math.max(rect.x + 0.1 * rect.width, 10); const y = Math.max(rect.y + 0.1 * rect.height, 10); await page.mouse.click(x, y); - await page.waitForSelector(getEditorSelector(currentId), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(currentId)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); const promise = await waitForAnnotationEditorLayer(page); @@ -903,19 +910,20 @@ describe("FreeText Editor", () => { let editorIds = await getEditors(page, "freeText"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6); - const editorRect = await getRect(page, getEditorSelector(0)); - await selectEditor(page, getEditorSelector(0), /* count = */ 2); + const editorSelector = getEditorSelector(0); + const editorRect = await getRect(page, editorSelector); + await selectEditor(page, editorSelector, /* count = */ 2); await kbGoToEnd(page); await page.waitForFunction( sel => document.getSelection().anchorOffset === document.querySelector(sel).innerText.length, {}, - `${getEditorSelector(0)} .internal` + `${editorSelector} .internal` ); await page.type( - `${getEditorSelector(0)} .internal`, + `${editorSelector} .internal`, " and edited in Firefox" ); await commit(page); @@ -1079,12 +1087,13 @@ describe("FreeText Editor", () => { let editorIds = await getEditors(page, "freeText"); expect(editorIds.length).withContext(`In ${browserName}`).toEqual(6); - await selectEditor(page, getEditorSelector(3)); + const editorSelector = getEditorSelector(3); + await selectEditor(page, editorSelector); await page.keyboard.press("Backspace"); await page.waitForFunction( sel => !document.querySelector(sel), {}, - getEditorSelector(3) + editorSelector ); const serialized = await getSerialized(page); @@ -1290,13 +1299,13 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); // Make Chrome happy. @@ -1401,13 +1410,13 @@ describe("FreeText Editor", () => { } const rect = await getRect(page, annotationLayerSelector); - + const editorSelector = getEditorSelector(currentId); const data = `Hello PDF.js World !! on page ${pageNumber}`; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(currentId), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(currentId)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); currentId += 1; @@ -1745,13 +1754,13 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); await page.focus("#editorFreeTextColor"); @@ -1760,14 +1769,14 @@ describe("FreeText Editor", () => { await page.waitForFunction( sel => !document.querySelector(sel), {}, - getEditorSelector(0) + editorSelector ); await kbRedo(page); await page.waitForFunction( sel => !!document.querySelector(sel), {}, - getEditorSelector(0) + editorSelector ); }) ); @@ -1964,14 +1973,14 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); - await cancelFocusIn(page, getEditorSelector(0)); + await page.type(`${editorSelector} .internal`, data); + await cancelFocusIn(page, editorSelector); await commit(page); const oneToFourteen = Array.from(new Array(14).keys(), x => x + 1); @@ -2020,58 +2029,60 @@ describe("FreeText Editor", () => { let rect = await getRect(page, ".annotationEditorLayer"); + const firstEditorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(firstEditorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, "A"); + await page.type(`${firstEditorSelector} .internal`, "A"); await commit(page); // Create a new editor. - rect = await getRect(page, getEditorSelector(0)); + rect = await getRect(page, firstEditorSelector); + const secondEditorSelector = getEditorSelector(1); await page.mouse.click( rect.x + 5 * rect.width, rect.y + 5 * rect.height ); - await page.waitForSelector(getEditorSelector(1), { + await page.waitForSelector(secondEditorSelector, { visible: true, }); - await page.type(`${getEditorSelector(1)} .internal`, "B"); + await page.type(`${secondEditorSelector} .internal`, "B"); await commit(page); // Select the second editor. - await selectEditor(page, getEditorSelector(1)); + await selectEditor(page, secondEditorSelector); - const pos = n => + const pos = selector => page.evaluate(sel => { const editor = document.querySelector(sel); return Array.prototype.indexOf.call( editor.parentNode.childNodes, editor ); - }, getEditorSelector(n)); + }, selector); - expect(await pos(0)) + expect(await pos(firstEditorSelector)) .withContext(`In ${browserName}`) .toEqual(0); - expect(await pos(1)) + expect(await pos(secondEditorSelector)) .withContext(`In ${browserName}`) .toEqual(1); - const { y: y0, height } = await getRect(page, getEditorSelector(0)); - const editorSelector = getEditorSelector(1); + const { y: y0, height } = await getRect(page, firstEditorSelector); + const editorSelector = secondEditorSelector; while ((await getRect(page, editorSelector)).y > y0 - height) { await moveEditor(page, editorSelector, 1, () => kbBigMoveUp(page)); } // The editor must be moved in the DOM and potentially the focus // will be lost, hence there's a callback will get back the focus. - await page.waitForSelector(`${getEditorSelector(1)}:focus`); + await page.waitForSelector(`${secondEditorSelector}:focus`); - expect(await pos(0)) + expect(await pos(firstEditorSelector)) .withContext(`In ${browserName}`) .toEqual(1); - expect(await pos(1)) + expect(await pos(secondEditorSelector)) .withContext(`In ${browserName}`) .toEqual(0); }) @@ -2161,14 +2172,14 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); - await cancelFocusIn(page, getEditorSelector(0)); + await page.type(`${editorSelector} .internal`, data); + await cancelFocusIn(page, editorSelector); await commit(page); await page.evaluate(() => { @@ -2216,20 +2227,20 @@ describe("FreeText Editor", () => { const page1Selector = `.page[data-page-number = "1"] > .annotationEditorLayer.freetextEditing`; let rect = await getRect(page, page1Selector); - const editorSelector = getEditorSelector(0); + const firstEditorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(editorSelector, { + await page.waitForSelector(firstEditorSelector, { visible: true, }); - await page.type(`${editorSelector} .internal`, "Hello"); - await cancelFocusIn(page, editorSelector); + await page.type(`${firstEditorSelector} .internal`, "Hello"); + await cancelFocusIn(page, firstEditorSelector); await commit(page); // Unselect. - await unselectEditor(page, editorSelector); + await unselectEditor(page, firstEditorSelector); // Select the editor created previously. - await selectEditor(page, editorSelector); + await selectEditor(page, firstEditorSelector); // Go to the last page. await scrollIntoView(page, `.page[data-page-number = "14"]`); @@ -2241,11 +2252,12 @@ describe("FreeText Editor", () => { }); rect = await getRect(page, page14Selector); + const secondEditorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(getEditorSelector(1), { + await page.waitForSelector(secondEditorSelector, { visible: true, }); - await page.type(`${getEditorSelector(1)} .internal`, "World"); + await page.type(`${secondEditorSelector} .internal`, "World"); await commit(page); for (let i = 0; i < 13; i++) { @@ -2259,11 +2271,11 @@ describe("FreeText Editor", () => { }); } - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(firstEditorSelector, { visible: true, }); - await selectEditor(page, getEditorSelector(0)); - const content = await page.$eval(getEditorSelector(0), el => + await selectEditor(page, firstEditorSelector); + const content = await page.$eval(firstEditorSelector, el => el.innerText.trimEnd() ); expect(content).withContext(`In ${browserName}`).toEqual("Hello"); @@ -2330,7 +2342,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); }) @@ -2355,6 +2367,7 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const parentId = "p3R_mc8"; + const editorSelector = getEditorSelector(0); const rect = await page.evaluate(id => { const parent = document.getElementById(id); let span = null; @@ -2371,10 +2384,10 @@ describe("FreeText Editor", () => { rect.x + rect.width + 5, rect.y + rect.height / 2 ); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, "Hello Wolrd"); + await page.type(`${editorSelector} .internal`, "Hello Wolrd"); await commit(page); await waitForStorageEntries(page, 1); @@ -2403,19 +2416,19 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - const internalEditorSelector = `${getEditorSelector(0)} .internal`; + const internalEditorSelector = `${editorSelector} .internal`; await page.type(internalEditorSelector, data); await commit(page); - await page.click(getEditorSelector(0), { count: 2 }); + await page.click(editorSelector, { count: 2 }); await page.waitForSelector( - `${getEditorSelector(0)} .overlay:not(.enabled)` + `${editorSelector} .overlay:not(.enabled)` ); await page.click(internalEditorSelector, { count: 3, @@ -2482,7 +2495,7 @@ describe("FreeText Editor", () => { // Unselect. await unselectEditor(page, editorSelector); - content = await page.$eval(getEditorSelector(1), el => + content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); @@ -2509,7 +2522,7 @@ describe("FreeText Editor", () => { // Unselect. await unselectEditor(page, editorSelector); - let content = await page.$eval(getEditorSelector(2), el => + let content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); @@ -2558,13 +2571,13 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); let handle = await createPromise(page, resolve => { @@ -2588,7 +2601,7 @@ describe("FreeText Editor", () => { ); expect(content).withContext(`In ${browserName}`).toEqual(""); - content = await page.$eval(getEditorSelector(0), el => + content = await page.$eval(editorSelector, el => el.innerText.trimEnd() ); expect(content).withContext(`In ${browserName}`).toEqual(data); @@ -2614,21 +2627,21 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); // Delete it in using the button. - await page.click(`${getEditorSelector(0)} button.delete`); + await page.click(`${editorSelector} button.delete`); await page.waitForFunction( sel => !document.querySelector(sel), {}, - getEditorSelector(0) + editorSelector ); await waitForStorageEntries(page, 0); @@ -2636,7 +2649,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); }) @@ -2675,17 +2688,18 @@ describe("FreeText Editor", () => { } // Select the editor created previously. - await selectEditor(page, getEditorSelector(0)); + const editorSelector = getEditorSelector(0); + await selectEditor(page, editorSelector); await selectAll(page); // Delete it in using the button. - await page.focus(`${getEditorSelector(0)} button.delete`); + await page.focus(`${editorSelector} button.delete`); await page.keyboard.press("Enter"); await page.waitForFunction( sel => !document.querySelector(sel), {}, - getEditorSelector(0) + editorSelector ); await waitForStorageEntries(page, 0); @@ -2693,7 +2707,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 2); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); @@ -2720,8 +2734,10 @@ describe("FreeText Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToFreeText(page); - await page.click(getEditorSelector(0), { count: 2 }); - await page.type(`${getEditorSelector(0)} .internal`, "C"); + + const editorSelector = getEditorSelector(0); + await page.click(editorSelector, { count: 2 }); + await page.type(`${editorSelector} .internal`, "C"); await switchToFreeText(page, /* disable = */ true); @@ -2749,8 +2765,10 @@ describe("FreeText Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { await switchToFreeText(page); - await page.click(getEditorSelector(0), { count: 2 }); - await page.type(`${getEditorSelector(0)} .internal`, "Z"); + + const editorSelector = getEditorSelector(0); + await page.click(editorSelector, { count: 2 }); + await page.type(`${editorSelector} .internal`, "Z"); await switchToFreeText(page, /* disable = */ true); @@ -2780,13 +2798,13 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello\nPDF.js\nWorld\n!!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -2816,13 +2834,13 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); await page.evaluate(() => { @@ -2919,18 +2937,18 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToFourteen = Array.from(new Array(13).keys(), n => n + 2); @@ -2948,7 +2966,7 @@ describe("FreeText Editor", () => { await scrollIntoView(page, pageSelector); } - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -2971,18 +2989,18 @@ describe("FreeText Editor", () => { await switchToFreeText(page); const rect = await getRect(page, ".annotationEditorLayer"); - + const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(getEditorSelector(0), { + await page.waitForSelector(editorSelector, { visible: true, }); - await page.type(`${getEditorSelector(0)} .internal`, data); + await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); - await page.waitForSelector(`${getEditorSelector(0)} button.delete`); - await page.click(`${getEditorSelector(0)} button.delete`); + await page.waitForSelector(`${editorSelector} button.delete`); + await page.click(`${editorSelector} button.delete`); await waitForSerialized(page, 0); const twoToOne = Array.from(new Array(13).keys(), n => n + 2).concat( @@ -2995,7 +3013,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(getEditorSelector(0)); + await page.waitForSelector(editorSelector); }) ); }); @@ -3393,12 +3411,13 @@ describe("FreeText Editor", () => { await page.waitForSelector("#editorUndoBar:not([hidden])"); rect = await getRect(page, ".annotationEditorLayer"); + const secondEditorSelector = getEditorSelector(1); const newData = "This is a new text box!"; await page.mouse.click(rect.x + 150, rect.y + 150); - await page.waitForSelector(getEditorSelector(1), { + await page.waitForSelector(secondEditorSelector, { visible: true, }); - await page.type(`${getEditorSelector(1)} .internal`, newData); + await page.type(`${secondEditorSelector} .internal`, newData); await commit(page); await waitForSerialized(page, 1); await page.waitForSelector("#editorUndoBar", { hidden: true }); From c48c6d2646d8dbeed95dd1b183243ff1d65e16d4 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 2 Feb 2025 17:02:24 +0100 Subject: [PATCH 230/338] Put `waitForSelector` options on a single line in the editor integration tests This pattern was already followed quite consistently outside of the freetext editor integration tests, so this commit aligns the remaining places for consistency. This also helps to make the tests more compact and to reduce the number of changes in follow-up changes. --- test/integration/freetext_editor_spec.mjs | 245 ++++++--------------- test/integration/highlight_editor_spec.mjs | 4 +- test/integration/stamp_editor_spec.mjs | 4 +- 3 files changed, 64 insertions(+), 189 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index f28c410728bed..a14e107624506 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -141,9 +141,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -178,9 +176,7 @@ describe("FreeText Editor", () => { await copy(page); await paste(page); const secondEditorSelector = getEditorSelector(1); - await page.waitForSelector(secondEditorSelector, { - visible: true, - }); + await page.waitForSelector(secondEditorSelector, { visible: true }); await waitForStorageEntries(page, 2); const content = await page.$eval(firstEditorSelector, el => @@ -196,9 +192,7 @@ describe("FreeText Editor", () => { await copy(page); await paste(page); const thirdEditorSelector = getEditorSelector(2); - await page.waitForSelector(thirdEditorSelector, { - visible: true, - }); + await page.waitForSelector(thirdEditorSelector, { visible: true }); await waitForStorageEntries(page, 3); pastedContent = await page.$eval(thirdEditorSelector, el => @@ -234,9 +228,7 @@ describe("FreeText Editor", () => { let editorSelector = getEditorSelector(3); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -244,9 +236,7 @@ describe("FreeText Editor", () => { await copy(page); await paste(page); editorSelector = getEditorSelector(4); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await kbUndo(page); await page.waitForFunction( @@ -299,9 +289,7 @@ describe("FreeText Editor", () => { stacksRect.x + stacksRect.width + 1, stacksRect.y + stacksRect.height / 2 ); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -328,9 +316,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(8); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -374,9 +360,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(9); await page.mouse.click(rect.x + 200, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); for (let i = 0; i < 5; i++) { await page.type(`${editorSelector} .internal`, "A"); @@ -436,9 +420,7 @@ describe("FreeText Editor", () => { ); await kbRedo(page); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); text = await getText(); expect(text).withContext(`In ${browserName}`).toEqual("A"); @@ -478,9 +460,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(i); const data = `FreeText ${i}`; await page.mouse.click(lastX, rect.y + rect.height / 10); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -524,9 +504,7 @@ describe("FreeText Editor", () => { await copy(page); await paste(page); - await page.waitForSelector(getEditorSelector(6), { - visible: true, - }); + await page.waitForSelector(getEditorSelector(6), { visible: true }); // 0,1,3 are unselected and new pasted editors are selected. expect(await getEditors(page, "selected")) @@ -575,9 +553,7 @@ describe("FreeText Editor", () => { rect.x + (rect.width / 10) * 7, rect.y + rect.height / 10 ); - await page.waitForSelector(getEditorSelector(7), { - visible: true, - }); + await page.waitForSelector(getEditorSelector(7), { visible: true }); expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([7]); @@ -594,9 +570,7 @@ describe("FreeText Editor", () => { rect.x + (rect.width / 10) * 8, rect.y + rect.height / 10 ); - await page.waitForSelector(getEditorSelector(8), { - visible: true, - }); + await page.waitForSelector(getEditorSelector(8), { visible: true }); expect(await getEditors(page, "selected")) .withContext(`In ${browserName}`) .toEqual([8]); @@ -656,9 +630,7 @@ describe("FreeText Editor", () => { const data = `Hello PDF.js World !! on page ${pageNumber}`; expected.push(data); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -790,9 +762,7 @@ describe("FreeText Editor", () => { const x = Math.max(rect.x + 0.1 * rect.width, 10); const y = Math.max(rect.y + 0.1 * rect.height, 10); await page.mouse.click(x, y); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -999,15 +969,12 @@ describe("FreeText Editor", () => { await Promise.all( pages.map(async ([browserName, page]) => { // Show the popup on "Hello World from Firefox" - await page.click(`[data-annotation-id='32R']`); - await page.waitForSelector(`[data-annotation-id='popup_32R']`, { - visible: true, - }); + await page.click("[data-annotation-id='32R']"); + const popupSelector = "[data-annotation-id='popup_32R']"; + await page.waitForSelector(popupSelector, { visible: true }); await switchToFreeText(page); - await page.waitForSelector(`[data-annotation-id='popup_32R']`, { - visible: false, - }); + await page.waitForSelector(popupSelector, { visible: false }); const editorSelector = getEditorSelector(1); await selectEditor(page, editorSelector, /* count = */ 2); @@ -1028,13 +995,10 @@ describe("FreeText Editor", () => { // Disable editing mode. await switchToFreeText(page, /* disable = */ true); - - await page.waitForSelector(`[data-annotation-id='popup_32R']`, { - visible: true, - }); + await page.waitForSelector(popupSelector, { visible: true }); const newPopupText = await page.$eval( - "[data-annotation-id='popup_32R'] .popupContent", + `${popupSelector} .popupContent`, el => el.innerText.replaceAll("\xa0", " ") ); expect(newPopupText) @@ -1151,9 +1115,7 @@ describe("FreeText Editor", () => { await selectEditor(page, getEditorSelector(1)); await copy(page); await paste(page); - await page.waitForSelector(getEditorSelector(6), { - visible: true, - }); + await page.waitForSelector(getEditorSelector(6), { visible: true }); await waitForStorageEntries(page, 7); } }); @@ -1302,9 +1264,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -1413,9 +1373,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(currentId); const data = `Hello PDF.js World !! on page ${pageNumber}`; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -1757,9 +1715,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -1804,9 +1760,7 @@ describe("FreeText Editor", () => { const data = "Hello PDF.js World !!"; const editorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 200, rect.y + 200); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -1898,9 +1852,7 @@ describe("FreeText Editor", () => { const data = "Hello PDF.js World !!"; let editorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -1909,9 +1861,7 @@ describe("FreeText Editor", () => { await clearAll(page); editorSelector = getEditorSelector(2); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await moveEditor(page, editorSelector, 20, () => page.keyboard.press("ArrowRight") @@ -1976,9 +1926,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await cancelFocusIn(page, editorSelector); await commit(page); @@ -2031,9 +1979,7 @@ describe("FreeText Editor", () => { const firstEditorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(firstEditorSelector, { - visible: true, - }); + await page.waitForSelector(firstEditorSelector, { visible: true }); await page.type(`${firstEditorSelector} .internal`, "A"); await commit(page); @@ -2044,9 +1990,7 @@ describe("FreeText Editor", () => { rect.x + 5 * rect.width, rect.y + 5 * rect.height ); - await page.waitForSelector(secondEditorSelector, { - visible: true, - }); + await page.waitForSelector(secondEditorSelector, { visible: true }); await page.type(`${secondEditorSelector} .internal`, "B"); await commit(page); @@ -2113,9 +2057,7 @@ describe("FreeText Editor", () => { for (let i = 0; i < 10; i++) { const editorSelector = getEditorSelector(i); await page.mouse.click(rect.x + 10 + 30 * i, rect.y + 100 + 5 * i); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type( `${editorSelector} .internal`, String.fromCharCode(65 + i) @@ -2175,9 +2117,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await cancelFocusIn(page, editorSelector); await commit(page); @@ -2229,9 +2169,7 @@ describe("FreeText Editor", () => { let rect = await getRect(page, page1Selector); const firstEditorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(firstEditorSelector, { - visible: true, - }); + await page.waitForSelector(firstEditorSelector, { visible: true }); await page.type(`${firstEditorSelector} .internal`, "Hello"); await cancelFocusIn(page, firstEditorSelector); await commit(page); @@ -2254,9 +2192,7 @@ describe("FreeText Editor", () => { rect = await getRect(page, page14Selector); const secondEditorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(secondEditorSelector, { - visible: true, - }); + await page.waitForSelector(secondEditorSelector, { visible: true }); await page.type(`${secondEditorSelector} .internal`, "World"); await commit(page); @@ -2271,9 +2207,7 @@ describe("FreeText Editor", () => { }); } - await page.waitForSelector(firstEditorSelector, { - visible: true, - }); + await page.waitForSelector(firstEditorSelector, { visible: true }); await selectEditor(page, firstEditorSelector); const content = await page.$eval(firstEditorSelector, el => el.innerText.trimEnd() @@ -2304,9 +2238,7 @@ describe("FreeText Editor", () => { const rect = await getRect(page, page1Selector); const editorSelector = getEditorSelector(0); await page.mouse.click(rect.x + 10, rect.y + 10); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, "Hello"); await cancelFocusIn(page, editorSelector); await commit(page); @@ -2321,10 +2253,7 @@ describe("FreeText Editor", () => { await scrollIntoView(page, `.page[data-page-number = "14"]`); await page.waitForSelector( `.page[data-page-number = "14"] > .annotationEditorLayer.freetextEditing`, - { - visible: true, - timeout: 0, - } + { visible: true, timeout: 0 } ); await clearAll(page); @@ -2342,9 +2271,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); }) ); }); @@ -2384,9 +2311,7 @@ describe("FreeText Editor", () => { rect.x + rect.width + 5, rect.y + rect.height / 2 ); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, "Hello Wolrd"); await commit(page); @@ -2419,9 +2344,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); const internalEditorSelector = `${editorSelector} .internal`; await page.type(internalEditorSelector, data); await commit(page); @@ -2461,9 +2384,7 @@ describe("FreeText Editor", () => { await page.keyboard.press("Enter"); let editorSelector = getEditorSelector(0); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await moveEditor(page, editorSelector, 5, () => kbBigMoveUp(page)); @@ -2483,9 +2404,7 @@ describe("FreeText Editor", () => { await page.focus("#editorFreeTextButton"); await page.keyboard.press(" "); editorSelector = getEditorSelector(1); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await moveEditor(page, editorSelector, 5, () => kbBigMoveDown(page)); @@ -2509,9 +2428,7 @@ describe("FreeText Editor", () => { pages.map(async ([browserName, page]) => { await page.keyboard.press("Enter"); let editorSelector = getEditorSelector(2); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await moveEditor(page, editorSelector, 10, () => kbBigMoveLeft(page)); @@ -2530,9 +2447,7 @@ describe("FreeText Editor", () => { await page.keyboard.press(" "); editorSelector = getEditorSelector(3); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await moveEditor(page, editorSelector, 10, () => kbBigMoveRight(page) @@ -2574,9 +2489,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -2630,9 +2543,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -2649,9 +2560,7 @@ describe("FreeText Editor", () => { await kbUndo(page); await waitForSerialized(page, 1); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); }) ); }); @@ -2680,9 +2589,7 @@ describe("FreeText Editor", () => { for (let i = 1; i <= 2; i++) { const editorSelector = getEditorSelector(i - 1); await page.mouse.click(rect.x + i * 100, rect.y + i * 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); } @@ -2706,14 +2613,8 @@ describe("FreeText Editor", () => { // Undo. await kbUndo(page); await waitForSerialized(page, 2); - - await page.waitForSelector(editorSelector, { - visible: true, - }); - - await page.waitForSelector(getEditorSelector(1), { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector(getEditorSelector(1), { visible: true }); }) ); }); @@ -2801,9 +2702,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello\nPDF.js\nWorld\n!!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -2837,9 +2736,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -2940,9 +2837,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -2992,9 +2887,7 @@ describe("FreeText Editor", () => { const editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -3040,9 +2933,7 @@ describe("FreeText Editor", () => { let editorSelector = getEditorSelector(0); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); @@ -3128,9 +3019,7 @@ describe("FreeText Editor", () => { editorSelector = getEditorSelector(1); await page.mouse.click(rect.x + 200, rect.y + 200); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); const fooBar = "Foo\nBar\nOof"; await copyToClipboard(page, { @@ -3297,9 +3186,7 @@ describe("FreeText Editor", () => { const data = "Hello\nPDF.js\nWorld\n!!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); for (const line of data.split("\n")) { await page.type(`${editorSelector} .internal`, line); await page.keyboard.down("Shift"); @@ -3336,9 +3223,7 @@ describe("FreeText Editor", () => { const rect = await getRect(page, ".annotationEditorLayer"); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -3363,9 +3248,7 @@ describe("FreeText Editor", () => { const rect = await getRect(page, ".annotationEditorLayer"); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -3398,9 +3281,7 @@ describe("FreeText Editor", () => { let rect = await getRect(page, ".annotationEditorLayer"); const data = "Hello PDF.js World !!"; await page.mouse.click(rect.x + 100, rect.y + 100); - await page.waitForSelector(editorSelector, { - visible: true, - }); + await page.waitForSelector(editorSelector, { visible: true }); await page.type(`${editorSelector} .internal`, data); await commit(page); await waitForSerialized(page, 1); @@ -3414,9 +3295,7 @@ describe("FreeText Editor", () => { const secondEditorSelector = getEditorSelector(1); const newData = "This is a new text box!"; await page.mouse.click(rect.x + 150, rect.y + 150); - await page.waitForSelector(secondEditorSelector, { - visible: true, - }); + await page.waitForSelector(secondEditorSelector, { visible: true }); await page.type(`${secondEditorSelector} .internal`, newData); await commit(page); await waitForSerialized(page, 1); diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index c2a5da2934704..9ced1cf5032ea 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -105,9 +105,7 @@ describe("Highlight Editor", () => { await page.waitForSelector( `.page[data-page-number = "1"] svg.highlight`, - { - visible: true, - } + { visible: true } ); }) ); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index bf529fd983d61..be37802309cf3 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -1751,9 +1751,7 @@ describe("Stamp Editor", () => { const pageOneSelector = `.page[data-page-number = "1"]`; const pageTwoSelector = `.page[data-page-number = "2"]`; await scrollIntoView(page, pageTwoSelector); - await page.waitForSelector(pageOneSelector, { - visible: false, - }); + await page.waitForSelector(pageOneSelector, { visible: false }); await switchToStamp(page); await scrollIntoView(page, pageOneSelector); From 4ef085a27858a4e74a46f74a31477cde37f72ba9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 4 Feb 2025 10:22:26 +0100 Subject: [PATCH 231/338] Bundle wasm-files in `pdfjs-dist` (PR 19329 follow-up) --- gulpfile.mjs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gulpfile.mjs b/gulpfile.mjs index e119a570f8de7..7752b22021213 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2355,6 +2355,12 @@ gulp.task( encoding: false, }) .pipe(gulp.dest(DIST_DIR)), + gulp + .src(GENERIC_DIR + "web/wasm/**/*", { + base: GENERIC_DIR + "web", + encoding: false, + }) + .pipe(gulp.dest(DIST_DIR)), gulp .src( [ From d7f59741e770e461ccfc1ac27358e947a93ff4f5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 4 Feb 2025 10:39:38 +0100 Subject: [PATCH 232/338] Include the OpenJPEG license files This is consistent with the handling of CMaps and StandardFontData. --- external/openjpeg/LICENSE_OPENJPEG | 39 ++++++++++++++++++++++++ external/openjpeg/LICENSE_PDFJS_OPENJPEG | 22 +++++++++++++ gulpfile.mjs | 5 ++- 3 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 external/openjpeg/LICENSE_OPENJPEG create mode 100644 external/openjpeg/LICENSE_PDFJS_OPENJPEG diff --git a/external/openjpeg/LICENSE_OPENJPEG b/external/openjpeg/LICENSE_OPENJPEG new file mode 100644 index 0000000000000..e8fa41040dfbe --- /dev/null +++ b/external/openjpeg/LICENSE_OPENJPEG @@ -0,0 +1,39 @@ +/* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2003-2014, Antonin Descampe + * Copyright (c) 2003-2009, Francois-Olivier Devaux + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2002-2003, Yannick Verschueren + * Copyright (c) 2001-2003, David Janssens + * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France + * Copyright (c) 2012, CS Systemes d'Information, France + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/external/openjpeg/LICENSE_PDFJS_OPENJPEG b/external/openjpeg/LICENSE_PDFJS_OPENJPEG new file mode 100644 index 0000000000000..623929b849547 --- /dev/null +++ b/external/openjpeg/LICENSE_PDFJS_OPENJPEG @@ -0,0 +1,22 @@ +Copyright (c) 2024, Mozilla Foundation + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gulpfile.mjs b/gulpfile.mjs index 7752b22021213..b825ea4e9cb3c 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -639,8 +639,7 @@ function createStandardFontBundle() { [ "external/standard_fonts/*.pfb", "external/standard_fonts/*.ttf", - "external/standard_fonts/LICENSE_FOXIT", - "external/standard_fonts/LICENSE_LIBERATION", + "external/standard_fonts/LICENSE_*", ], { base: "external/standard_fonts", @@ -651,7 +650,7 @@ function createStandardFontBundle() { function createWasmBundle() { return ordered([ - gulp.src(["external/openjpeg/*.wasm"], { + gulp.src(["external/openjpeg/*.wasm", "external/openjpeg/LICENSE_*"], { base: "external/openjpeg", encoding: false, }), From be9a809959e19c8956ec2e4acb42c46fef933999 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 4 Feb 2025 10:27:31 +0100 Subject: [PATCH 233/338] [api-minor] Add more validation for the `cMapUrl`, `standardFontDataUrl`, and `wasmUrl` parameters Given that we now have a few different factory-url parameters, we introduce a helper function for parsing them. *Please note:* These parameters have always been documented as requiring a trailing slash[1], which we can now easily enforce during the `getDocument`-call. --- [1] I recall that we've occasionally seen issues because users miss that detail, and the new Error should hopefully be more easily actionable than one thrown during rendering/parsing. --- src/display/api.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 0c3a3e2eb349c..6da65d046da3e 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -258,23 +258,20 @@ function getDocument(src = {}) { typeof src.docBaseUrl === "string" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null; - const cMapUrl = typeof src.cMapUrl === "string" ? src.cMapUrl : null; + const cMapUrl = getFactoryUrlProp(src.cMapUrl); const cMapPacked = src.cMapPacked !== false; const CMapReaderFactory = src.CMapReaderFactory || (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory); - const standardFontDataUrl = - typeof src.standardFontDataUrl === "string" - ? src.standardFontDataUrl - : null; + const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl); const StandardFontDataFactory = src.StandardFontDataFactory || (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory); - const wasmUrl = typeof src.wasmUrl === "string" ? src.wasmUrl : null; + const wasmUrl = getFactoryUrlProp(src.wasmUrl); const WasmFactory = src.WasmFactory || (typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && isNodeJS @@ -580,6 +577,16 @@ function getDataProp(val) { ); } +function getFactoryUrlProp(val) { + if (typeof val !== "string") { + return null; + } + if (val.endsWith("/")) { + return val; + } + throw new Error(`Invalid factory url: "${val}" must include trailing slash.`); +} + function isRefProxy(ref) { return ( typeof ref === "object" && From 6a82a2ff479259a2555d0a4fbd3e6f31cbe872ba Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 3 Feb 2025 18:30:42 +0100 Subject: [PATCH 234/338] [Editor] Add a new dialog for the signature editor (bug 1945574) --- gulpfile.mjs | 1 + l10n/en-US/viewer.ftl | 61 +++ src/display/editor/drawers/inkdraw.js | 4 + src/display/editor/ink.js | 10 +- src/display/editor/signature.js | 168 +++--- src/display/editor/tools.js | 9 + web/annotation_editor_layer_builder.css | 1 + web/app.js | 10 + web/dialog.css | 17 + web/pdf_viewer.js | 4 + web/signature_manager.css | 586 ++++++++++++++++++++ web/signature_manager.js | 682 ++++++++++++++++++++++++ web/stubs-geckoview.js | 2 + web/viewer-geckoview.html | 1 + web/viewer.html | 80 +++ web/viewer.js | 26 + 16 files changed, 1596 insertions(+), 66 deletions(-) create mode 100644 web/signature_manager.css create mode 100644 web/signature_manager.js diff --git a/gulpfile.mjs b/gulpfile.mjs index b825ea4e9cb3c..b66f5c72e8718 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -217,6 +217,7 @@ function createWebpackAlias(defines) { "web-preferences": "", "web-print_service": "", "web-secondary_toolbar": "web/secondary_toolbar.js", + "web-signature_manager": "web/signature_manager.js", "web-toolbar": "web/toolbar.js", }; diff --git a/l10n/en-US/viewer.ftl b/l10n/en-US/viewer.ftl index 3e4a3510cf83d..bd2c7b0a545e0 100644 --- a/l10n/en-US/viewer.ftl +++ b/l10n/en-US/viewer.ftl @@ -331,6 +331,8 @@ pdfjs-editor-remove-stamp-button = .title = Remove image pdfjs-editor-remove-highlight-button = .title = Remove highlight +pdfjs-editor-remove-signature-button = + .title = Remove signature ## @@ -510,6 +512,7 @@ pdfjs-editor-undo-bar-message-highlight = Highlight removed pdfjs-editor-undo-bar-message-freetext = Text removed pdfjs-editor-undo-bar-message-ink = Drawing removed pdfjs-editor-undo-bar-message-stamp = Image removed +pdfjs-editor-undo-bar-message-signature = Signature removed # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -524,3 +527,61 @@ pdfjs-editor-undo-bar-undo-button-label = Undo pdfjs-editor-undo-bar-close-button = .title = Close pdfjs-editor-undo-bar-close-button-label = Close + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use. +pdfjs-editor-add-signature-dialog-title = Add a signature + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Type + .title = Type +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Draw + .title = Draw +pdfjs-editor-add-signature-image-button = Image + .title = Image + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Type your signature + .placeholder = Type your signature +pdfjs-editor-add-signature-draw-placeholder = Draw your signature +pdfjs-editor-add-signature-draw-thickness-range-label = Thickness + +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Drawing thickness: { $thickness } + +pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Or choose image files + *[other] Or browse image files + } + +## Controls + +pdfjs-editor-add-signature-description-label = Description (alt text) +pdfjs-editor-add-signature-description-input = + .title = Description (alt text) +pdfjs-editor-add-signature-description-default-when-drawing = Signature + + +pdfjs-editor-add-signature-clear-button-label = Clear signature +pdfjs-editor-add-signature-clear-button = + .title = Clear signature +pdfjs-editor-add-signature-save-checkbox = Save signature +pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more. +pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image +pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image. +pdfjs-editor-add-signature-error-close-button = Close + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancel +pdfjs-editor-add-signature-add-button = Add diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index 11447e723ba3b..f725a6924f530 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -318,6 +318,10 @@ class InkDrawOutline extends Outline { this.#computeBbox(); } + get thickness() { + return this.#thickness; + } + setLastElement(element) { this.#lines.push(element); return { diff --git a/src/display/editor/ink.js b/src/display/editor/ink.js index 2f30dce592386..63c1e28c12be5 100644 --- a/src/display/editor/ink.js +++ b/src/display/editor/ink.js @@ -25,11 +25,9 @@ import { AnnotationEditor } from "./editor.js"; import { InkAnnotationElement } from "../annotation_layer.js"; class InkDrawingOptions extends DrawingOptions { - #viewParameters; - constructor(viewerParameters) { super(); - this.#viewParameters = viewerParameters; + this._viewParameters = viewerParameters; super.updateProperties({ fill: "none", @@ -45,13 +43,13 @@ class InkDrawingOptions extends DrawingOptions { updateSVGProperty(name, value) { if (name === "stroke-width") { value ??= this["stroke-width"]; - value *= this.#viewParameters.realScale; + value *= this._viewParameters.realScale; } super.updateSVGProperty(name, value); } clone() { - const clone = new InkDrawingOptions(this.#viewParameters); + const clone = new InkDrawingOptions(this._viewParameters); clone.updateAll(this); return clone; } @@ -284,4 +282,4 @@ class InkEditor extends DrawingEditor { } } -export { InkEditor }; +export { InkDrawingOptions, InkEditor }; diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index ec27e8b3fcece..e3f5ba6f8bc1a 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -16,15 +16,13 @@ import { AnnotationEditorType, shadow } from "../../shared/util.js"; import { DrawingEditor, DrawingOptions } from "./draw.js"; import { AnnotationEditor } from "./editor.js"; +import { ContourDrawOutline } from "./drawers/contour.js"; +import { InkDrawingOptions } from "./ink.js"; import { SignatureExtractor } from "./drawers/signaturedraw.js"; -import { SupportedImageMimeTypes } from "../display_utils.js"; class SignatureOptions extends DrawingOptions { - #viewParameters; - - constructor(viewerParameters) { + constructor() { super(); - this.#viewParameters = viewerParameters; super.updateProperties({ fill: "black", @@ -33,7 +31,24 @@ class SignatureOptions extends DrawingOptions { } clone() { - const clone = new SignatureOptions(this.#viewParameters); + const clone = new SignatureOptions(); + clone.updateAll(this); + return clone; + } +} + +class DrawnSignatureOptions extends InkDrawingOptions { + constructor(viewerParameters) { + super(viewerParameters); + + super.updateProperties({ + stroke: "black", + "stroke-width": 1, + }); + } + + clone() { + const clone = new DrawnSignatureOptions(this._viewParameters); clone.updateAll(this); return clone; } @@ -44,6 +59,8 @@ class SignatureOptions extends DrawingOptions { * a signature drawing. */ class SignatureEditor extends DrawingEditor { + #isExtracted = false; + static _type = "signature"; static _editorType = AnnotationEditorType.SIGNATURE; @@ -52,13 +69,15 @@ class SignatureEditor extends DrawingEditor { constructor(params) { super({ ...params, mustBeCommitted: true, name: "signatureEditor" }); - this._willKeepAspectRatio = false; + this._willKeepAspectRatio = true; } /** @inheritdoc */ static initialize(l10n, uiManager) { AnnotationEditor.initialize(l10n, uiManager); - this._defaultDrawingOptions = new SignatureOptions( + + this._defaultDrawingOptions = new SignatureOptions(); + this._defaultDrawnSignatureOptions = new DrawnSignatureOptions( uiManager.viewParameters ); } @@ -88,6 +107,14 @@ class SignatureEditor extends DrawingEditor { return true; } + /** @inheritdoc */ + onScaleChanging() { + if (this._drawId === null) { + return; + } + super.onScaleChanging(); + } + /** @inheritdoc */ render() { if (this.div) { @@ -98,70 +125,91 @@ class SignatureEditor extends DrawingEditor { this.div.hidden = true; this.div.setAttribute("role", "figure"); - this.#extractSignature(); + this._uiManager.getSignature(this); return this.div; } - async #extractSignature() { - const input = document.createElement("input"); - input.type = "file"; - input.accept = SupportedImageMimeTypes.join(","); - const signal = this._uiManager._signal; - const { promise, resolve } = Promise.withResolvers(); - - input.addEventListener( - "change", - async () => { - if (!input.files || input.files.length === 0) { - resolve(); - } else { - this._uiManager.enableWaiting(true); - const data = await this._uiManager.imageManager.getFromFile( - input.files[0] - ); - this._uiManager.enableWaiting(false); - resolve(data); - } - resolve(); - }, - { signal } - ); - input.addEventListener("cancel", resolve, { signal }); - input.click(); - - const bitmap = await promise; - const { - rawDims: { pageWidth, pageHeight }, - rotation, - } = this.parent.viewport; - let drawOutlines; - if (bitmap?.bitmap) { - drawOutlines = SignatureExtractor.process( - bitmap.bitmap, - pageWidth, - pageHeight, - rotation, - SignatureEditor._INNER_MARGIN - ); + addSignature(outline, heightInPage) { + const { x: savedX, y: savedY } = this; + this.#isExtracted = outline instanceof ContourDrawOutline; + let drawingOptions; + if (this.#isExtracted) { + drawingOptions = SignatureEditor.getDefaultDrawingOptions(); } else { - drawOutlines = SignatureExtractor.extractContoursFromText( - "Hello PDF.js' World !!", - { fontStyle: "italic", fontWeight: "400", fontFamily: "cursive" }, - pageWidth, - pageHeight, - rotation, - SignatureEditor._INNER_MARGIN - ); + drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone(); + drawingOptions.updateProperties({ "stroke-width": outline.thickness }); } this._addOutlines({ - drawOutlines, - drawingOptions: SignatureEditor.getDefaultDrawingOptions(), + drawOutlines: outline, + drawingOptions, }); + const [parentWidth, parentHeight] = this.parentDimensions; + const [, pageHeight] = this.pageDimensions; + let newHeight = heightInPage / pageHeight; + // Ensure the signature doesn't exceed the page height. + // If the signature is too big, we scale it down to 50% of the page height. + newHeight = newHeight >= 1 ? 0.5 : newHeight; + + this.width *= newHeight / this.height; + this.height = newHeight; + this.setDims(parentWidth * this.width, parentHeight * this.height); + this.x = savedX; + this.y = savedY; + this.center(); + + this._onResized(); this.onScaleChanging(); this.rotate(); + this._uiManager.addToAnnotationStorage(this); + this.div.hidden = false; } + + getFromImage(bitmap) { + const { + rawDims: { pageWidth, pageHeight }, + rotation, + } = this.parent.viewport; + return SignatureExtractor.process( + bitmap, + pageWidth, + pageHeight, + rotation, + SignatureEditor._INNER_MARGIN + ); + } + + getFromText(text, fontInfo) { + const { + rawDims: { pageWidth, pageHeight }, + rotation, + } = this.parent.viewport; + return SignatureExtractor.extractContoursFromText( + text, + fontInfo, + pageWidth, + pageHeight, + rotation, + SignatureEditor._INNER_MARGIN + ); + } + + getDrawnSignature(curves) { + const { + rawDims: { pageWidth, pageHeight }, + rotation, + } = this.parent.viewport; + return SignatureExtractor.processDrawnLines({ + lines: curves, + pageWidth, + pageHeight, + rotation, + innerMargin: SignatureEditor._INNER_MARGIN, + mustSmooth: false, + areContours: false, + }); + } } export { SignatureEditor }; diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index d6bd33c11361e..389e7efce5ef6 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -664,6 +664,8 @@ class AnnotationEditorUIManager { #selectedTextNode = null; + #signatureManager = null; + #pageColors = null; #showAllStates = null; @@ -828,6 +830,7 @@ class AnnotationEditorUIManager { container, viewer, altTextManager, + signatureManager, eventBus, pdfDocument, pageColors, @@ -843,6 +846,7 @@ class AnnotationEditorUIManager { this.#container = container; this.#viewer = viewer; this.#altTextManager = altTextManager; + this.#signatureManager = signatureManager; this._eventBus = eventBus; eventBus._on("editingaction", this.onEditingAction.bind(this), { signal }); eventBus._on("pagechanging", this.onPageChanging.bind(this), { signal }); @@ -905,6 +909,7 @@ class AnnotationEditorUIManager { this.#selectedEditors.clear(); this.#commandManager.destroy(); this.#altTextManager?.destroy(); + this.#signatureManager?.destroy(); this.#highlightToolbar?.hide(); this.#highlightToolbar = null; this.#mainHighlightColorPicker?.destroy(); @@ -1003,6 +1008,10 @@ class AnnotationEditorUIManager { this.#altTextManager?.editAltText(this, editor, firstTime); } + getSignature(editor) { + this.#signatureManager?.getSignature({ uiManager: this, editor }); + } + switchToMode(mode, callback) { // Switching to a mode can be asynchronous. this._eventBus.on("annotationeditormodechanged", callback, { diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index b34bfe50bcc2a..032d44a282b86 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -15,6 +15,7 @@ @import url(draw_layer_builder.css); @import url(toggle_button.css); +@import url(signature_manager.css); :root { --outline-width: 2px; diff --git a/web/app.js b/web/app.js index 820a2fb423557..a2b18e295aee8 100644 --- a/web/app.js +++ b/web/app.js @@ -89,6 +89,7 @@ import { PDFThumbnailViewer } from "web-pdf_thumbnail_viewer"; import { PDFViewer } from "./pdf_viewer.js"; import { Preferences } from "web-preferences"; import { SecondaryToolbar } from "web-secondary_toolbar"; +import { SignatureManager } from "web-signature_manager"; import { Toolbar } from "web-toolbar"; import { ViewHistory } from "./view_history.js"; @@ -458,6 +459,14 @@ const PDFViewerApplication = { this.editorUndoBar = new EditorUndoBar(appConfig.editorUndoBar, eventBus); } + const signatureManager = appConfig.addSignatureDialog + ? new SignatureManager( + appConfig.addSignatureDialog, + this.overlayManager, + this.l10n + ) + : null; + const enableHWA = AppOptions.get("enableHWA"); const pdfViewer = new PDFViewer({ container, @@ -467,6 +476,7 @@ const PDFViewerApplication = { linkService: pdfLinkService, downloadManager, altTextManager, + signatureManager, editorUndoBar: this.editorUndoBar, findController, scriptingManager: diff --git a/web/dialog.css b/web/dialog.css index 3a5ba15d44932..c91b26966a327 100644 --- a/web/dialog.css +++ b/web/dialog.css @@ -49,6 +49,9 @@ --button-primary-hover-fg-color: var(--button-primary-fg-color); --button-primary-hover-border-color: var(--button-primary-hover-bg-color); + --button-disabled-bg-color: color-mix(in srgb, currentcolor, transparent 60%); + --button-disabled-fg-color: var(--button-disabled-bg-color); + @media (prefers-color-scheme: dark) { --dialog-bg-color: #1c1b22; --dialog-border-color: #1c1b22; @@ -103,6 +106,9 @@ --button-primary-fg-color: ButtonFace; --button-primary-hover-bg-color: AccentColor; --button-primary-hover-fg-color: AccentColorText; + + --button-disabled-bg-color: GrayText; + --button-disabled-fg-color: ButtonFace; } font: message-box; @@ -213,6 +219,10 @@ filter: var(--hover-filter); } + > span { + color: inherit; + } + &.secondaryButton { color: var(--button-secondary-fg-color); background-color: var(--button-secondary-bg-color); @@ -237,6 +247,13 @@ border-color: var(--button-primary-hover-border-color); } } + + &:disabled { + color: var(--button-disabled-fg-color) !important; + background-color: var(--button-disabled-bg-color); + border-color: var(--button-disabled-bg-color); + pointer-events: none; + } } a { diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 986cfa71236ac..eb529cf3c85b6 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -250,6 +250,8 @@ class PDFViewer { #scaleTimeoutId = null; + #signatureManager = null; + #supportsPinchToZoom = true; #textLayerMode = TextLayerMode.ENABLE; @@ -287,6 +289,7 @@ class PDFViewer { this.downloadManager = options.downloadManager || null; this.findController = options.findController || null; this.#altTextManager = options.altTextManager || null; + this.#signatureManager = options.signatureManager || null; this.#editorUndoBar = options.editorUndoBar || null; if (this.findController) { @@ -908,6 +911,7 @@ class PDFViewer { this.container, viewer, this.#altTextManager, + this.#signatureManager, eventBus, pdfDocument, pageColors, diff --git a/web/signature_manager.css b/web/signature_manager.css new file mode 100644 index 0000000000000..05bf662cf92fe --- /dev/null +++ b/web/signature_manager.css @@ -0,0 +1,586 @@ +/* Copyright 2022 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. + */ + +#addSignatureDialog { + --border-color: #8f8f9d; + --primary-color: var(--text-primary-color); + --secondary-color: var(--text-secondary-color); + --bg-hover: #e0e0e6; + --tab-top-line-active-color: #0060df; + --tab-top-line-active-hover-color: var(--tab-text-hover-color); + --tab-top-line-hover-color: #8f8f9d; + --tab-top-line-inactive-color: #cfcfd8; + --tab-bottom-line-active-color: var(--tab-top-line-inactive-color); + --tab-bottom-line-hover-color: var(--tab-top-line-inactive-color); + --tab-bottom-line-inactive-color: var(--tab-top-line-inactive-color); + --tab-bg: var(--dialog-bg-color); + --tab-bg-active-color: var(--tab-bg); + --tab-bg-active-hover-color: var(--bg-hover); + --tab-bg-hover: var(--bg-hover); + --tab-text-color: var(--primary-color); + --tab-text-active-color: var(--tab-top-line-active-color); + --tab-text-hover-color: var(--tab-text-color); + --signature-bg: #f9f9fb; + --signature-placeholder-color: var(--secondary-color); + --signature-draw-placeholder-color: var(--primary-color); + --signature-color: var(--primary-color); + --closing-button-icon: url(images/messageBar_closingButton.svg); + --closing-button-color: var(--primary-color); + --description-input-color: var(--primary-color); + --clear-signature-button-border-width: 0; + --clear-signature-button-border-style: solid; + --clear-signature-button-border-color: transparent; + --clear-signature-button-border-disabled-color: transparent; + --clear-signature-button-icon: url(images/editor-toolbar-delete.svg); + --clear-signature-button-color: var(--primary-color); + --clear-signature-button-hover-color: var(--clear-signature-button-color); + --clear-signature-button-active-color: var(--clear-signature-button-color); + --clear-signature-button-disabled-color: var(--clear-signature-button-color); + --clear-signature-button-focus-color: var(--clear-signature-button-color); + --clear-signature-button-bg: var(--dialog-bg-color); + --clear-signature-button-bg-hover: var(--bg-hover); + --clear-signature-button-bg-active: #cfcfd8; + --clear-signature-button-bg-focus: #f0f0f4; + --clear-signature-button-bg-disabled: color-mix( + in srgb, + #f0f0f4, + transparent 40% + ); + --save-warning-color: --var(--secondary-color); + --thickness-bg: var(--dialog-bg-color); + --thickness-label-color: var(--primary-color); + --thickness-slider-color: var(--primary-color); + --draw-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; + + @media (prefers-color-scheme: dark) { + /* TODO: Update the dialog colors for dark mode but in dialog.css */ + --dialog-bg-color: #42414d; + --bg-hover: #52525e; + --primary-color: #fbfbfe; + --secondary-color: #cfcfd8; + --tab-top-line-active-color: #0df; + --tab-top-line-inactive-color: #8f8f9d; + --signature-bg: #2b2a33; + --clear-signature-button-bg-active: #5b5b66; + --clear-signature-button-bg-focus: #2b2a33; + --clear-signature-button-bg-disabled: color-mix( + in srgb, + #2b2a33, + transparent 40% + ); + } + + @media screen and (forced-colors: active) { + --primary-color: ButtonText; + --secondary-color: ButtonText; + --bg: HighlightText; + --bg-hover: var(--bg); + --border-color: ButtonText; + --tab-top-line-active-color: ButtonText; + --tab-top-line-active-hover-color: HighlightText; + --tab-top-line-hover-color: SelectedItem; + --tab-top-line-inactive-color: ButtonText; + --tab-bottom-line-active-color: var(--tab-top-line-active-color); + --tab-bottom-line-hover-color: var(--tab-top-line-hover-color); + --tab-bg: var(--bg); + --tab-bg-active-color: SelectedItem; + --tab-bg-active-hover-color: SelectedItem; + --tab-text-color: ButtonText; + --tab-text-active-color: HighlightText; + --tab-text-hover-color: SelectedItem; + --signature-bg: var(--bg); + --signature-color: ButtonText; + --clear-signature-button-border-width: 1px; + --clear-signature-button-border-style: solid; + --clear-signature-button-border-color: ButtonText; + --clear-signature-button-border-disabled-color: GrayText; + --clear-signature-button-color: ButtonText; + --clear-signature-button-hover-color: HighlightText; + --clear-signature-button-active-color: SelectedItem; + --clear-signature-button-focus-color: CanvasText; + --clear-signature-button-disabled-color: GrayText; + --clear-signature-button-bg: var(--bg); + --clear-signature-button-bg-hover: SelectedItem; + --clear-signature-button-bg-active: var(--bg); + --clear-signature-button-bg-focus: var(--bg); + --clear-signature-button-bg-disabled: var(--bg); + --thickness-bg: Canvas; + --thickness-label-color: CanvasText; + --thickness-slider-color: ButtonText; + } + + width: 570px; + max-width: 100%; + min-width: 300px; + padding: 16px 0; + + #addSignatureDialogLabel { + overflow: hidden; + position: absolute; + inset: 0; + width: 0; + height: 0; + } + + &.waiting::after { + content: ""; + cursor: wait; + position: absolute; + inset: 0; + width: 100%; + height: 100%; + } + + span { + font: menu; + font-size: 13px; + font-style: normal; + font-weight: 400; + line-height: normal; + } + + .mainContainer { + width: 100%; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 12px; + + .title { + margin-inline-start: 16px; + font-weight: 590; + } + + [role="tablist"] { + width: 100%; + display: flex; + align-items: flex-start; + gap: 0; + + > [role="tab"] { + flex: 1 0 0; + align-self: stretch; + background-color: var(--tab-bg); + padding-inline: 0; + cursor: default; + + border-inline: 0; + border-block-width: 1px; + border-block-style: solid; + border-block-start-color: var(--tab-top-line-inactive-color); + border-block-end-color: var(--tab-bottom-line-inactive-color); + border-radius: 0; + + font: menu; + font-size: 13px; + font-style: normal; + line-height: normal; + font-weight: 400; + color: var(--tab-text-color); + + &:hover { + border-block-start-width: 2px; + border-block-start-color: var(--tab-top-line-hover-color); + border-block-end-color: var(--tab-bottom-line-hover-color); + background-color: var(--tab-bg-hover); + color: var(--tab-text-hover-color); + } + + &:focus-visible { + outline: 2px solid var(--tab-top-line-active-color); + outline-offset: -2px; + } + + &[aria-selected="true"] { + border-block-start-width: 2px; + border-block-start-color: var(--tab-top-line-active-color); + border-block-end-color: var(--tab-bottom-line-active-color); + background-color: var(--tab-bg-active-color); + font-weight: 590; + color: var(--tab-text-active-color); + + &:hover { + border-block-start-color: var(--tab-top-line-active-hover-color); + background-color: var(--tab-bg-active-hover-color); + color: var(--tab-text-hover-color); + } + } + } + } + + #addSignatureActionContainer { + width: 100%; + height: auto; + display: flex; + flex-direction: column; + align-items: flex-end; + align-self: stretch; + gap: 12px; + padding-inline: 16px; + box-sizing: border-box; + + > [role="tabpanel"] { + position: relative; + width: 100%; + height: 220px; + background-color: var(--signature-bg); + border-radius: 4px; + + > svg { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + background-color: transparent; + } + + &#addSignatureTypeContainer { + display: none; + + #addSignatureTypeInput { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + border: 0; + padding: 0; + text-align: center; + color: var(--signature-color); + background-color: transparent; + + font-family: "Brush script", "Apple Chancery", "Segoe script", + "Freestyle Script", "Palace Script MT", "Brush Script MT", TK, + cursive, serif; + font-size: 44px; + font-style: italic; + font-weight: 400; + + &::placeholder { + color: var(--signature-placeholder-color); + text-align: center; + + font: menu; + font-style: normal; + font-weight: 274; + font-size: 44px; + line-height: normal; + } + } + } + + &#addSignatureDrawContainer { + display: none; + + > span { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: grid; + align-items: center; + justify-content: center; + + background-color: transparent; + color: var(--signature-placeholder-color); + user-select: none; + } + + > svg { + stroke: var(--primary-color); + fill: none; + stroke-opacity: 1; + stroke-linecap: round; + stroke-linejoin: round; + stroke-miterlimit: 10; + + &:hover { + cursor: var(--draw-cursor); + } + } + + #thickness { + position: absolute; + width: 100%; + inset-block-end: 0; + display: grid; + align-items: center; + justify-content: center; + pointer-events: none; + + > span { + color: var(--signature-draw-placeholder-color); + } + + > div { + width: auto; + height: auto; + display: flex; + align-items: center; + justify-content: center; + gap: 8px; + padding: 6px 8px; + margin: 0; + background-color: var(--thickness-bg); + border-radius: 4px 4px 0 0; + pointer-events: auto; + + > label { + color: var(--thickness-label-color); + } + + > input { + width: 100px; + height: 14px; + background-color: transparent; + + /*#if !MOZCENTRAL*/ + &::-webkit-slider-runnable-track, + /*#endif*/ + &::-moz-range-track, + &::-moz-range-progress { + background-color: var(--thickness-slider-color); + } + + /*#if !MOZCENTRAL*/ + &::-webkit-slider-thumb, + /*#endif*/ + &::-moz-range-thumb { + background-color: var(--thickness-bg); + } + + border-radius: 4.5px; + border: 0; + color: var(--signature-color); + } + } + } + } + + &#addSignatureImageContainer { + display: none; + + > svg { + stroke: none; + stroke-width: 0; + fill: var(--primary-color); + fill-opacity: 1; + } + + #addSignatureImagePlaceholder { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: transparent; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + + a { + text-decoration: underline; + cursor: pointer; + } + } + + #addSignatureFilePicker { + visibility: hidden; + position: relative; + width: 0; + height: 0; + } + } + } + + &[data-selected="type"] > #addSignatureTypeContainer, + &[data-selected="draw"] > #addSignatureDrawContainer, + &[data-selected="image"] > #addSignatureImageContainer { + display: block; + } + + #addSignatureControls { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + gap: 12px; + align-self: stretch; + + #horizontalContainer { + display: flex; + align-items: flex-end; + gap: 16px; + align-self: stretch; + + #addSignatureDescriptionContainer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 4px; + flex: 1 0 0; + + > #inputWithClearButton { + --button-dimension: 24px; + + width: 100%; + position: relative; + display: flex; + align-items: center; + justify-content: center; + + > input { + width: 100%; + height: 32px; + padding: 8px 4px 8px 8px; + padding-block: 8px; + padding-inline: 8px calc(4px + var(--button-dimension)); + box-sizing: border-box; + background-color: transparent; + border-radius: 4px; + border: 1px solid var(--border-color); + color: var(--description-input-color); + } + + #addSignatureDescriptionClearButton { + position: absolute; + inset-block-start: 4px; + inset-inline-end: 4px; + display: inline-block; + width: var(--button-dimension); + height: var(--button-dimension); + background-color: var(--closing-button-color); + mask-size: cover; + mask-image: var(--closing-button-icon); + padding: 0; + border: 0; + } + } + + > label { + width: auto; + } + } + + #clearSignatureButton { + display: flex; + height: 32px; + padding: 4px 8px; + align-items: center; + background-color: var(--clear-signature-button-bg); + border-width: var(--clear-signature-button-border-width); + border-style: var(--clear-signature-button-border-style); + border-color: var(--clear-signature-button-border-color); + border-radius: 4px; + + > span { + display: flex; + height: 24px; + align-items: center; + gap: 4px; + flex-shrink: 0; + + color: var(--clear-signature-button-color); + + &::after { + content: ""; + display: inline-block; + width: 16px; + height: 16px; + mask-image: var(--clear-signature-button-icon); + mask-size: cover; + background-color: var(--clear-signature-button-color); + flex-shrink: 0; + } + } + + &:hover { + background-color: var(--clear-signature-button-bg-hover); + + > span { + color: var(--clear-signature-button-hover-color); + &::after { + background-color: var(--clear-signature-button-hover-color); + } + } + } + + &:active { + background-color: var(--clear-signature-button-bg-active); + + > span { + color: var(--clear-signature-button-active-color); + &::after { + background-color: var(--clear-signature-button-active-color); + } + } + } + + &:focus-visible { + background-color: var(--clear-signature-button-bg-focus); + + > span { + color: var(--clear-signature-button-focus-color); + &::after { + background-color: var(--clear-signature-button-focus-color); + } + } + } + + &:disabled { + background-color: var(--clear-signature-button-bg-disabled); + border-color: var(--clear-signature-button-border-disabled-color); + + > span { + color: var(--clear-signature-button-disabled-color); + &::after { + background-color: var( + --clear-signature-button-disabled-color + ); + } + } + } + } + } + + #addSignatureSaveContainer { + display: grid; + grid-template-columns: max-content max-content; + gap: 4px; + width: 100%; + + > input { + margin: 0; + } + + > label { + user-select: none; + } + + #addSignatureSaveWarning { + color: var(--save-warning-color); + font-size: 11px; + } + + &[disabled] { + pointer-events: none; + opacity: 0.4; + } + } + } + } + } +} diff --git a/web/signature_manager.js b/web/signature_manager.js new file mode 100644 index 0000000000000..0578c7eb16479 --- /dev/null +++ b/web/signature_manager.js @@ -0,0 +1,682 @@ +/* Copyright 2025 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. + */ + +import { + DOMSVGFactory, + noContextMenu, + stopEvent, + SupportedImageMimeTypes, +} from "pdfjs-lib"; + +class SignatureManager { + #addButton; + + #tabsToAltText = null; + + #clearButton; + + #clearDescription; + + #currentEditor; + + #description; + + #dialog; + + #drawCurves = null; + + #drawPlaceholder; + + #drawPath = null; + + #drawPathString = ""; + + #drawPoints = null; + + #drawSVG; + + #drawThickness; + + #errorBar; + + #extractedSignatureData = null; + + #imagePath = null; + + #imagePicker; + + #imagePickerLink; + + #imagePlaceholder; + + #imageSVG; + + #saveCheckbox; + + #saveContainer; + + #tabButtons; + + #typeInput; + + #currentTab = null; + + #currentTabAC = null; + + #hasDescriptionChanged = false; + + #l10n; + + #overlayManager; + + #uiManager = null; + + static #l10nDescription = null; + + constructor( + { + dialog, + panels, + typeButton, + typeInput, + drawButton, + drawPlaceholder, + drawSVG, + drawThickness, + imageButton, + imageSVG, + imagePlaceholder, + imagePicker, + imagePickerLink, + description, + clearDescription, + clearButton, + cancelButton, + addButton, + errorCloseButton, + errorBar, + saveCheckbox, + saveContainer, + }, + overlayManager, + l10n + ) { + this.#addButton = addButton; + this.#clearButton = clearButton; + this.#clearDescription = clearDescription; + this.#description = description; + this.#dialog = dialog; + this.#drawSVG = drawSVG; + this.#drawPlaceholder = drawPlaceholder; + this.#drawThickness = drawThickness; + this.#errorBar = errorBar; + this.#imageSVG = imageSVG; + this.#imagePlaceholder = imagePlaceholder; + this.#imagePicker = imagePicker; + this.#imagePickerLink = imagePickerLink; + this.#overlayManager = overlayManager; + this.#saveCheckbox = saveCheckbox; + this.#saveContainer = saveContainer; + this.#typeInput = typeInput; + this.#l10n = l10n; + + SignatureManager.#l10nDescription ||= Object.freeze({ + signature: "pdfjs-editor-add-signature-description-default-when-drawing", + }); + + dialog.addEventListener("close", this.#close.bind(this)); + dialog.addEventListener("contextmenu", e => { + const { target } = e; + if (target !== this.#typeInput && target !== this.#description) { + e.preventDefault(); + } + }); + dialog.addEventListener("drop", e => { + stopEvent(e); + }); + cancelButton.addEventListener("click", this.#cancel.bind(this)); + addButton.addEventListener("click", this.#add.bind(this)); + clearButton.addEventListener( + "click", + () => { + this.#initTab(null); + }, + { passive: true } + ); + description.addEventListener( + "input", + () => { + clearDescription.disabled = description.value === ""; + }, + { passive: true } + ); + clearDescription.addEventListener( + "click", + () => { + this.#description.value = ""; + clearDescription.disabled = true; + }, + { passive: true } + ); + errorCloseButton.addEventListener( + "click", + () => { + errorBar.hidden = true; + }, + { passive: true } + ); + + this.#initTabButtons(typeButton, drawButton, imageButton, panels); + imagePicker.accept = SupportedImageMimeTypes.join(","); + + overlayManager.register(dialog); + } + + #initTabButtons(typeButton, drawButton, imageButton, panels) { + const buttons = (this.#tabButtons = new Map([ + ["type", typeButton], + ["draw", drawButton], + ["image", imageButton], + ])); + const tabCallback = e => { + for (const [name, button] of buttons) { + if (button === e.target) { + button.setAttribute("aria-selected", true); + button.setAttribute("tabindex", 0); + panels.setAttribute("data-selected", name); + this.#initTab(name); + } else { + button.setAttribute("aria-selected", false); + // Only the active tab is focusable: the others can be + // reached by keyboard navigation (left/right arrows). + button.setAttribute("tabindex", -1); + } + } + }; + + const buttonsArray = Array.from(buttons.values()); + for (let i = 0, ii = buttonsArray.length; i < ii; i++) { + const button = buttonsArray[i]; + button.addEventListener("click", tabCallback, { passive: true }); + button.addEventListener( + "keydown", + ({ key }) => { + if (key !== "ArrowLeft" && key !== "ArrowRight") { + return; + } + buttonsArray[i + (key === "ArrowLeft" ? -1 : 1)]?.focus(); + }, + { passive: true } + ); + } + } + + #resetCommon() { + this.#hasDescriptionChanged = false; + this.#description.value = ""; + this.#tabsToAltText.set(this.#currentTab, ""); + } + + #resetTab(name) { + switch (name) { + case "type": + this.#typeInput.value = ""; + break; + case "draw": + this.#drawCurves = null; + this.#drawPoints = null; + this.#drawPathString = ""; + this.#drawPath?.remove(); + this.#drawPath = null; + this.#drawPlaceholder.hidden = false; + this.#drawThickness.value = 1; + break; + case "image": + this.#imagePlaceholder.hidden = false; + this.#imagePath?.remove(); + this.#imagePath = null; + break; + } + } + + #initTab(name) { + if (name && this.#currentTab === name) { + return; + } + if (this.#currentTab) { + this.#tabsToAltText.set(this.#currentTab, this.#description.value); + } + if (name) { + this.#currentTab = name; + } + + const reset = !name; + if (reset) { + this.#resetCommon(); + } else { + this.#description.value = this.#tabsToAltText.get(this.#currentTab); + } + this.#clearDescription.disabled = this.#description.value === ""; + this.#currentTabAC?.abort(); + this.#currentTabAC = new AbortController(); + switch (this.#currentTab) { + case "type": + this.#initTypeTab(reset); + break; + case "draw": + this.#initDrawTab(reset); + break; + case "image": + this.#initImageTab(reset); + break; + } + } + + #disableButtons(value) { + this.#clearButton.disabled = this.#addButton.disabled = !value; + if (value) { + this.#saveContainer.removeAttribute("disabled"); + } else { + this.#saveContainer.setAttribute("disabled", true); + } + } + + #initTypeTab(reset) { + if (reset) { + this.#resetTab("type"); + } + + this.#disableButtons(this.#typeInput.value); + + const { signal } = this.#currentTabAC; + const options = { passive: true, signal }; + this.#typeInput.addEventListener( + "input", + () => { + const { value } = this.#typeInput; + if (!this.#hasDescriptionChanged) { + this.#description.value = value; + this.#clearDescription.disabled = value === ""; + } + this.#disableButtons(value); + }, + options + ); + this.#description.addEventListener( + "input", + () => { + this.#hasDescriptionChanged = + this.#typeInput.value !== this.#description.value; + }, + options + ); + } + + #initDrawTab(reset) { + if (reset) { + this.#resetTab("draw"); + } + + this.#disableButtons(this.#drawPath); + + const { signal } = this.#currentTabAC; + const options = { signal }; + let currentPointerId = NaN; + const drawCallback = e => { + const { pointerId } = e; + if (!isNaN(currentPointerId) && currentPointerId !== pointerId) { + return; + } + currentPointerId = pointerId; + e.preventDefault(); + this.#drawSVG.setPointerCapture(pointerId); + + const { width: drawWidth, height: drawHeight } = + this.#drawSVG.getBoundingClientRect(); + let { offsetX, offsetY } = e; + offsetX = Math.round(offsetX); + offsetY = Math.round(offsetY); + if (e.target === this.#drawPlaceholder) { + this.#drawPlaceholder.hidden = true; + } + if (!this.#drawCurves) { + this.#drawCurves = { + width: drawWidth, + height: drawHeight, + thickness: this.#drawThickness.value, + curves: [], + }; + this.#disableButtons(true); + + const svgFactory = new DOMSVGFactory(); + const path = (this.#drawPath = svgFactory.createElement("path")); + path.setAttribute("stroke-width", this.#drawThickness.value); + this.#drawSVG.append(path); + this.#drawSVG.addEventListener("pointerdown", drawCallback, options); + this.#drawPlaceholder.removeEventListener("pointerdown", drawCallback); + if (this.#description.value === "") { + this.#l10n + .get(SignatureManager.#l10nDescription.signature) + .then(description => { + this.#description.value ||= description; + this.#clearDescription.disabled = this.#description.value === ""; + }); + } + } + + this.#drawPoints = [offsetX, offsetY]; + this.#drawCurves.curves.push({ points: this.#drawPoints }); + this.#drawPathString += `M ${offsetX} ${offsetY}`; + this.#drawPath.setAttribute("d", this.#drawPathString); + + const finishDrawAC = new AbortController(); + const listenerDrawOptions = { + signal: AbortSignal.any([signal, finishDrawAC.signal]), + }; + this.#drawSVG.addEventListener( + "contextmenu", + noContextMenu, + listenerDrawOptions + ); + this.#drawSVG.addEventListener( + "pointermove", + evt => { + evt.preventDefault(); + let { offsetX: x, offsetY: y } = evt; + x = Math.round(x); + y = Math.round(y); + const drawPoints = this.#drawPoints; + if ( + x < 0 || + y < 0 || + x > drawWidth || + y > drawHeight || + (x === drawPoints.at(-2) && y === drawPoints.at(-1)) + ) { + return; + } + if (drawPoints.length >= 4) { + const [x1, y1, x2, y2] = drawPoints.slice(-4); + this.#drawPathString += `C${(x1 + 5 * x2) / 6} ${(y1 + 5 * y2) / 6} ${(5 * x2 + x) / 6} ${(5 * y2 + y) / 6} ${(x2 + x) / 2} ${(y2 + y) / 2}`; + } else { + this.#drawPathString += `L${x} ${y}`; + } + drawPoints.push(x, y); + this.#drawPath.setAttribute("d", this.#drawPathString); + }, + listenerDrawOptions + ); + this.#drawSVG.addEventListener( + "pointerup", + evt => { + const { pointerId: pId } = evt; + if (!isNaN(currentPointerId) && currentPointerId !== pId) { + return; + } + currentPointerId = NaN; + evt.preventDefault(); + this.#drawSVG.releasePointerCapture(pId); + finishDrawAC.abort(); + if (this.#drawPoints.length === 2) { + this.#drawPathString += `L${this.#drawPoints[0]} ${this.#drawPoints[1]}`; + this.#drawPath.setAttribute("d", this.#drawPathString); + } + }, + listenerDrawOptions + ); + }; + if (this.#drawCurves) { + this.#drawSVG.addEventListener("pointerdown", drawCallback, options); + } else { + this.#drawPlaceholder.addEventListener( + "pointerdown", + drawCallback, + options + ); + } + this.#drawThickness.addEventListener( + "input", + () => { + const { value: thickness } = this.#drawThickness; + this.#drawThickness.setAttribute( + "data-l10n-args", + JSON.stringify({ thickness }) + ); + if (!this.#drawCurves) { + return; + } + this.#drawPath.setAttribute("stroke-width", thickness); + this.#drawCurves.thickness = thickness; + }, + options + ); + } + + #initImageTab(reset) { + if (reset) { + this.#resetTab("image"); + } + + this.#disableButtons(this.#imagePath); + + const { signal } = this.#currentTabAC; + const options = { signal }; + const passiveOptions = { passive: true, signal }; + this.#imagePickerLink.addEventListener( + "keydown", + e => { + const { key } = e; + if (key === "Enter" || key === " ") { + stopEvent(e); + this.#imagePicker.click(); + } + }, + options + ); + this.#imagePicker.addEventListener( + "click", + () => { + this.#dialog.classList.toggle("waiting", true); + }, + passiveOptions + ); + this.#imagePicker.addEventListener( + "change", + async () => { + const file = this.#imagePicker.files?.[0]; + if (!file || !SupportedImageMimeTypes.includes(file.type)) { + this.#errorBar.hidden = false; + this.#dialog.classList.toggle("waiting", false); + return; + } + await this.#extractSignature(file); + }, + passiveOptions + ); + this.#imagePicker.addEventListener( + "cancel", + () => { + this.#dialog.classList.toggle("waiting", false); + }, + passiveOptions + ); + this.#imagePlaceholder.addEventListener( + "dragover", + e => { + const { dataTransfer } = e; + for (const { type } of dataTransfer.items) { + if (!SupportedImageMimeTypes.includes(type)) { + continue; + } + dataTransfer.dropEffect = + dataTransfer.effectAllowed === "copy" ? "copy" : "move"; + stopEvent(e); + return; + } + dataTransfer.dropEffect = "none"; + }, + options + ); + this.#imagePlaceholder.addEventListener( + "drop", + e => { + const { + dataTransfer: { files }, + } = e; + if (!files?.length) { + return; + } + for (const file of files) { + if (SupportedImageMimeTypes.includes(file.type)) { + this.#extractSignature(file); + break; + } + } + stopEvent(e); + this.#dialog.classList.toggle("waiting", true); + }, + options + ); + } + + async #extractSignature(file) { + let data; + try { + data = await this.#uiManager.imageManager.getFromFile(file); + } catch (e) { + console.error("SignatureManager.#extractSignature.", e); + } + if (!data) { + this.#errorBar.hidden = false; + this.#dialog.classList.toggle("waiting", false); + return; + } + + const outline = (this.#extractedSignatureData = + this.#currentEditor.getFromImage(data.bitmap)); + + if (!outline) { + this.#dialog.classList.toggle("waiting", false); + return; + } + + this.#imagePlaceholder.hidden = true; + this.#disableButtons(true); + + const svgFactory = new DOMSVGFactory(); + const path = (this.#imagePath = svgFactory.createElement("path")); + this.#imageSVG.setAttribute("viewBox", outline.viewBox); + this.#imageSVG.setAttribute("preserveAspectRatio", "xMidYMid meet"); + this.#imageSVG.append(path); + path.setAttribute("d", outline.toSVGPath()); + if (this.#description.value === "") { + this.#description.value = file.name || ""; + this.#clearDescription.disabled = this.#description.value === ""; + } + + this.#dialog.classList.toggle("waiting", false); + } + + #getOutlineForType() { + return this.#currentEditor.getFromText( + this.#typeInput.value, + window.getComputedStyle(this.#typeInput) + ); + } + + #getOutlineForDraw() { + const { width, height } = this.#drawSVG.getBoundingClientRect(); + return this.#currentEditor.getDrawnSignature( + this.#drawCurves, + width, + height + ); + } + + getSignature(params) { + return this.open(params); + } + + async open({ uiManager, editor }) { + this.#tabsToAltText ||= new Map( + this.#tabButtons.keys().map(name => [name, ""]) + ); + this.#uiManager = uiManager; + this.#currentEditor = editor; + this.#uiManager.removeEditListeners(); + + await this.#overlayManager.open(this.#dialog); + + const tabType = this.#tabButtons.get("type"); + tabType.focus(); + tabType.click(); + } + + #cancel() { + this.#finish(); + } + + #finish() { + if (this.#overlayManager.active === this.#dialog) { + this.#overlayManager.close(this.#dialog); + } + } + + #close() { + if (this.#currentEditor._drawId === null) { + this.#currentEditor.remove(); + } + this.#uiManager?.addEditListeners(); + this.#currentTabAC?.abort(); + this.#currentTabAC = null; + this.#uiManager = null; + this.#currentEditor = null; + + this.#resetCommon(); + for (const [name] of this.#tabButtons) { + this.#resetTab(name); + } + this.#disableButtons(false); + this.#currentTab = null; + this.#tabsToAltText = null; + } + + #add() { + let data; + switch (this.#currentTab) { + case "type": + data = this.#getOutlineForType(); + break; + case "draw": + data = this.#getOutlineForDraw(); + break; + case "image": + data = this.#extractedSignatureData; + break; + } + this.#currentEditor.addSignature(data, /* heightInPage */ 40); + if (this.#saveCheckbox.checked) { + // TODO + } + this.#finish(); + } + + destroy() { + this.#uiManager = null; + this.#finish(); + } +} + +export { SignatureManager }; diff --git a/web/stubs-geckoview.js b/web/stubs-geckoview.js index 23b4ebb6af285..eabba37d208cd 100644 --- a/web/stubs-geckoview.js +++ b/web/stubs-geckoview.js @@ -27,6 +27,7 @@ const PDFPresentationMode = null; const PDFSidebar = null; const PDFThumbnailViewer = null; const SecondaryToolbar = null; +const SignatureManager = null; export { AltTextManager, @@ -43,4 +44,5 @@ export { PDFSidebar, PDFThumbnailViewer, SecondaryToolbar, + SignatureManager, }; diff --git a/web/viewer-geckoview.html b/web/viewer-geckoview.html index 846d704d905c7..907e2c3946f14 100644 --- a/web/viewer-geckoview.html +++ b/web/viewer-geckoview.html @@ -85,6 +85,7 @@ "web-preferences": "./genericcom.js", "web-print_service": "./pdf_print_service.js", "web-secondary_toolbar": "./stubs-geckoview.js", + "web-signature_manager": "./stubs-geckoview.js", "web-toolbar": "./toolbar-geckoview.js" } } diff --git a/web/viewer.html b/web/viewer.html index 7bd09571d1af9..44a3dfe56d7d2 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -88,6 +88,7 @@ "web-preferences": "./genericcom.js", "web-print_service": "./pdf_print_service.js", "web-secondary_toolbar": "./secondary_toolbar.js", + "web-signature_manager": "./signature_manager.js", "web-toolbar": "./toolbar.js" } } @@ -682,6 +683,85 @@ + + + + This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use. + +
+
+ Add a signature +
+
+ + + +
+
+
+ +
+
+ + Draw your signature +
+
+ + +
+
+
+
+ +
+ Drag a file here to upload + + +
+
+
+
+
+ + + + + +
+ +
+
+ + + + +
+
+ +
+ + +
+
+
+
+
diff --git a/web/viewer.js b/web/viewer.js index 0fb7e45a60234..d76620ef77fee 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -214,6 +214,32 @@ function getViewerConfiguration() { ), closeButton: document.getElementById("altTextSettingsCloseButton"), }, + addSignatureDialog: { + dialog: document.getElementById("addSignatureDialog"), + panels: document.getElementById("addSignatureActionContainer"), + typeButton: document.getElementById("addSignatureTypeButton"), + typeInput: document.getElementById("addSignatureTypeInput"), + drawButton: document.getElementById("addSignatureDrawButton"), + drawSVG: document.getElementById("addSignatureDraw"), + drawPlaceholder: document.getElementById("addSignatureDrawPlaceholder"), + drawThickness: document.getElementById("addSignatureDrawThickness"), + imageButton: document.getElementById("addSignatureImageButton"), + imageSVG: document.getElementById("addSignatureImage"), + imagePlaceholder: document.getElementById("addSignatureImagePlaceholder"), + imagePicker: document.getElementById("addSignatureFilePicker"), + imagePickerLink: document.getElementById("addSignatureImageBrowse"), + description: document.getElementById("addSignatureDescription"), + clearDescription: document.getElementById( + "addSignatureDescriptionClearButton" + ), + clearButton: document.getElementById("clearSignatureButton"), + saveContainer: document.getElementById("addSignatureSaveContainer"), + saveCheckbox: document.getElementById("addSignatureSaveCheckbox"), + errorBar: document.getElementById("addSignatureError"), + errorCloseButton: document.getElementById("addSignatureErrorCloseButton"), + cancelButton: document.getElementById("addSignatureCancelButton"), + addButton: document.getElementById("addSignatureAddButton"), + }, annotationEditorParams: { editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), editorFreeTextColor: document.getElementById("editorFreeTextColor"), From a8dca8ba457a9f6fb3f2e391abe1caa515767d21 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Tue, 12 Nov 2024 11:26:32 +0530 Subject: [PATCH 235/338] Enable automatic URL linking Automatically detect links in the text content of a file and automatically generate link annotations at the appropriate locations to achieve automatic link detection and hyperlinking. --- extensions/chromium/preferences_schema.json | 5 + src/display/annotation_layer.js | 27 +++ src/pdf.js | 4 + test/integration/autolinker_spec.mjs | 91 +++++++++ test/integration/jasmine-boot.js | 1 + test/pdfs/.gitignore | 2 + test/pdfs/bug1019475_1.pdf | Bin 0 -> 68512 bytes test/pdfs/bug1019475_2.pdf | Bin 0 -> 27694 bytes test/unit/autolinker_spec.js | 194 ++++++++++++++++++++ test/unit/clitests.json | 1 + test/unit/jasmine-boot.js | 1 + test/unit/pdf_spec.js | 4 + web/annotation_layer_builder.js | 157 ++++++++++++++-- web/app.js | 2 + web/app_options.js | 5 + web/autolinker.js | 147 +++++++++++++++ web/pdf_find_controller.js | 2 +- web/pdf_page_view.js | 17 +- web/pdf_viewer.js | 6 + web/pdfjs.js | 4 + 20 files changed, 656 insertions(+), 14 deletions(-) create mode 100644 test/integration/autolinker_spec.mjs create mode 100644 test/pdfs/bug1019475_1.pdf create mode 100644 test/pdfs/bug1019475_2.pdf create mode 100644 test/unit/autolinker_spec.js create mode 100644 web/autolinker.js diff --git a/extensions/chromium/preferences_schema.json b/extensions/chromium/preferences_schema.json index e3cc9e941780c..54e5b2897e71c 100644 --- a/extensions/chromium/preferences_schema.json +++ b/extensions/chromium/preferences_schema.json @@ -224,6 +224,11 @@ "description": "The color is a string as defined in CSS. Its goal is to help improve readability in high contrast mode", "type": "string", "default": "CanvasText" + }, + "enableAutoLinking": { + "description": "Enable creation of hyperlinks from text that look like URLs.", + "type": "boolean", + "default": false } } } diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 80b083c619ffa..0937dc566d349 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -3238,6 +3238,33 @@ class AnnotationLayer { this.#setAnnotationCanvasMap(); } + /** + * Add link annotations to the annotation layer. + * + * @param {Array} annotations + * @param {IPDFLinkService} linkService + * @memberof AnnotationLayer + */ + async addLinkAnnotations(annotations, linkService) { + const elementParams = { + data: null, + layer: this.div, + linkService, + svgFactory: new DOMSVGFactory(), + parent: this, + }; + for (const data of annotations) { + elementParams.data = data; + const element = AnnotationElementFactory.create(elementParams); + + if (!element.isRenderable) { + continue; + } + const rendered = element.render(); + await this.#appendElement(rendered, data.id); + } + } + /** * Update the annotation elements on existing annotation layer. * diff --git a/src/pdf.js b/src/pdf.js index edac1d0537318..869f41db529af 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -24,9 +24,11 @@ import { AbortException, + AnnotationBorderStyleType, AnnotationEditorParamsType, AnnotationEditorType, AnnotationMode, + AnnotationType, createValidAbsoluteUrl, FeatureTest, ImageKind, @@ -90,12 +92,14 @@ if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING || GENERIC")) { export { AbortException, + AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, + AnnotationType, build, ColorPicker, createValidAbsoluteUrl, diff --git a/test/integration/autolinker_spec.mjs b/test/integration/autolinker_spec.mjs new file mode 100644 index 0000000000000..a39c18f7931ec --- /dev/null +++ b/test/integration/autolinker_spec.mjs @@ -0,0 +1,91 @@ +/* Copyright 2025 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. + */ + +import { closePages, loadAndWait } from "./test_utils.mjs"; + +describe("autolinker", function () { + describe("bug1019475_2.pdf", function () { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "bug1019475_2.pdf", + ".annotationLayer", + null, + null, + { + enableAutoLinking: true, + } + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must appropriately add link annotations when relevant", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const url = await page.$$eval( + ".annotationLayer > .linkAnnotation > a", + annotations => annotations.map(a => a.href) + ); + expect(url.length).withContext(`In ${browserName}`).toEqual(1); + expect(url[0]) + .withContext(`In ${browserName}`) + .toEqual("http://www.mozilla.org/"); + }) + ); + }); + }); + + describe("bug1019475_1.pdf", function () { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "bug1019475_1.pdf", + ".annotationLayer", + null, + null, + { + enableAutoLinking: true, + } + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must not add links when unnecessary", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const linkIds = await page.$$eval( + ".annotationLayer > .linkAnnotation > a", + annotations => + annotations.map(a => a.getAttribute("data-element-id")) + ); + expect(linkIds.length).withContext(`In ${browserName}`).toEqual(3); + linkIds.forEach(id => + expect(id) + .withContext(`In ${browserName}`) + .not.toContain("added_link_") + ); + }) + ); + }); + }); +}); diff --git a/test/integration/jasmine-boot.js b/test/integration/jasmine-boot.js index 3dff4d9f0a389..b6d904c84a168 100644 --- a/test/integration/jasmine-boot.js +++ b/test/integration/jasmine-boot.js @@ -28,6 +28,7 @@ async function runTests(results) { spec_files: [ "accessibility_spec.mjs", "annotation_spec.mjs", + "autolinker_spec.mjs", "caret_browsing_spec.mjs", "copy_paste_spec.mjs", "find_spec.mjs", diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 3001e51b4b03b..14660ecd31060 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -698,3 +698,5 @@ !issue19207.pdf !issue19239.pdf !issue19360.pdf +!bug1019475_1.pdf +!bug1019475_2.pdf diff --git a/test/pdfs/bug1019475_1.pdf b/test/pdfs/bug1019475_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..54e80411fad1fce88f0467d816989792ad9c53fd GIT binary patch literal 68512 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 LNJvCvMPdF61$tv3 literal 0 HcmV?d00001 diff --git a/test/pdfs/bug1019475_2.pdf b/test/pdfs/bug1019475_2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..569b5f6ce212b1fba7dd395a2474831b168bc778 GIT binary patch literal 27694 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 F{69C)nrZ+5 literal 0 HcmV?d00001 diff --git a/test/unit/autolinker_spec.js b/test/unit/autolinker_spec.js new file mode 100644 index 0000000000000..23a30446c54b3 --- /dev/null +++ b/test/unit/autolinker_spec.js @@ -0,0 +1,194 @@ +/* Copyright 2025 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. + */ + +import { Autolinker } from "../../web/autolinker.js"; + +function testLinks(links) { + const matches = Autolinker.findLinks(links.map(link => link[0]).join("\n")); + expect(matches.length).toEqual(links.length); + for (let i = 0; i < links.length; i++) { + expect(matches[i].url).toEqual(links[i][1]); + } +} + +describe("autolinker", function () { + it("should correctly find URLs", function () { + const [matched] = Autolinker.findLinks("http://www.example.com"); + expect(matched.url).toEqual("http://www.example.com/"); + }); + + it("should correctly find simple valid URLs", function () { + testLinks([ + [ + "http://subdomain.example.com/path/to/page?query=param", + "http://subdomain.example.com/path/to/page?query=param", + ], + [ + "www.example.com/path/to/resource", + "http://www.example.com/path/to/resource", + ], + [ + "http://example.com/path?query=value#fragment", + "http://example.com/path?query=value#fragment", + ], + ]); + }); + + it("should correctly find emails", function () { + testLinks([ + ["mailto:username@example.com", "mailto:username@example.com"], + [ + "mailto:someone@subdomain.example.com", + "mailto:someone@subdomain.example.com", + ], + ["peter@abc.de", "mailto:peter@abc.de"], + ["red.teddy.b@abc.com", "mailto:red.teddy.b@abc.com"], + [ + "abc_@gmail.com", // '_' is ok before '@'. + "mailto:abc_@gmail.com", + ], + [ + "dummy-hi@gmail.com", // '-' is ok in user name. + "mailto:dummy-hi@gmail.com", + ], + [ + "a..df@gmail.com", // Stop at consecutive '.'. + "mailto:a..df@gmail.com", + ], + [ + ".john@yahoo.com", // Remove heading '.'. + "mailto:john@yahoo.com", + ], + [ + "abc@xyz.org?/", // Trim ending invalid chars. + "mailto:abc@xyz.org", + ], + [ + "fan{abc@xyz.org", // Trim beginning invalid chars. + "mailto:abc@xyz.org", + ], + [ + "fan@g.com..", // Trim the ending periods. + "mailto:fan@g.com", + ], + [ + "CAP.cap@Gmail.Com", // Keep the original case. + "mailto:CAP.cap@Gmail.Com", + ], + ]); + }); + + it("should correctly handle complex or edge cases", function () { + testLinks([ + [ + "https://example.com/path/to/page?query=param&another=val#section", + "https://example.com/path/to/page?query=param&another=val#section", + ], + [ + "www.example.com/resource/(parentheses)-allowed/", + "http://www.example.com/resource/(parentheses)-allowed/", + ], + [ + "http://example.com/path_with_underscores", + "http://example.com/path_with_underscores", + ], + [ + "http://www.example.com:8080/port/test", + "http://www.example.com:8080/port/test", + ], + [ + "https://example.com/encoded%20spaces%20in%20path", + "https://example.com/encoded%20spaces%20in%20path", + ], + ["mailto:hello+world@example.com", "mailto:hello+world@example.com"], + ["www.a.com/#a=@?q=rr&r=y", "http://www.a.com/#a=@?q=rr&r=y"], + ["http://a.com/1/2/3/4\\5\\6", "http://a.com/1/2/3/4/5/6"], + ["http://www.example.com/foo;bar", "http://www.example.com/foo;bar"], + // ["www.abc.com/#%%^&&*(", "http://www.abc.com/#%%^&&*("], TODO: Patch the regex to accept the whole URL. + ]); + }); + + it("shouldn't find false positives", function () { + const matches = Autolinker.findLinks( + [ + "not a valid URL", + "htp://misspelled-protocol.com", + "example.com (missing protocol)", + "https://[::1] (IPv6 loopback)", + "http:// (just protocol)", + "", // Blank. + "http", // No colon. + "www.", // Missing domain. + "https-and-www", // Dash not colon. + "http:/abc.com", // Missing slash. + "http://((()),", // Only invalid chars in host name. + "ftp://example.com", // Ftp scheme is not supported. + "http:example.com", // Missing slashes. + "http//[example.com", // Invalid IPv6 address. + "http//[00:00:00:00:00:00", // Invalid IPv6 address. + "http//[]", // Empty IPv6 address. + "abc.example.com", // URL without scheme. + ].join("\n") + ); + expect(matches.length).toEqual(0); + }); + + it("should correctly find links among mixed content", function () { + const matches = Autolinker.findLinks( + [ + "Here's a URL: https://example.com and an email: mailto:test@example.com", + "www.example.com and more text", + "Check this: http://example.com/path?query=1 and this mailto:info@domain.com", + ].join("\n") + ); + expect(matches.length).toEqual(5); + expect(matches[0].url).toEqual("https://example.com/"); + expect(matches[1].url).toEqual("mailto:test@example.com"); + expect(matches[2].url).toEqual("http://www.example.com/"); + expect(matches[3].url).toEqual("http://example.com/path?query=1"); + expect(matches[4].url).toEqual("mailto:info@domain.com"); + }); + + it("should correctly work with special characters", function () { + testLinks([ + [ + "https://example.com/path/to/page?query=value&symbol=£", + "https://example.com/path/to/page?query=value&symbol=%C2%A3", + ], + [ + "mailto:user.name+alias@example-domain.com", + "mailto:user.name+alias@example-domain.com", + ], + ["http://example.com/@user", "http://example.com/@user"], + ["https://example.com/path#@anchor", "https://example.com/path#@anchor"], + ["www.测试.net", "http://www.xn--0zwm56d.net/"], + ["www.测试.net;", "http://www.xn--0zwm56d.net/"], + // [ "www.测试。net。", "http://www.xn--0zwm56d.net/" ] TODO: Patch `createValidAbsoluteUrl` to accept this. + ]); + }); + + it("should correctly find links with dashes and newlines between numbers", function () { + const matches = Autolinker.findLinks("http://abcd.efg/test1-\n2/test.html"); + expect(matches.length).toEqual(1); + expect(matches[0].url).toEqual("http://abcd.efg/test1-2/test.html"); + }); + + it("should correctly identify emails with special prefixes", function () { + testLinks([ + ["wwwtest@email.com", "mailto:wwwtest@email.com"], + ["httptest@email.com", "mailto:httptest@email.com"], + ]); + }); +}); diff --git a/test/unit/clitests.json b/test/unit/clitests.json index 492687985c2c3..1328b612461bc 100644 --- a/test/unit/clitests.json +++ b/test/unit/clitests.json @@ -8,6 +8,7 @@ "annotation_storage_spec.js", "api_spec.js", "app_options_spec.js", + "autolinker_spec.js", "bidi_spec.js", "canvas_factory_spec.js", "cff_parser_spec.js", diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 230a8056172a5..72751cdf25d90 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -51,6 +51,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/annotation_storage_spec.js", "pdfjs-test/unit/api_spec.js", "pdfjs-test/unit/app_options_spec.js", + "pdfjs-test/unit/autolinker_spec.js", "pdfjs-test/unit/bidi_spec.js", "pdfjs-test/unit/canvas_factory_spec.js", "pdfjs-test/unit/cff_parser_spec.js", diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 8b13b440672e5..73bab4a981d7c 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -15,9 +15,11 @@ import { AbortException, + AnnotationBorderStyleType, AnnotationEditorParamsType, AnnotationEditorType, AnnotationMode, + AnnotationType, createValidAbsoluteUrl, FeatureTest, ImageKind, @@ -67,12 +69,14 @@ import { XfaLayer } from "../../src/display/xfa_layer.js"; const expectedAPI = Object.freeze({ AbortException, + AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, + AnnotationType, build, ColorPicker, createValidAbsoluteUrl, diff --git a/web/annotation_layer_builder.js b/web/annotation_layer_builder.js index b6e31404c20a8..effe83bf6413f 100644 --- a/web/annotation_layer_builder.js +++ b/web/annotation_layer_builder.js @@ -27,7 +27,12 @@ // eslint-disable-next-line max-len /** @typedef {import("../src/display/editor/tools.js").AnnotationEditorUIManager} AnnotationEditorUIManager */ -import { AnnotationLayer } from "pdfjs-lib"; +import { + AnnotationLayer, + AnnotationType, + setLayerDimensions, + Util, +} from "pdfjs-lib"; import { PresentationModeState } from "./ui_utils.js"; /** @@ -56,7 +61,18 @@ import { PresentationModeState } from "./ui_utils.js"; * @property {StructTreeLayerBuilder} [structTreeLayer] */ +/** + * @typedef {Object} InjectLinkAnnotationsOptions + * @property {Array} inferredLinks + * @property {PageViewport} viewport + * @property {StructTreeLayerBuilder} [structTreeLayer] + */ + class AnnotationLayerBuilder { + #annotations = null; + + #externalHide = false; + #onAppend = null; #eventAbortController = null; @@ -133,19 +149,13 @@ class AnnotationLayerBuilder { this.#onAppend?.(div); if (annotations.length === 0) { - this.hide(); + this.#annotations = annotations; + + this.hide(/* internal = */ true); return; } - this.annotationLayer = new AnnotationLayer({ - div, - accessibilityManager: this._accessibilityManager, - annotationCanvasMap: this._annotationCanvasMap, - annotationEditorUIManager: this._annotationEditorUIManager, - page: this.pdfPage, - viewport: viewport.clone({ dontFlip: true }), - structTreeLayer, - }); + this.#initAnnotationLayer(viewport, structTreeLayer); await this.annotationLayer.render({ annotations, @@ -159,6 +169,8 @@ class AnnotationLayerBuilder { fieldObjects, }); + this.#annotations = annotations; + // Ensure that interactive form elements in the annotationLayer are // disabled while PresentationMode is active (see issue 12232). if (this.linkService.isInPresentationMode) { @@ -177,6 +189,18 @@ class AnnotationLayerBuilder { } } + #initAnnotationLayer(viewport, structTreeLayer) { + this.annotationLayer = new AnnotationLayer({ + div: this.div, + accessibilityManager: this._accessibilityManager, + annotationCanvasMap: this._annotationCanvasMap, + annotationEditorUIManager: this._annotationEditorUIManager, + page: this.pdfPage, + viewport: viewport.clone({ dontFlip: true }), + structTreeLayer, + }); + } + cancel() { this._cancelled = true; @@ -184,7 +208,8 @@ class AnnotationLayerBuilder { this.#eventAbortController = null; } - hide() { + hide(internal = false) { + this.#externalHide = !internal; if (!this.div) { return; } @@ -195,6 +220,45 @@ class AnnotationLayerBuilder { return !!this.annotationLayer?.hasEditableAnnotations(); } + /** + * @param {InjectLinkAnnotationsOptions} options + * @returns {Promise} A promise that is resolved when the inferred links + * are added to the annotation layer. + */ + async injectLinkAnnotations({ + inferredLinks, + viewport, + structTreeLayer = null, + }) { + if (this.#annotations === null) { + throw new Error( + "`render` method must be called before `injectLinkAnnotations`." + ); + } + if (this._cancelled) { + return; + } + + const newLinks = this.#annotations.length + ? this.#checkInferredLinks(inferredLinks) + : inferredLinks; + + if (!newLinks.length) { + return; + } + + if (!this.annotationLayer) { + this.#initAnnotationLayer(viewport, structTreeLayer); + setLayerDimensions(this.div, viewport); + } + + await this.annotationLayer.addLinkAnnotations(newLinks, this.linkService); + // Don't show the annotation layer if it was explicitly hidden previously. + if (!this.#externalHide) { + this.div.hidden = false; + } + } + #updatePresentationModeState(state) { if (!this.div) { return; @@ -217,6 +281,75 @@ class AnnotationLayerBuilder { section.inert = disableFormElements; } } + + #checkInferredLinks(inferredLinks) { + function annotationRects(annot) { + if (!annot.quadPoints) { + return [annot.rect]; + } + const rects = []; + for (let i = 2, ii = annot.quadPoints.length; i < ii; i += 8) { + const trX = annot.quadPoints[i]; + const trY = annot.quadPoints[i + 1]; + const blX = annot.quadPoints[i + 2]; + const blY = annot.quadPoints[i + 3]; + rects.push([blX, blY, trX, trY]); + } + return rects; + } + + function intersectAnnotations(annot1, annot2) { + const intersections = []; + const annot1Rects = annotationRects(annot1); + const annot2Rects = annotationRects(annot2); + for (const rect1 of annot1Rects) { + for (const rect2 of annot2Rects) { + const intersection = Util.intersect(rect1, rect2); + if (intersection) { + intersections.push(intersection); + } + } + } + return intersections; + } + + function areaRects(rects) { + let totalArea = 0; + for (const rect of rects) { + totalArea += Math.abs((rect[2] - rect[0]) * (rect[3] - rect[1])); + } + return totalArea; + } + + return inferredLinks.filter(link => { + let linkAreaRects; + + for (const annotation of this.#annotations) { + if ( + annotation.annotationType !== AnnotationType.LINK || + annotation.url !== link.url + ) { + continue; + } + // TODO: Add a test case to verify that we can find the intersection + // between two annotations with quadPoints properly. + const intersections = intersectAnnotations(annotation, link); + + if (intersections.length === 0) { + continue; + } + linkAreaRects ??= areaRects(annotationRects(link)); + + if ( + areaRects(intersections) / linkAreaRects > + 0.5 /* If the overlap is more than 50%. */ + ) { + return false; + } + } + return true; + }); + } } export { AnnotationLayerBuilder }; diff --git a/web/app.js b/web/app.js index a2b18e295aee8..e16d64b084894 100644 --- a/web/app.js +++ b/web/app.js @@ -354,6 +354,7 @@ const PDFViewerApplication = { if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { Object.assign(opts, { enableAltText: x => x === "true", + enableAutoLinking: x => x === "true", enableFakeMLManager: x => x === "true", enableGuessAltText: x => x === "true", enableUpdatedAddImage: x => x === "true", @@ -502,6 +503,7 @@ const PDFViewerApplication = { abortSignal: this._globalAbortController.signal, enableHWA, supportsPinchToZoom: this.supportsPinchToZoom, + enableAutoLinking: AppOptions.get("enableAutoLinking"), }); this.pdfViewer = pdfViewer; diff --git a/web/app_options.js b/web/app_options.js index 20839cdca0008..220e0b71ff165 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -195,6 +195,11 @@ const defaultOptions = { value: true, kind: OptionKind.VIEWER + OptionKind.PREFERENCE + OptionKind.EVENT_DISPATCH, }, + enableAutoLinking: { + /** @type {boolean} */ + value: false, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE, + }, enableGuessAltText: { /** @type {boolean} */ value: true, diff --git a/web/autolinker.js b/web/autolinker.js new file mode 100644 index 0000000000000..b2c7007ef1184 --- /dev/null +++ b/web/autolinker.js @@ -0,0 +1,147 @@ +/* Copyright 2025 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. + */ + +import { + AnnotationBorderStyleType, + AnnotationType, + createValidAbsoluteUrl, + Util, +} from "pdfjs-lib"; +import { getOriginalIndex, normalize } from "./pdf_find_controller.js"; + +function DOMRectToPDF({ width, height, left, top }, pdfPageView) { + if (width === 0 || height === 0) { + return null; + } + + const pageBox = pdfPageView.textLayer.div.getBoundingClientRect(); + const bottomLeft = pdfPageView.getPagePoint( + left - pageBox.left, + top - pageBox.top + ); + const topRight = pdfPageView.getPagePoint( + left - pageBox.left + width, + top - pageBox.top + height + ); + + return Util.normalizeRect([ + bottomLeft[0], + bottomLeft[1], + topRight[0], + topRight[1], + ]); +} + +function calculateLinkPosition(range, pdfPageView) { + const rangeRects = range.getClientRects(); + if (rangeRects.length === 1) { + return { rect: DOMRectToPDF(rangeRects[0], pdfPageView) }; + } + + const rect = [Infinity, Infinity, -Infinity, -Infinity]; + const quadPoints = []; + let i = 0; + for (const domRect of rangeRects) { + const normalized = DOMRectToPDF(domRect, pdfPageView); + if (normalized === null) { + continue; + } + + quadPoints[i] = quadPoints[i + 4] = normalized[0]; + quadPoints[i + 1] = quadPoints[i + 3] = normalized[3]; + quadPoints[i + 2] = quadPoints[i + 6] = normalized[2]; + quadPoints[i + 5] = quadPoints[i + 7] = normalized[1]; + + rect[0] = Math.min(rect[0], normalized[0]); + rect[1] = Math.min(rect[1], normalized[1]); + rect[2] = Math.max(rect[2], normalized[2]); + rect[3] = Math.max(rect[3], normalized[3]); + + i += 8; + } + return { quadPoints, rect }; +} + +function createLinkAnnotation({ url, index, length }, pdfPageView, id) { + const highlighter = pdfPageView._textHighlighter; + const [{ begin, end }] = highlighter._convertMatches([index], [length]); + + const range = new Range(); + range.setStart(highlighter.textDivs[begin.divIdx].firstChild, begin.offset); + range.setEnd(highlighter.textDivs[end.divIdx].firstChild, end.offset); + + return { + id: `inferred_link_${id}`, + unsafeUrl: url, + url, + annotationType: AnnotationType.LINK, + rotation: 0, + ...calculateLinkPosition(range, pdfPageView), + // This is just the default for AnnotationBorderStyle. + borderStyle: { + width: 1, + rawWidth: 1, + style: AnnotationBorderStyleType.SOLID, + dashArray: [3], + horizontalCornerRadius: 0, + verticalCornerRadius: 0, + }, + }; +} + +class Autolinker { + static #index = 0; + + static #regex; + + static findLinks(text) { + // Regex can be tested and verified at https://regex101.com/r/zgDwPE/1. + this.#regex ??= + /\b(?:https?:\/\/|mailto:|www\.)(?:[[\S--\[]--\p{P}]|\/|[\p{P}--\[]+[[\S--\[]--\p{P}])+|\b[[\S--@]--\{]+@[\S--.]+\.[[\S--\[]--\p{P}]{2,}/gmv; + + const [normalizedText, diffs] = normalize(text); + const matches = normalizedText.matchAll(this.#regex); + const links = []; + for (const match of matches) { + const raw = + match[0].startsWith("www.") || + match[0].startsWith("mailto:") || + match[0].startsWith("http://") || + match[0].startsWith("https://") + ? match[0] + : `mailto:${match[0]}`; + const url = createValidAbsoluteUrl(raw, null, { + addDefaultProtocol: true, + }); + if (url) { + const [index, length] = getOriginalIndex( + diffs, + match.index, + match[0].length + ); + links.push({ url: url.href, index, length }); + } + } + return links; + } + + static processLinks(pdfPageView) { + return this.findLinks( + pdfPageView._textHighlighter.textContentItemsStr.join("\n") + ).map(link => createLinkAnnotation(link, pdfPageView, this.#index++)); + } +} + +export { Autolinker }; diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js index 0b46117e9f986..a9fa441a13728 100644 --- a/web/pdf_find_controller.js +++ b/web/pdf_find_controller.js @@ -1185,4 +1185,4 @@ class PDFFindController { } } -export { FindState, PDFFindController }; +export { FindState, getOriginalIndex, normalize, PDFFindController }; diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index fd33e3b762e52..06c3037673a69 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -43,6 +43,7 @@ import { import { AnnotationEditorLayerBuilder } from "./annotation_editor_layer_builder.js"; import { AnnotationLayerBuilder } from "./annotation_layer_builder.js"; import { AppOptions } from "./app_options.js"; +import { Autolinker } from "./autolinker.js"; import { DrawLayerBuilder } from "./draw_layer_builder.js"; import { GenericL10n } from "web-null_l10n"; import { SimpleLinkService } from "./pdf_link_service.js"; @@ -84,6 +85,8 @@ import { XfaLayerBuilder } from "./xfa_layer_builder.js"; * the necessary layer-properties. * @property {boolean} [enableHWA] - Enables hardware acceleration for * rendering. The default value is `false`. + * @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from + * text that look like URLs. The default value is `false`. */ const DEFAULT_LAYER_PROPERTIES = @@ -120,6 +123,8 @@ class PDFPageView { #enableHWA = false; + #enableAutoLinking = false; + #hasRestrictedScaling = false; #isEditing = false; @@ -177,6 +182,7 @@ class PDFPageView { options.maxCanvasPixels ?? AppOptions.get("maxCanvasPixels"); this.pageColors = options.pageColors || null; this.#enableHWA = options.enableHWA || false; + this.#enableAutoLinking = options.enableAutoLinking || false; this.eventBus = options.eventBus; this.renderingQueue = options.renderingQueue; @@ -1100,10 +1106,19 @@ class PDFPageView { viewport.rawDims ); - this.#renderTextLayer(); + const textLayerPromise = this.#renderTextLayer(); if (this.annotationLayer) { await this.#renderAnnotationLayer(); + + if (this.#enableAutoLinking) { + await textLayerPromise; + this.annotationLayer.injectLinkAnnotations({ + inferredLinks: Autolinker.processLinks(this), + viewport: this.viewport, + structTreeLayer: this.structTreeLayer, + }); + } } const { annotationEditorUIManager } = this.#layerProperties; diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index eb529cf3c85b6..c0cdd8752fe11 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -128,6 +128,8 @@ function isValidAnnotationEditorMode(mode) { * rendering. The default value is `false`. * @property {boolean} [supportsPinchToZoom] - Enable zooming on pinch gesture. * The default value is `true`. + * @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from + * text that look like URLs. The default value is `false`. */ class PDFPageViewBuffer { @@ -228,6 +230,8 @@ class PDFViewer { #enableNewAltTextWhenAddingImage = false; + #enableAutoLinking = false; + #eventAbortController = null; #mlManager = null; @@ -324,6 +328,7 @@ class PDFViewer { this.#mlManager = options.mlManager || null; this.#enableHWA = options.enableHWA || false; this.#supportsPinchToZoom = options.supportsPinchToZoom !== false; + this.#enableAutoLinking = options.enableAutoLinking || false; this.defaultRenderingQueue = !options.renderingQueue; if ( @@ -994,6 +999,7 @@ class PDFViewer { l10n: this.l10n, layerProperties: this._layerProperties, enableHWA: this.#enableHWA, + enableAutoLinking: this.#enableAutoLinking, }); this._pages.push(pageView); } diff --git a/web/pdfjs.js b/web/pdfjs.js index 23c46dbb76cb4..763e194bc4372 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -15,12 +15,14 @@ const { AbortException, + AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, + AnnotationType, build, ColorPicker, createValidAbsoluteUrl, @@ -63,12 +65,14 @@ const { export { AbortException, + AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, + AnnotationType, build, ColorPicker, createValidAbsoluteUrl, From 6dd0edb627e7bd02b1dda8957ff7cbcf62bdb65c Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 6 Feb 2025 17:02:54 +0100 Subject: [PATCH 236/338] Enable autolinking in Firefox (bug 1019475) --- web/app_options.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/app_options.js b/web/app_options.js index 220e0b71ff165..1470d220f7ada 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -197,7 +197,7 @@ const defaultOptions = { }, enableAutoLinking: { /** @type {boolean} */ - value: false, + value: typeof PDFJSDev === "undefined" || PDFJSDev.test("MOZCENTRAL"), kind: OptionKind.VIEWER + OptionKind.PREFERENCE, }, enableGuessAltText: { From 4e31152969e4adbea4c42fdd4d01bee8f9839752 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 6 Feb 2025 19:06:04 +0100 Subject: [PATCH 237/338] Fix `--save-warning-color` CSS variable typo (PR 19414 follow-up) --- web/signature_manager.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/signature_manager.css b/web/signature_manager.css index 05bf662cf92fe..ede846a02f93a 100644 --- a/web/signature_manager.css +++ b/web/signature_manager.css @@ -58,7 +58,7 @@ #f0f0f4, transparent 40% ); - --save-warning-color: --var(--secondary-color); + --save-warning-color: var(--secondary-color); --thickness-bg: var(--dialog-bg-color); --thickness-label-color: var(--primary-color); --thickness-slider-color: var(--primary-color); From 89da8ef37e016d4b6ce1c648eea9636b0f81bb50 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 6 Feb 2025 18:34:31 +0100 Subject: [PATCH 238/338] [GENERIC viewer] Add Fluent `PLATFORM` function (PR 19414 follow-up) This patch extends the `FeatureTest.platform` getter to provide the necessary information, and uses that one to implement a Fluent `PLATFORM` function based on: https://searchfox.org/mozilla-central/rev/d1fbe983fb7720f0a4aca0e748817af11c1a374e/intl/l10n/rust/fluent-ffi/src/bundle.rs#81-98 --- src/shared/util.js | 16 +++++++++++----- web/genericl10n.js | 23 +++++++++++++++++++++-- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/shared/util.js b/src/shared/util.js index 03dedc365fb18..30c1d4f5ec144 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -632,18 +632,24 @@ class FeatureTest { if ( (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || (typeof navigator !== "undefined" && - typeof navigator?.platform === "string") + typeof navigator?.platform === "string" && + typeof navigator?.userAgent === "string") ) { + const { platform, userAgent } = navigator; + return shadow(this, "platform", { - isMac: navigator.platform.includes("Mac"), - isWindows: navigator.platform.includes("Win"), + isAndroid: userAgent.includes("Android"), + isLinux: platform.includes("Linux"), + isMac: platform.includes("Mac"), + isWindows: platform.includes("Win"), isFirefox: (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || - (typeof navigator?.userAgent === "string" && - navigator.userAgent.includes("Firefox")), + userAgent.includes("Firefox"), }); } return shadow(this, "platform", { + isAndroid: false, + isLinux: false, isMac: false, isWindows: false, isFirefox: false, diff --git a/web/genericl10n.js b/web/genericl10n.js index 74b9e23854ec3..03e63d929849f 100644 --- a/web/genericl10n.js +++ b/web/genericl10n.js @@ -15,14 +15,33 @@ /** @typedef {import("./interfaces").IL10n} IL10n */ +import { FeatureTest, fetchData } from "pdfjs-lib"; import { FluentBundle, FluentResource } from "fluent-bundle"; import { DOMLocalization } from "fluent-dom"; -import { fetchData } from "pdfjs-lib"; import { L10n } from "./l10n.js"; +function PLATFORM() { + const { isAndroid, isLinux, isMac, isWindows } = FeatureTest.platform; + if (isLinux) { + return "linux"; + } + if (isWindows) { + return "windows"; + } + if (isMac) { + return "macos"; + } + if (isAndroid) { + return "android"; + } + return "other"; +} + function createBundle(lang, text) { const resource = new FluentResource(text); - const bundle = new FluentBundle(lang); + const bundle = new FluentBundle(lang, { + functions: { PLATFORM }, + }); const errors = bundle.addResource(resource); if (errors.length) { console.error("L10n errors", errors); From b14525836b000d1028beb5290a827fd9a6ee5576 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 6 Feb 2025 20:45:18 +0100 Subject: [PATCH 239/338] Use the `FeatureTest` helper in the `src/display/font_loader.js` file --- src/display/font_loader.js | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 8c24e6ad722d3..06efa39e2ee87 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -15,6 +15,7 @@ import { assert, + FeatureTest, isNodeJS, shadow, string32, @@ -176,23 +177,14 @@ class FontLoader { return shadow(this, "isSyncFontLoadingSupported", true); } - let supported = false; - if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME")) { - if (isNodeJS) { - // Node.js - we can pretend that sync font loading is supported. - supported = true; - } else if ( - typeof navigator !== "undefined" && - typeof navigator?.userAgent === "string" && - // User agent string sniffing is bad, but there is no reliable way to - // tell if the font is fully loaded and ready to be used with canvas. - /Mozilla\/5.0.*?rv:\d+.*? Gecko/.test(navigator.userAgent) - ) { - // Firefox, from version 14, supports synchronous font loading. - supported = true; - } - } - return shadow(this, "isSyncFontLoadingSupported", supported); + // Node.js - we can pretend that sync font loading is supported. + // Firefox, from version 14, supports synchronous font loading. + return shadow( + this, + "isSyncFontLoadingSupported", + (typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME")) && + (isNodeJS || FeatureTest.platform.isFirefox) + ); } _queueLoadingCallback(callback) { From 5a57645d1aabdbaee8823e4f50690def66109b40 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 6 Feb 2025 20:58:59 +0100 Subject: [PATCH 240/338] [Editor] Add an icon for the signature tool and move it before the highlight one --- web/images/toolbarButton-editorSignature.svg | 10 +++++----- web/viewer.html | 12 ------------ 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/web/images/toolbarButton-editorSignature.svg b/web/images/toolbarButton-editorSignature.svg index 26e484864d6ab..0b4e9049feea7 100644 --- a/web/images/toolbarButton-editorSignature.svg +++ b/web/images/toolbarButton-editorSignature.svg @@ -1,6 +1,6 @@ - - - + + + + + diff --git a/web/viewer.html b/web/viewer.html index 44a3dfe56d7d2..571bf4fb3708e 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -319,18 +319,6 @@ - From 723a60118196c7800236a3d806c69a2be0c1607c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 4 Feb 2025 15:10:31 +0100 Subject: [PATCH 241/338] Disable the "Blank issue" alternative when using the GitHub "New issue"-button With recent changed made to the GitHub issues-UI the "Blank issue" alternative is now showing up quite prominently, which can easily negate the point of our bug/feature templates and lead to incomplete issues being filed. --- .github/ISSUE_TEMPLATE/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 39ba6a835d228..31eae7c1ec07c 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,4 +1,4 @@ -blank_issues_enabled: true +blank_issues_enabled: false contact_links: - name: Need help? url: https://github.com/mozilla/pdf.js/discussions From 47a628fdd219c8533fed055fa21ad5a241f7d407 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 5 Feb 2025 11:32:52 +0100 Subject: [PATCH 242/338] Use the `getPdfColorArray` helper more in the `src/core/annotation.js` file While the file-size reduction is obviously tiny, it should never hurt to remove code duplication. --- src/core/annotation.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index f92dddb82b5b8..33cfcaf712222 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -4477,10 +4477,7 @@ class InkAnnotation extends MarkupAnnotation { bs.set("W", thickness); // Color. - ink.set( - "C", - Array.from(color, c => c / 255) - ); + ink.set("C", getPdfColorArray(color)); // Opacity. ink.set("CA", opacity); @@ -4694,10 +4691,7 @@ class HighlightAnnotation extends MarkupAnnotation { highlight.set("QuadPoints", quadPoints); // Color. - highlight.set( - "C", - Array.from(color, c => c / 255) - ); + highlight.set("C", getPdfColorArray(color)); // Opacity. highlight.set("CA", opacity); From b10f2c59ebbb21217805741a70c61d598d795517 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 7 Feb 2025 14:28:51 +0100 Subject: [PATCH 243/338] Combine the main-thread message handlers for CMap-, StandardFontData-, and Wasm-files Currently we have three separate and virtually identical message handlers for this data, which can easily be combined into a single message handler instead. --- src/core/evaluator.js | 16 ++++++++++------ src/core/jpx.js | 7 ++++--- src/display/api.js | 40 ++++++---------------------------------- 3 files changed, 20 insertions(+), 43 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index d8a88c6562a40..46026836cb99f 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -386,13 +386,16 @@ class PartialEvaluator { if (this.options.cMapUrl !== null) { // Only compressed CMaps are (currently) supported here. - const cMapData = await fetchBinaryData( - `${this.options.cMapUrl}${name}.bcmap` - ); - data = { cMapData, isCompressed: true }; + data = { + cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`), + isCompressed: true, + }; } else { // Get the data on the main-thread instead. - data = await this.handler.sendWithPromise("FetchBuiltInCMap", { name }); + data = await this.handler.sendWithPromise("FetchBinaryData", { + type: "cMapReaderFactory", + name, + }); } // Cache the CMap data, to avoid fetching it repeatedly. this.builtInCMapCache.set(name, data); @@ -427,7 +430,8 @@ class PartialEvaluator { ); } else { // Get the data on the main-thread instead. - data = await this.handler.sendWithPromise("FetchStandardFontData", { + data = await this.handler.sendWithPromise("FetchBinaryData", { + type: "standardFontDataFactory", filename, }); } diff --git a/src/core/jpx.js b/src/core/jpx.js index 38215d86b8b5f..94a4dc9879255 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -49,9 +49,10 @@ class JpxImage { if (this.#wasmUrl !== null) { this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`); } else { - this.#buffer = await this.#handler.sendWithPromise("FetchWasm", { - filename, - }); + this.#buffer = await this.#handler.sendWithPromise( + "FetchBinaryData", + { type: "wasmFactory", filename } + ); } } const results = await WebAssembly.instantiate(this.#buffer, imports); diff --git a/src/display/api.js b/src/display/api.js index 6da65d046da3e..38ab1bfe7c5ba 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2881,49 +2881,21 @@ class WorkerTransport { }); }); - messageHandler.on("FetchBuiltInCMap", async data => { + messageHandler.on("FetchBinaryData", async data => { if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - throw new Error("Not implemented: FetchBuiltInCMap"); + throw new Error("Not implemented: FetchBinaryData"); } if (this.destroyed) { throw new Error("Worker was destroyed."); } - if (!this.cMapReaderFactory) { - throw new Error( - "CMapReaderFactory not initialized, see the `useWorkerFetch` parameter." - ); - } - return this.cMapReaderFactory.fetch(data); - }); + const factory = this[data.type]; - messageHandler.on("FetchStandardFontData", async data => { - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - throw new Error("Not implemented: FetchStandardFontData"); - } - if (this.destroyed) { - throw new Error("Worker was destroyed."); - } - if (!this.standardFontDataFactory) { - throw new Error( - "StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter." - ); - } - return this.standardFontDataFactory.fetch(data); - }); - - messageHandler.on("FetchWasm", async data => { - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { - throw new Error("Not implemented: FetchWasm"); - } - if (this.destroyed) { - throw new Error("Worker was destroyed."); - } - if (!this.wasmFactory) { + if (!factory) { throw new Error( - "WasmFactory not initialized, see the `useWorkerFetch` parameter." + `${data.type} not initialized, see the \`useWorkerFetch\` parameter.` ); } - return this.wasmFactory.fetch(data); + return factory.fetch(data); }); } From 68e41d539eed82f03e0696309a3b5c01567db98c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 31 Jan 2025 23:12:01 +0100 Subject: [PATCH 244/338] [api-minor] Simplify the `TextLayer.#getAscent` fallback (PR 12896 follow-up) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At the time of PR 12896 the `fontBoundingBox{Ascent, Descent}` properties were not yet available by default in Fírefox, however that's no longer the case since Firefox 116; please see https://bugzilla.mozilla.org/show_bug.cgi?id=1801198. Hence this patch which replaces the "full" fallback with a warning and uses the `ascent`/`descent` values from the fonts in the PDF document (as we did previously). Obviously the TextLayer won't look as good in that case, but it's a simpler and shorter solution. --- src/display/text_layer.js | 67 ++++++++++++--------------------------- 1 file changed, 21 insertions(+), 46 deletions(-) diff --git a/src/display/text_layer.js b/src/display/text_layer.js index 4bcfde930174c..e1f111386eb48 100644 --- a/src/display/text_layer.js +++ b/src/display/text_layer.js @@ -46,7 +46,6 @@ import { setLayerDimensions } from "./display_utils.js"; const MAX_TEXT_DIVS_TO_RENDER = 100000; const DEFAULT_FONT_SIZE = 30; -const DEFAULT_FONT_ASCENT = 0.8; class TextLayer { #capability = Promise.withResolvers(); @@ -332,7 +331,7 @@ class TextLayer { fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily; const fontHeight = Math.hypot(tx[2], tx[3]); const fontAscent = - fontHeight * TextLayer.#getAscent(fontFamily, this.#lang); + fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang); let left, top; if (angle === 0) { @@ -523,7 +522,7 @@ class TextLayer { div.remove(); } - static #getAscent(fontFamily, lang) { + static #getAscent(fontFamily, style, lang) { const cachedAscent = this.#ascentCache.get(fontFamily); if (cachedAscent) { return cachedAscent; @@ -534,55 +533,31 @@ class TextLayer { this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily); const metrics = ctx.measureText(""); - // Both properties aren't available by default in Firefox. - let ascent = metrics.fontBoundingBoxAscent; - let descent = Math.abs(metrics.fontBoundingBoxDescent); - if (ascent) { - const ratio = ascent / (ascent + descent); - this.#ascentCache.set(fontFamily, ratio); + const ascent = metrics.fontBoundingBoxAscent; + const descent = Math.abs(metrics.fontBoundingBoxDescent); - ctx.canvas.width = ctx.canvas.height = 0; - return ratio; - } + ctx.canvas.width = ctx.canvas.height = 0; + let ratio = 0.8; // DEFAULT_FONT_ASCENT - // Try basic heuristic to guess ascent/descent. - // Draw a g with baseline at 0,0 and then get the line - // number where a pixel has non-null red component (starting - // from bottom). - ctx.strokeStyle = "red"; - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("g", 0, 0); - let pixels = ctx.getImageData( - 0, - 0, - DEFAULT_FONT_SIZE, - DEFAULT_FONT_SIZE - ).data; - descent = 0; - for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) { - if (pixels[i] > 0) { - descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE); - break; + if (ascent) { + ratio = ascent / (ascent + descent); + } else { + if ( + (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || + FeatureTest.platform.isFirefox + ) { + warn( + "Enable the `dom.textMetrics.fontBoundingBox.enabled` preference " + + "in `about:config` to improve TextLayer rendering." + ); } - } - - // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line - // number where a pixel has non-null red component (starting - // from top). - ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE); - ctx.strokeText("A", 0, DEFAULT_FONT_SIZE); - pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data; - ascent = 0; - for (let i = 0, ii = pixels.length; i < ii; i += 4) { - if (pixels[i] > 0) { - ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE); - break; + if (style.ascent) { + ratio = style.ascent; + } else if (style.descent) { + ratio = 1 + style.descent; } } - ctx.canvas.width = ctx.canvas.height = 0; - - const ratio = ascent ? ascent / (ascent + descent) : DEFAULT_FONT_ASCENT; this.#ascentCache.set(fontFamily, ratio); return ratio; } From 88e6b622f0f1c6529479c9c1f6a120ed58ccb3b4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 9 Feb 2025 11:42:17 +0100 Subject: [PATCH 245/338] Use `crypto.getRandomValues` unconditionally in the `src/core/crypto.js` file This functionality is now available in all browsers/environments that we support, please see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues#browser_compatibility --- src/core/crypto.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/core/crypto.js b/src/core/crypto.js index 1eee1e6fc8a49..883c21d89cd0d 100644 --- a/src/core/crypto.js +++ b/src/core/crypto.js @@ -1397,13 +1397,7 @@ class CipherTransform { // Generate an initialization vector const iv = new Uint8Array(16); - if (typeof crypto !== "undefined") { - crypto.getRandomValues(iv); - } else { - for (let i = 0; i < 16; i++) { - iv[i] = Math.floor(256 * Math.random()); - } - } + crypto.getRandomValues(iv); let data = stringToBytes(s); data = cipher.encrypt(data, iv); From 69951e923ab9173982323f1437ba6bdc7e8a109b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 8 Feb 2025 15:38:22 +0100 Subject: [PATCH 246/338] Check for the correct link-id prefix in "must not add links when unnecessary" integration-test (PR 19110 follow-up) Currently this test-case would never fail, even if the actual implementation was broken, since it checks for a link-id prefix that we're not using. --- test/integration/autolinker_spec.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/integration/autolinker_spec.mjs b/test/integration/autolinker_spec.mjs index a39c18f7931ec..455f106d63df6 100644 --- a/test/integration/autolinker_spec.mjs +++ b/test/integration/autolinker_spec.mjs @@ -82,7 +82,7 @@ describe("autolinker", function () { linkIds.forEach(id => expect(id) .withContext(`In ${browserName}`) - .not.toContain("added_link_") + .not.toContain("inferred_link_") ); }) ); From 270b44d318670a018b16dd66a615a859c12578c7 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 8 Feb 2025 11:17:35 +0100 Subject: [PATCH 247/338] Shorten the `MeshStreamReader.prototype.readBits` method a little bit - Use a `BaseStream`-instance method to directly get the int32 value. - Use local variables more. --- src/core/pattern.js | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/core/pattern.js b/src/core/pattern.js index 38fb16c20370a..598d5d2a93e7c 100644 --- a/src/core/pattern.js +++ b/src/core/pattern.js @@ -340,24 +340,19 @@ class MeshStreamReader { } readBits(n) { - let buffer = this.buffer; - let bufferLength = this.bufferLength; + const { stream } = this; + let { buffer, bufferLength } = this; + if (n === 32) { if (bufferLength === 0) { - return ( - ((this.stream.getByte() << 24) | - (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | - this.stream.getByte()) >>> - 0 - ); + return stream.getInt32() >>> 0; } buffer = (buffer << 24) | - (this.stream.getByte() << 16) | - (this.stream.getByte() << 8) | - this.stream.getByte(); - const nextByte = this.stream.getByte(); + (stream.getByte() << 16) | + (stream.getByte() << 8) | + stream.getByte(); + const nextByte = stream.getByte(); this.buffer = nextByte & ((1 << bufferLength) - 1); return ( ((buffer << (8 - bufferLength)) | @@ -366,10 +361,10 @@ class MeshStreamReader { ); } if (n === 8 && bufferLength === 0) { - return this.stream.getByte(); + return stream.getByte(); } while (bufferLength < n) { - buffer = (buffer << 8) | this.stream.getByte(); + buffer = (buffer << 8) | stream.getByte(); bufferLength += 8; } bufferLength -= n; From d4bc44582056d030a70e496504c88022c5519251 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 9 Feb 2025 13:33:55 +0100 Subject: [PATCH 248/338] [api-minor] Update the minimum supported Google Chrome version to 110 This patch updates the minimum supported browsers as follows: - Google Chrome 110, which was released on 2023-02-07; see https://chromereleases.googleblog.com/2023/02/stable-channel-update-for-desktop.html Note that nowadays we usually try, where feasible and possible, to support browsers that are about two years old. By limiting support to only "recent" browsers we reduce the risk of holding back improvements of the *built-in* Firefox PDF Viewer, and also (significantly) reduce the maintenance/support burden for the PDF.js contributors. *Please note:* As always, the minimum supported browser version assumes that a `legacy`-build of the PDF.js library is being used; see https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq-support --- gulpfile.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index b66f5c72e8718..ab6a72559c065 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -80,7 +80,7 @@ const config = JSON.parse(fs.readFileSync(CONFIG_FILE).toString()); const ENV_TARGETS = [ "last 2 versions", - "Chrome >= 103", + "Chrome >= 110", "Firefox ESR", "Safari >= 16.4", "Node >= 20", From 19175487857baeb44e16907515e643cad6fd4039 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 7 Feb 2025 16:58:09 +0100 Subject: [PATCH 249/338] [Editor] Add the ability to print and save some newly added signatures (bug 1946795) --- src/core/annotation.js | 67 ++++ src/display/editor/draw.js | 4 +- src/display/editor/signature.js | 92 ++++- test/test_manifest.json | 575 ++++++++++++++++++++++++++++++++ test/unit/annotation_spec.js | 51 +++ web/signature_manager.js | 6 +- 6 files changed, 790 insertions(+), 5 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 33cfcaf712222..0693a04dc9792 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -410,6 +410,11 @@ class AnnotationFactory { }) ); break; + case AnnotationEditorType.SIGNATURE: + promises.push( + StampAnnotation.createNewAnnotation(xref, annotation, changes, {}) + ); + break; } } @@ -511,6 +516,18 @@ class AnnotationFactory { ) ); break; + case AnnotationEditorType.SIGNATURE: + promises.push( + StampAnnotation.createNewPrintAnnotation( + annotationGlobals, + xref, + annotation, + { + evaluatorOptions: options, + } + ) + ); + break; } } @@ -5019,11 +5036,61 @@ class StampAnnotation extends MarkupAnnotation { return stamp; } + static async #createNewAppearanceStreamForDrawing(annotation, xref) { + const { areContours, color, rect, lines, thickness } = annotation; + + const appearanceBuffer = [ + `${thickness} w 1 J 1 j`, + `${getPdfColor(color, /* isFill */ areContours)}`, + ]; + + for (const line of lines) { + appearanceBuffer.push( + `${numberToString(line[4])} ${numberToString(line[5])} m` + ); + for (let i = 6, ii = line.length; i < ii; i += 6) { + if (isNaN(line[i])) { + appearanceBuffer.push( + `${numberToString(line[i + 4])} ${numberToString(line[i + 5])} l` + ); + } else { + const [c1x, c1y, c2x, c2y, x, y] = line.slice(i, i + 6); + appearanceBuffer.push( + [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(" ") + " c" + ); + } + } + if (line.length === 6) { + appearanceBuffer.push( + `${numberToString(line[4])} ${numberToString(line[5])} l` + ); + } + } + appearanceBuffer.push(areContours ? "F" : "S"); + + const appearance = appearanceBuffer.join("\n"); + + const appearanceStreamDict = new Dict(xref); + appearanceStreamDict.set("FormType", 1); + appearanceStreamDict.set("Subtype", Name.get("Form")); + appearanceStreamDict.set("Type", Name.get("XObject")); + appearanceStreamDict.set("BBox", rect); + appearanceStreamDict.set("Length", appearance.length); + + const ap = new StringStream(appearance); + ap.dict = appearanceStreamDict; + + return ap; + } + static async createNewAppearanceStream(annotation, xref, params) { if (annotation.oldAnnotation) { // We'll use the AP we already have. return null; } + if (annotation.isSignature) { + return this.#createNewAppearanceStreamForDrawing(annotation, xref); + } const { rotation } = annotation; const { imageRef, width, height } = params.image; diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index 52d0a3a47cbed..8e9e9641a22f3 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -30,7 +30,9 @@ class DrawingOptions { return; } for (const [name, value] of Object.entries(properties)) { - this.updateProperty(name, value); + if (!name.startsWith("_")) { + this.updateProperty(name, value); + } } } diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index e3f5ba6f8bc1a..2c5c830b9f4f6 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -18,6 +18,7 @@ import { DrawingEditor, DrawingOptions } from "./draw.js"; import { AnnotationEditor } from "./editor.js"; import { ContourDrawOutline } from "./drawers/contour.js"; import { InkDrawingOptions } from "./ink.js"; +import { InkDrawOutline } from "./drawers/inkdraw.js"; import { SignatureExtractor } from "./drawers/signaturedraw.js"; class SignatureOptions extends DrawingOptions { @@ -70,6 +71,7 @@ class SignatureEditor extends DrawingEditor { constructor(params) { super({ ...params, mustBeCommitted: true, name: "signatureEditor" }); this._willKeepAspectRatio = true; + this._description = ""; } /** @inheritdoc */ @@ -122,17 +124,20 @@ class SignatureEditor extends DrawingEditor { } super.render(); - this.div.hidden = true; this.div.setAttribute("role", "figure"); - this._uiManager.getSignature(this); + if (this._drawId === null) { + this.div.hidden = true; + this._uiManager.getSignature(this); + } return this.div; } - addSignature(outline, heightInPage) { + addSignature(outline, heightInPage, description) { const { x: savedX, y: savedY } = this; this.#isExtracted = outline instanceof ContourDrawOutline; + this._description = description; let drawingOptions; if (this.#isExtracted) { drawingOptions = SignatureEditor.getDefaultDrawingOptions(); @@ -210,6 +215,87 @@ class SignatureEditor extends DrawingEditor { areContours: false, }); } + + /** @inheritdoc */ + createDrawingOptions({ areContours, thickness }) { + if (areContours) { + this._drawingOptions = SignatureEditor.getDefaultDrawingOptions(); + } else { + this._drawingOptions = + SignatureEditor._defaultDrawnSignatureOptions.clone(); + this._drawingOptions.updateProperties({ "stroke-width": thickness }); + } + } + + /** @inheritdoc */ + serialize(isForCopying = false) { + if (this.isEmpty()) { + return null; + } + + const { lines, points, rect } = this.serializeDraw(isForCopying); + const { + _drawingOptions: { "stroke-width": thickness }, + } = this; + const serialized = { + annotationType: AnnotationEditorType.SIGNATURE, + isSignature: true, + areContours: this.#isExtracted, + color: [0, 0, 0], + thickness: this.#isExtracted ? 0 : thickness, + pageIndex: this.pageIndex, + rect, + rotation: this.rotation, + structTreeParentId: this._structTreeParentId, + }; + if (isForCopying) { + serialized.paths = { lines, points }; + } else { + serialized.lines = lines; + } + if (this._description) { + serialized.accessibilityData = { type: "Figure", alt: this._description }; + } + return serialized; + } + + /** @inheritdoc */ + static deserializeDraw( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + data + ) { + if (data.areContours) { + return ContourDrawOutline.deserialize( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + data + ); + } + + return InkDrawOutline.deserialize( + pageX, + pageY, + pageWidth, + pageHeight, + innerMargin, + data + ); + } + + /** @inheritdoc */ + static async deserialize(data, parent, uiManager) { + const editor = await super.deserialize(data, parent, uiManager); + editor.#isExtracted = data.areContours; + editor._description = data.accessibilityData?.alt || ""; + return editor; + } } export { SignatureEditor }; diff --git a/test/test_manifest.json b/test/test_manifest.json index dda23d1d95e19..9247b545b4de3 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -11301,5 +11301,580 @@ "md5": "b2de376f7e96fa2b6afc00dac016c40a", "rounds": 1, "type": "eq" + }, + { + "id": "signature-rotation-print", + "file": "pdfs/tracemonkey.pdf", + "md5": "9a192d8b1a7dc652a19835f6f08098bd", + "rounds": 1, + "lastPage": 1, + "type": "eq", + "print": true, + "annotationStorage": { + "pdfjs_internal_editor_0": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 30.33709076317874, 528.4258915511044, 92.2465096088973, + 605.8765082034198 + ], + "rotation": 0, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 30.337093353271484, + 605.8765258789062, + 30.337093353271484, + 598.2304077148438, + 34.63264083862305, + 596.6561889648438, + 43.22381591796875, + 596.5662841796875, + 51.8149528503418, + 596.476318359375, + 56.11055374145508, + 585.0970458984375, + 56.11055374145508, + 562.4286499023438, + 56.11055374145508, + 539.7601928710938, + 57.83761978149414, + 528.4259643554688, + 61.29179763793945, + 528.4259643554688, + 64.74597930908203, + 528.4259643554688, + 66.4730453491211, + 539.7601928710938, + 66.4730453491211, + 562.4286499023438, + 66.4730453491211, + 585.0970458984375, + 70.76863098144531, + 596.476318359375, + 79.35980224609375, + 596.5662841796875, + 87.9509048461914, + 596.6561889648438, + 92.24649810791016, + 598.2304077148438, + 92.24649810791016, + 601.288818359375, + 92.24649810791016, + 604.3472900390625, + 81.9282455444336, + 605.8765258789062, + 61.29179763793945, + 605.8765258789062 + ] + ] + }, + "pdfjs_internal_editor_1": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 115.2826878157529, 438.45786562832916, 250.9453054937449, + 540.3920820626346 + ], + "rotation": 90, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 115.2826919555664, + 438.4578552246094, + 128.67564392089844, + 438.4578552246094, + 131.4329833984375, + 445.5304870605469, + 131.59056091308594, + 459.6759033203125, + 131.7481231689453, + 473.8213806152344, + 151.6800079345703, + 480.8940734863281, + 191.38607788085938, + 480.8940734863281, + 231.09228515625, + 480.8940734863281, + 250.94525146484375, + 483.7376708984375, + 250.94525146484375, + 489.425048828125, + 250.94525146484375, + 495.1123046875, + 231.09228515625, + 497.955810546875, + 191.38607788085938, + 497.955810546875, + 151.6800079345703, + 497.955810546875, + 131.7481231689453, + 505.0286865234375, + 131.59056091308594, + 519.1740112304688, + 131.4329833984375, + 533.3192749023438, + 128.67564392089844, + 540.3919067382812, + 123.31848907470703, + 540.3919067382812, + 117.96131134033203, + 540.3919067382812, + 115.2826919555664, + 523.4029541015625, + 115.2826919555664, + 489.425048828125 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + }, + "pdfjs_internal_editor_2": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 394.41588899764145, 521.6146706667813, 429.2137094410983, + 565.6428880366412 + ], + "rotation": 180, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 429.2137145996094, + 521.6146850585938, + 429.2137145996094, + 525.9612426757812, + 426.7992858886719, + 526.8561401367188, + 421.97039794921875, + 526.9072265625, + 417.1415100097656, + 526.9583740234375, + 414.72705078125, + 533.4271240234375, + 414.72705078125, + 546.3134155273438, + 414.72705078125, + 559.1997680664062, + 413.7563171386719, + 565.6429443359375, + 411.8147888183594, + 565.6429443359375, + 409.873291015625, + 565.6429443359375, + 408.9025573730469, + 559.1997680664062, + 408.9025573730469, + 546.3134155273438, + 408.9025573730469, + 533.4271240234375, + 406.48809814453125, + 526.9583740234375, + 401.6592102050781, + 526.9072265625, + 396.8303527832031, + 526.8561401367188, + 394.4158935546875, + 525.9612426757812, + 394.4158935546875, + 524.2225952148438, + 394.4158935546875, + 522.4840087890625, + 400.2155456542969, + 521.6146850585938, + 411.8147888183594, + 521.6146850585938 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + }, + "pdfjs_internal_editor_3": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 527.772727521983, 549.8299978104504, 563.1363680037585, + 575.0790592106906 + ], + "rotation": 270, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 563.1363525390625, + 575.0791015625, + 559.6452026367188, + 575.0791015625, + 558.9263916015625, + 573.3272094726562, + 558.8853149414062, + 569.8233642578125, + 558.8442993164062, + 566.319580078125, + 553.6485595703125, + 564.5676879882812, + 543.2982177734375, + 564.5676879882812, + 532.9478759765625, + 564.5676879882812, + 527.772705078125, + 563.86328125, + 527.772705078125, + 562.4545288085938, + 527.772705078125, + 561.0458374023438, + 532.9478759765625, + 560.3414306640625, + 543.2982177734375, + 560.3414306640625, + 553.6485595703125, + 560.3414306640625, + 558.8442993164062, + 558.5894775390625, + 558.8853149414062, + 555.085693359375, + 558.9263916015625, + 551.5819091796875, + 559.6452026367188, + 549.8300170898438, + 561.0416259765625, + 549.8300170898438, + 562.4381103515625, + 549.8300170898438, + 563.1363525390625, + 554.0382080078125, + 563.1363525390625, + 562.4545288085938 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + } + } + }, + { + "id": "signature-rotation-save", + "file": "pdfs/tracemonkey.pdf", + "md5": "9a192d8b1a7dc652a19835f6f08098bd", + "rounds": 1, + "lastPage": 1, + "type": "eq", + "print": true, + "save": true, + "annotationStorage": { + "pdfjs_internal_editor_0": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 30.33709076317874, 528.4258915511044, 92.2465096088973, + 605.8765082034198 + ], + "rotation": 0, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 30.337093353271484, + 605.8765258789062, + 30.337093353271484, + 598.2304077148438, + 34.63264083862305, + 596.6561889648438, + 43.22381591796875, + 596.5662841796875, + 51.8149528503418, + 596.476318359375, + 56.11055374145508, + 585.0970458984375, + 56.11055374145508, + 562.4286499023438, + 56.11055374145508, + 539.7601928710938, + 57.83761978149414, + 528.4259643554688, + 61.29179763793945, + 528.4259643554688, + 64.74597930908203, + 528.4259643554688, + 66.4730453491211, + 539.7601928710938, + 66.4730453491211, + 562.4286499023438, + 66.4730453491211, + 585.0970458984375, + 70.76863098144531, + 596.476318359375, + 79.35980224609375, + 596.5662841796875, + 87.9509048461914, + 596.6561889648438, + 92.24649810791016, + 598.2304077148438, + 92.24649810791016, + 601.288818359375, + 92.24649810791016, + 604.3472900390625, + 81.9282455444336, + 605.8765258789062, + 61.29179763793945, + 605.8765258789062 + ] + ] + }, + "pdfjs_internal_editor_1": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 115.2826878157529, 438.45786562832916, 250.9453054937449, + 540.3920820626346 + ], + "rotation": 90, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 115.2826919555664, + 438.4578552246094, + 128.67564392089844, + 438.4578552246094, + 131.4329833984375, + 445.5304870605469, + 131.59056091308594, + 459.6759033203125, + 131.7481231689453, + 473.8213806152344, + 151.6800079345703, + 480.8940734863281, + 191.38607788085938, + 480.8940734863281, + 231.09228515625, + 480.8940734863281, + 250.94525146484375, + 483.7376708984375, + 250.94525146484375, + 489.425048828125, + 250.94525146484375, + 495.1123046875, + 231.09228515625, + 497.955810546875, + 191.38607788085938, + 497.955810546875, + 151.6800079345703, + 497.955810546875, + 131.7481231689453, + 505.0286865234375, + 131.59056091308594, + 519.1740112304688, + 131.4329833984375, + 533.3192749023438, + 128.67564392089844, + 540.3919067382812, + 123.31848907470703, + 540.3919067382812, + 117.96131134033203, + 540.3919067382812, + 115.2826919555664, + 523.4029541015625, + 115.2826919555664, + 489.425048828125 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + }, + "pdfjs_internal_editor_2": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 394.41588899764145, 521.6146706667813, 429.2137094410983, + 565.6428880366412 + ], + "rotation": 180, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 429.2137145996094, + 521.6146850585938, + 429.2137145996094, + 525.9612426757812, + 426.7992858886719, + 526.8561401367188, + 421.97039794921875, + 526.9072265625, + 417.1415100097656, + 526.9583740234375, + 414.72705078125, + 533.4271240234375, + 414.72705078125, + 546.3134155273438, + 414.72705078125, + 559.1997680664062, + 413.7563171386719, + 565.6429443359375, + 411.8147888183594, + 565.6429443359375, + 409.873291015625, + 565.6429443359375, + 408.9025573730469, + 559.1997680664062, + 408.9025573730469, + 546.3134155273438, + 408.9025573730469, + 533.4271240234375, + 406.48809814453125, + 526.9583740234375, + 401.6592102050781, + 526.9072265625, + 396.8303527832031, + 526.8561401367188, + 394.4158935546875, + 525.9612426757812, + 394.4158935546875, + 524.2225952148438, + 394.4158935546875, + 522.4840087890625, + 400.2155456542969, + 521.6146850585938, + 411.8147888183594, + 521.6146850585938 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + }, + "pdfjs_internal_editor_3": { + "annotationType": 101, + "isSignature": true, + "areContours": true, + "color": [0, 0, 0], + "thickness": 0, + "pageIndex": 0, + "rect": [ + 527.772727521983, 549.8299978104504, 563.1363680037585, + 575.0790592106906 + ], + "rotation": 270, + "structTreeParentId": null, + "lines": [ + [ + null, + null, + null, + null, + 563.1363525390625, + 575.0791015625, + 559.6452026367188, + 575.0791015625, + 558.9263916015625, + 573.3272094726562, + 558.8853149414062, + 569.8233642578125, + 558.8442993164062, + 566.319580078125, + 553.6485595703125, + 564.5676879882812, + 543.2982177734375, + 564.5676879882812, + 532.9478759765625, + 564.5676879882812, + 527.772705078125, + 563.86328125, + 527.772705078125, + 562.4545288085938, + 527.772705078125, + 561.0458374023438, + 532.9478759765625, + 560.3414306640625, + 543.2982177734375, + 560.3414306640625, + 553.6485595703125, + 560.3414306640625, + 558.8442993164062, + 558.5894775390625, + 558.8853149414062, + 555.085693359375, + 558.9263916015625, + 551.5819091796875, + 559.6452026367188, + 549.8300170898438, + 561.0416259765625, + 549.8300170898438, + 562.4381103515625, + 549.8300170898438, + 563.1363525390625, + 554.0382080078125, + 563.1363525390625, + 562.4545288085938 + ] + ], + "accessibilityData": { + "type": "Figure", + "alt": "T" + } + } + } } ] diff --git a/test/unit/annotation_spec.js b/test/unit/annotation_spec.js index a7c968644c327..8124fe6cf294a 100644 --- a/test/unit/annotation_spec.js +++ b/test/unit/annotation_spec.js @@ -5090,4 +5090,55 @@ describe("annotation", function () { ); }); }); + + describe("StampAnnotation for signatures", function () { + it("should create a new Stamp annotation", async function () { + const xref = (partialEvaluator.xref = new XRefMock()); + const changes = new RefSetCache(); + const task = new WorkerTask("test Stamp creation"); + await AnnotationFactory.saveNewAnnotations( + partialEvaluator, + task, + [ + { + annotationType: 101, + isSignature: true, + areContours: true, + color: [0, 0, 0], + thickness: 0, + pageIndex: 0, + rect: [12, 34, 56, 78], + rotation: 0, + structTreeParentId: null, + lines: [[NaN, NaN, NaN, NaN, 1, 2, 3, 4, 5, 6, 7, 8]], + }, + ], + null, + changes + ); + const data = await writeChanges(changes, xref); + + const base = data[0].data.replace(/\(D:\d+\)/, "(date)"); + expect(base).toEqual( + "1 0 obj\n" + + "<< /Type /Annot /Subtype /Stamp /CreationDate (date) /Rect [12 34 56 78] " + + "/F 4 /Border [0 0 0] " + + "/Rotate 0 /AP << /N 2 0 R>>>>\n" + + "endobj\n" + ); + + const appearance = data[1].data; + expect(appearance).toEqual( + "2 0 obj\n" + + "<< /FormType 1 /Subtype /Form /Type /XObject /BBox [12 34 56 78] /Length 37>> stream\n" + + "0 w 1 J 1 j\n" + + "0 g\n" + + "1 2 m\n" + + "3 4 5 6 7 8 c\n" + + "F\n" + + "endstream\n" + + "endobj\n" + ); + }); + }); }); diff --git a/web/signature_manager.js b/web/signature_manager.js index 0578c7eb16479..945282cf9d976 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -666,7 +666,11 @@ class SignatureManager { data = this.#extractedSignatureData; break; } - this.#currentEditor.addSignature(data, /* heightInPage */ 40); + this.#currentEditor.addSignature( + data, + /* heightInPage */ 40, + this.#description.value + ); if (this.#saveCheckbox.checked) { // TODO } From 50b40c7a6c19199860bd9ef450e18f2de3c67b8e Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 9 Feb 2025 16:24:45 +0100 Subject: [PATCH 250/338] Replace a couple of loops with `TypedArray.prototype.fill()` When you want to initialize a TypedArray with a non-zero value for all elements the `fill`-method is simpler than manually looping through it. --- src/core/function.js | 5 +---- src/core/jbig2.js | 8 ++------ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/core/function.js b/src/core/function.js index 618eeee233572..6864b13d4980b 100644 --- a/src/core/function.js +++ b/src/core/function.js @@ -252,12 +252,9 @@ class PDFFunction { // Building the cube vertices: its part and sample index // http://rjwagner49.com/Mathematics/Interpolation.pdf const cubeVertices = 1 << inputSize; - const cubeN = new Float64Array(cubeVertices); + const cubeN = new Float64Array(cubeVertices).fill(1); const cubeVertex = new Uint32Array(cubeVertices); let i, j; - for (j = 0; j < cubeVertices; j++) { - cubeN[j] = 1; - } let k = outputSize, pos = 1; diff --git a/src/core/jbig2.js b/src/core/jbig2.js index 3775468278eda..448f23e4fd863 100644 --- a/src/core/jbig2.js +++ b/src/core/jbig2.js @@ -805,9 +805,7 @@ function decodeTextRegion( for (i = 0; i < height; i++) { row = new Uint8Array(width); if (defaultPixelValue) { - for (let j = 0; j < width; j++) { - row[j] = defaultPixelValue; - } + row.fill(defaultPixelValue); } bitmap.push(row); } @@ -1041,9 +1039,7 @@ function decodeHalftoneRegion( for (i = 0; i < regionHeight; i++) { row = new Uint8Array(regionWidth); if (defaultPixelValue) { - for (j = 0; j < regionWidth; j++) { - row[j] = defaultPixelValue; - } + row.fill(defaultPixelValue); } regionBitmap.push(row); } From 637089b5b7169ffc034a11a561136d2c1846ec8e Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 9 Feb 2025 16:27:16 +0100 Subject: [PATCH 251/338] Remove the dependency between two ink editor integration tests The second test of the basic operations block for the ink editor depends on the first test to work. This becomes visible if we only run the second test, using `fit`, which always fails with: `ProtocolError: Waiting for selector '.annotationEditorLayer' failed: Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.` The problem is that the second test doesn't enable the ink editor and relies on the first test having done that already (because we don't close the document between tests yet). This commit fixes the issue by unconditionally enabling the ink editor in the second test to remove the dependency between the two tests so they both pass in isolation. --- test/integration/ink_editor_spec.mjs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 6fbb91acf7b25..3e41ce469408d 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -113,6 +113,8 @@ describe("Ink Editor", () => { pages.map(async ([browserName, page]) => { await clearAll(page); + await switchToInk(page); + const rect = await getRect(page, ".annotationEditorLayer"); const xStart = rect.x + 300; From b644b59e585b57cad205abdbeaad81b1cb51e6fa Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 9 Feb 2025 16:35:55 +0100 Subject: [PATCH 252/338] Isolate the ink editor integration tests To avoid being able to introduce dependencies between tests, and to bring existing dependencies to the surface, this commit makes sure that we close the document between tests so that we can't accidentally rely on state set by a previous test. This prevents multiple tests from failing if one of them fails and makes debugging easier by being able to run each test on their own independent of other tests. This commit, combined with the previous one, is enough to make the ink editor integration test suite pass consistently if random mode in Jasmine is enabled, proving that the tests are fully isolated now. --- test/integration/ink_editor_spec.mjs | 74 ++++++++++++++-------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 3e41ce469408d..8e8270dec7754 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -68,11 +68,11 @@ describe("Ink Editor", () => { describe("Basic operations", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("aboutstacks.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -111,8 +111,6 @@ describe("Ink Editor", () => { it("must draw, undo/redo and check that the editor don't move", async () => { await Promise.all( pages.map(async ([browserName, page]) => { - await clearAll(page); - await switchToInk(page); const rect = await getRect(page, ".annotationEditorLayer"); @@ -154,11 +152,11 @@ describe("Ink Editor", () => { describe("with a rotated pdf", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("issue16278.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -193,11 +191,11 @@ describe("Ink Editor", () => { describe("Invisible layers must be disabled", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -248,11 +246,11 @@ describe("Ink Editor", () => { describe("Ink editor must be committed when blurred", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -282,11 +280,11 @@ describe("Ink Editor", () => { describe("Undo a draw", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -326,11 +324,11 @@ describe("Ink Editor", () => { describe("Delete a draw and undo it on another page", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -383,11 +381,11 @@ describe("Ink Editor", () => { describe("Delete a draw, scroll and undo it", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -435,11 +433,11 @@ describe("Ink Editor", () => { describe("Draw several times in the same editor", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -471,11 +469,11 @@ describe("Ink Editor", () => { describe("Drawing must unselect all", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -510,11 +508,11 @@ describe("Ink Editor", () => { describe("Selected editor must be updated even if the page has been destroyed", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -585,11 +583,11 @@ describe("Ink Editor", () => { describe("Can delete the drawing in progress and undo the deletion", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -629,11 +627,11 @@ describe("Ink Editor", () => { describe("Annotation mustn't take focus if it isn't visible", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -686,11 +684,11 @@ describe("Ink Editor", () => { describe("Ink (update existing)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("inks.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -787,11 +785,11 @@ describe("Ink Editor", () => { describe("Ink (move existing)", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("inks.pdf", getAnnotationSelector("277R")); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -955,11 +953,11 @@ describe("Ink Editor", () => { describe("Ink must update its stroke width when not the current active layer", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1017,7 +1015,7 @@ describe("Ink Editor", () => { describe("Draw annotations on several page, move one of them and delete it", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait( "tracemonkey.pdf", ".annotationEditorLayer", @@ -1025,7 +1023,7 @@ describe("Ink Editor", () => { ); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1081,11 +1079,11 @@ describe("Ink Editor", () => { describe("Page position should remain unchanged after drawing", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); @@ -1132,11 +1130,11 @@ describe("Ink Editor", () => { describe("The pen-drawn shape must maintain correct curvature regardless of the page it is drawn on or whether the curve's endpoint lies within or beyond the page boundaries", () => { let pages; - beforeAll(async () => { + beforeEach(async () => { pages = await loadAndWait("tracemonkey.pdf", ".annotationEditorLayer"); }); - afterAll(async () => { + afterEach(async () => { await closePages(pages); }); From 3a48b6572417881aa14513fcb65acc1af1a4e76c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 8 Feb 2025 17:07:03 +0100 Subject: [PATCH 253/338] Ignore the URLs when checking if inferred links overlap existing LinkAnnotations (PR 19110 follow-up) *Note:* For the issue mentioned on Matrix it'll obviously still make sense to improve the regular expression to detect more URL edge-cases. However it occurred to me that even once that particular case is fixed there'll always be a risk that inferred links could overlap, and effectively block, the actual LinkAnnotations. Hence this patch removes the URL comparison to ensure that overlapping inferred links will always be ignored. --- test/integration/autolinker_spec.mjs | 33 +++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/pr19449.pdf | Bin 0 -> 11528 bytes web/annotation_layer_builder.js | 2 +- web/app.js | 1 + 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/pr19449.pdf diff --git a/test/integration/autolinker_spec.mjs b/test/integration/autolinker_spec.mjs index 455f106d63df6..4492fa556ff9d 100644 --- a/test/integration/autolinker_spec.mjs +++ b/test/integration/autolinker_spec.mjs @@ -88,4 +88,37 @@ describe("autolinker", function () { ); }); }); + + describe("pr19449.pdf", function () { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("pr19449.pdf", ".annotationLayer", null, null, { + docBaseUrl: "http://example.com", + enableAutoLinking: true, + }); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must not add links that overlap even if the URLs are different", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + const linkIds = await page.$$eval( + ".annotationLayer > .linkAnnotation > a", + annotations => + annotations.map(a => a.getAttribute("data-element-id")) + ); + expect(linkIds.length).withContext(`In ${browserName}`).toEqual(1); + linkIds.forEach(id => + expect(id) + .withContext(`In ${browserName}`) + .not.toContain("inferred_link_") + ); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 14660ecd31060..83fa48a0b0e25 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -276,6 +276,7 @@ !pr6531_1.pdf !pr6531_2.pdf !pr7352.pdf +!pr19449.pdf !bug900822.pdf !bug1392647.pdf !issue918.pdf diff --git a/test/pdfs/pr19449.pdf b/test/pdfs/pr19449.pdf new file mode 100644 index 0000000000000000000000000000000000000000..90c15d22a725015f3f1ad4c8db684335efbd76bf GIT binary patch literal 11528 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 literal 0 HcmV?d00001 diff --git a/web/annotation_layer_builder.js b/web/annotation_layer_builder.js index effe83bf6413f..24c4668c25148 100644 --- a/web/annotation_layer_builder.js +++ b/web/annotation_layer_builder.js @@ -327,7 +327,7 @@ class AnnotationLayerBuilder { for (const annotation of this.#annotations) { if ( annotation.annotationType !== AnnotationType.LINK || - annotation.url !== link.url + !annotation.url ) { continue; } diff --git a/web/app.js b/web/app.js index e16d64b084894..61550978cc5c5 100644 --- a/web/app.js +++ b/web/app.js @@ -353,6 +353,7 @@ const PDFViewerApplication = { // Set some specific preferences for tests. if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { Object.assign(opts, { + docBaseUrl: x => x, enableAltText: x => x === "true", enableAutoLinking: x => x === "true", enableFakeMLManager: x => x === "true", From a98c136996197b6099b6787098c547c05e0b771c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 10 Feb 2025 09:19:04 +0100 Subject: [PATCH 254/338] Check that the annotationLayer is still active before injecting inferred links (PR 19110 follow-up) This issue is quite difficult to trigger reliably, however it's possible for rendering to have been aborted and thus for the annotationLayer to have been removed once we're invoking `injectLinkAnnotations`. In that case, an Error is thrown[1]. The way that I'm able to *intermittently* trigger this is by: - Loading http://localhost:8888/web/viewer.html?file=/test/pdfs/pdf.pdf#disableHistory=true - Enable "Wrapped Srolling" mode. - Quickly zoom out, to the minimum zoom level. --- [1] ``` renderView: TypeError: can't access property "injectLinkAnnotations", this.annotationLayer is null resultPromise http://localhost:8888/web/pdf_page_view.js:1116 draw http://localhost:8888/web/pdf_page_view.js:1099 renderView http://localhost:8888/web/pdf_rendering_queue.js:196 forceRendering http://localhost:8888/web/pdf_viewer.js:1849 promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848 renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79 renderView http://localhost:8888/web/pdf_rendering_queue.js:198 renderView http://localhost:8888/web/pdf_rendering_queue.js:197 forceRendering http://localhost:8888/web/pdf_viewer.js:1849 promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848 renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79 renderView http://localhost:8888/web/pdf_rendering_queue.js:198 renderView http://localhost:8888/web/pdf_rendering_queue.js:197 forceRendering http://localhost:8888/web/pdf_viewer.js:1849 promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848 renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79 renderView http://localhost:8888/web/pdf_rendering_queue.js:198 renderView http://localhost:8888/web/pdf_rendering_queue.js:197 forceRendering http://localhost:8888/web/pdf_viewer.js:1849 promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848 renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79 renderView http://localhost:8888/web/pdf_rendering_queue.js:198 renderView http://localhost:8888/web/pdf_rendering_queue.js:197 forceRendering http://localhost:8888/web/pdf_viewer.js:1849 promise callback*forceRendering http://localhost:8888/web/pdf_viewer.js:1848 renderHighestPriority http://localhost:8888/web/pdf_rendering_queue.js:79 update http://localhost:8888/web/pdf_viewer.js:1677 onScaleChanging http://localhost:8888/web/app.js:2550 dispatch http://localhost:8888/web/event_utils.js:115 #setScaleUpdatePages http://localhost:8888/web/pdf_viewer.js:1363 #setScale http://localhost:8888/web/pdf_viewer.js:1389 updateScale http://localhost:8888/web/pdf_viewer.js:2263 updateZoom http://localhost:8888/web/app.js:814 zoomOut http://localhost:8888/web/app.js:827 onKeyDown http://localhost:8888/web/app.js:2780 bindWindowEvents http://localhost:8888/web/app.js:2097 initialize http://localhost:8888/web/app.js:262 run http://localhost:8888/web/app.js:704 webViewerLoad http://localhost:8888/web/viewer.js:294 http://localhost:8888/web/viewer.js:305 pdf_rendering_queue.js:204:21 ``` --- web/pdf_page_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 06c3037673a69..f4605b14162b6 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -1113,7 +1113,7 @@ class PDFPageView { if (this.#enableAutoLinking) { await textLayerPromise; - this.annotationLayer.injectLinkAnnotations({ + this.annotationLayer?.injectLinkAnnotations({ inferredLinks: Autolinker.processLinks(this), viewport: this.viewport, structTreeLayer: this.structTreeLayer, From 628663ba4aa0d8fff8c570b5e72c76688974c373 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 9 Feb 2025 18:47:49 +0100 Subject: [PATCH 255/338] Update dependencies to the most recent versions Moreover, fix the linting issues (using `npx gulp lint --fix`) that are found by the new versions of the linting tools. --- examples/mobile-viewer/viewer.css | 4 +- gulpfile.mjs | 2 +- package-lock.json | 512 ++++++++++++------------ package.json | 20 +- web/annotation_editor_layer_builder.css | 14 +- web/signature_manager.css | 3 +- web/viewer.css | 4 +- 7 files changed, 271 insertions(+), 288 deletions(-) diff --git a/examples/mobile-viewer/viewer.css b/examples/mobile-viewer/viewer.css index b58dc91419481..bd27157a46132 100644 --- a/examples/mobile-viewer/viewer.css +++ b/examples/mobile-viewer/viewer.css @@ -113,8 +113,8 @@ footer { background-color: rgb(0 0 0 / 0); font-size: 1.2rem; color: rgb(255 255 255 / 1); - background-image: url(images/div_line_left.png), - url(images/div_line_right.png); + background-image: + url(images/div_line_left.png), url(images/div_line_right.png); background-repeat: no-repeat; background-position: left, right; background-size: 0.2rem, 0.2rem; diff --git a/gulpfile.mjs b/gulpfile.mjs index ab6a72559c065..010efabde165f 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -2290,7 +2290,7 @@ function packageJson() { bugs: DIST_BUGS_URL, license: DIST_LICENSE, optionalDependencies: { - "@napi-rs/canvas": "^0.1.65", + "@napi-rs/canvas": "^0.1.67", }, browser: { canvas: false, diff --git a/package-lock.json b/package-lock.json index 929866e18b342..d92436f3cddc9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,25 +7,25 @@ "name": "pdf.js", "license": "Apache-2.0", "devDependencies": { - "@babel/core": "^7.26.7", - "@babel/preset-env": "^7.26.7", + "@babel/core": "^7.26.8", + "@babel/preset-env": "^7.26.8", "@babel/runtime": "^7.26.7", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.13.0", + "@napi-rs/canvas": "^0.1.67", + "@types/node": "^22.13.1", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001696", + "caniuse-lite": "^1.0.30001699", "core-js": "^3.40.0", - "eslint": "^9.19.0", + "eslint": "^9.20.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.7.0", + "eslint-plugin-perfectionist": "^4.8.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -36,7 +36,7 @@ "gulp-replace": "^1.1.4", "gulp-zip": "^6.1.0", "highlight.js": "^11.11.1", - "jasmine": "^5.5.0", + "jasmine": "^5.6.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", @@ -48,8 +48,8 @@ "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.4.2", - "puppeteer": "^24.1.1", + "prettier": "^3.5.0", + "puppeteer": "^24.2.0", "stylelint": "^16.14.1", "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", @@ -117,9 +117,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", - "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "license": "MIT", "engines": { @@ -127,22 +127,23 @@ } }, "node_modules/@babel/core": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.7.tgz", - "integrity": "sha512-SRijHmF0PSPgLIBYlWnG0hyeJLwXE2CgpsXaMOrtt2yp9/86ALw6oUlj9KYuZ0JN07T4eBMVIW4li/9S1j2BGA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", + "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", + "@babel/generator": "^7.26.8", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.26.7", - "@babel/types": "^7.26.7", + "@babel/parser": "^7.26.8", + "@babel/template": "^7.26.8", + "@babel/traverse": "^7.26.8", + "@babel/types": "^7.26.8", + "@types/gensync": "^1.0.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -167,14 +168,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", - "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", + "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.5", - "@babel/types": "^7.26.5", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -291,9 +292,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "license": "MIT", "dependencies": { @@ -486,13 +487,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", + "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.7" + "@babel/types": "^7.26.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -662,15 +663,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -1394,13 +1395,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1493,13 +1494,13 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.7.tgz", - "integrity": "sha512-Ycg2tnXwixaXOVb29rana8HNPgLVBof8qqtNQ9LE22IoyZboQbGSxI6ZySMdW3K5nAe6gu35IaJefUJflhUFTQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.8.tgz", + "integrity": "sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.5", + "@babel/compat-data": "^7.26.8", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", @@ -1513,7 +1514,7 @@ "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-async-to-generator": "^7.25.9", "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", @@ -1556,7 +1557,7 @@ "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", @@ -1564,9 +1565,9 @@ "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -1613,32 +1614,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", + "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.7.tgz", - "integrity": "sha512-1x1sgeyRLC3r5fQOM0/xtQKsYjyxmFjaOrLJNtZ81inNjyJHGIolTULPiSc/2qe1/qfpFLisLQYFnnZl7QoedA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", + "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.5", - "@babel/parser": "^7.26.7", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7", + "@babel/generator": "^7.26.8", + "@babel/parser": "^7.26.8", + "@babel/template": "^7.26.8", + "@babel/types": "^7.26.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1657,9 +1658,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", + "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", "dev": true, "license": "MIT", "dependencies": { @@ -1859,9 +1860,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", - "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "dev": true, "license": "MIT", "engines": { @@ -2242,31 +2243,31 @@ } }, "node_modules/@napi-rs/canvas": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.65.tgz", - "integrity": "sha512-YcFhXQcp+b2d38zFOJNbpyPHnIL7KAEkhJQ+UeeKI5IpE9B8Cpf/M6RiHPQXSsSqnYbrfFylnW49dyh2oeSblQ==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas/-/canvas-0.1.67.tgz", + "integrity": "sha512-VA4Khm/5Kg2bQGx3jXotTC4MloOG8b1Ung80exafUK0k5u6yJmIz3Q2iXeeWZs5weV+LQOEB+CPKsYwEYaGAjw==", "dev": true, "license": "MIT", "engines": { "node": ">= 10" }, "optionalDependencies": { - "@napi-rs/canvas-android-arm64": "0.1.65", - "@napi-rs/canvas-darwin-arm64": "0.1.65", - "@napi-rs/canvas-darwin-x64": "0.1.65", - "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.65", - "@napi-rs/canvas-linux-arm64-gnu": "0.1.65", - "@napi-rs/canvas-linux-arm64-musl": "0.1.65", - "@napi-rs/canvas-linux-riscv64-gnu": "0.1.65", - "@napi-rs/canvas-linux-x64-gnu": "0.1.65", - "@napi-rs/canvas-linux-x64-musl": "0.1.65", - "@napi-rs/canvas-win32-x64-msvc": "0.1.65" + "@napi-rs/canvas-android-arm64": "0.1.67", + "@napi-rs/canvas-darwin-arm64": "0.1.67", + "@napi-rs/canvas-darwin-x64": "0.1.67", + "@napi-rs/canvas-linux-arm-gnueabihf": "0.1.67", + "@napi-rs/canvas-linux-arm64-gnu": "0.1.67", + "@napi-rs/canvas-linux-arm64-musl": "0.1.67", + "@napi-rs/canvas-linux-riscv64-gnu": "0.1.67", + "@napi-rs/canvas-linux-x64-gnu": "0.1.67", + "@napi-rs/canvas-linux-x64-musl": "0.1.67", + "@napi-rs/canvas-win32-x64-msvc": "0.1.67" } }, "node_modules/@napi-rs/canvas-android-arm64": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.65.tgz", - "integrity": "sha512-ZYwqFYEKcT5Zr8lbiaJNJj/poLaeK2TncolY914r+gD2TJNeP7ZqvE7A2SX/1C9MB4E3DQEwm3YhL3WEf0x3MQ==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-android-arm64/-/canvas-android-arm64-0.1.67.tgz", + "integrity": "sha512-W+3DFG5h0WU8Vqqb3W5fNmm5/TPH5ECZRinQDK4CAKFSUkc4iZcDwrmyFG9sB4KdHazf1mFVHCpEeVMO6Mk6Zg==", "cpu": [ "arm64" ], @@ -2281,9 +2282,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-arm64": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.65.tgz", - "integrity": "sha512-Pg1pfiJEyDIsX+V0QaJPRWvXbw5zmWAk3bivFCvt/5pwZb37/sT6E/RqPHT9NnqpDyKW6SriwY9ypjljysUA1Q==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-arm64/-/canvas-darwin-arm64-0.1.67.tgz", + "integrity": "sha512-xzrv7QboI47yhIHR5P5u/9KGswokuOKLiKSukr1Ku03RRJxP6lGuVtrAZAgdRg7F9FsuF2REf2yK53YVb6pMlA==", "cpu": [ "arm64" ], @@ -2298,9 +2299,9 @@ } }, "node_modules/@napi-rs/canvas-darwin-x64": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.65.tgz", - "integrity": "sha512-3Tr+/HjdJN7Z/VKIcsxV2DvDIibZCExgfYTgljCkUSFuoI7iNkOE6Dc1Q6j212EB9PeO8KmfrViBqHYT6IwWkA==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-darwin-x64/-/canvas-darwin-x64-0.1.67.tgz", + "integrity": "sha512-SNk9lYBr84N0gW8MZ2IrjygFtbFBILr3SEqMdHzHHuph20SQmssFvJGPZwSSCMEyKAvyqhogbmlew0te5Z4w9Q==", "cpu": [ "x64" ], @@ -2315,9 +2316,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm-gnueabihf": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.65.tgz", - "integrity": "sha512-3KP+dYObH7CVkZMZWwk1WX9jRjL+EKdQtD43H8MOI+illf+dwqLlecdQ4d9bQRIxELKJ8dyPWY4fOp/Ngufrdg==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm-gnueabihf/-/canvas-linux-arm-gnueabihf-0.1.67.tgz", + "integrity": "sha512-qmBlSvUpl567bzH8tNXi82u5FrL4d0qINqd6K9O7GWGGGFmKMJdrgi2/SW3wwCTxqHBasIDdVWc4KSJfwyaoDQ==", "cpu": [ "arm" ], @@ -2332,9 +2333,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-gnu": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.65.tgz", - "integrity": "sha512-Ka3StKz7Dq7kjTF3nNJCq43UN/VlANS7qGE3dWkn1d+tQNsCRy/wRmyt1TUFzIjRqcTFMQNRbgYq84+53UBA0A==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-gnu/-/canvas-linux-arm64-gnu-0.1.67.tgz", + "integrity": "sha512-k3nAPQefkMeFuJ65Rqdnx92KX1JXQhEKjjWeKsCJB+7sIBgQUWtHo9c3etfVLv5pkWJJDFi/Zc2soNkH3E8dRA==", "cpu": [ "arm64" ], @@ -2349,9 +2350,9 @@ } }, "node_modules/@napi-rs/canvas-linux-arm64-musl": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.65.tgz", - "integrity": "sha512-O4xMASm2JrmqYoiDyxVWi+z5C14H+oVEag2rZ5iIA67dhWqYZB+iO7wCFpBYRj31JPBR29FOsu6X9zL+DwBFdw==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-arm64-musl/-/canvas-linux-arm64-musl-0.1.67.tgz", + "integrity": "sha512-lZwHWR1cCP408l86n3Qbs3X1oFeAYMjJIQvQl1VMZh6wo5PfI+jaZSKBUOd8x44TnVllX9yhLY9unNRztk/sUQ==", "cpu": [ "arm64" ], @@ -2366,9 +2367,9 @@ } }, "node_modules/@napi-rs/canvas-linux-riscv64-gnu": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.65.tgz", - "integrity": "sha512-dblWDaA59ZU8bPbkfM+riSke7sFbNZ70LEevUdI5rgiFEUzYUQlU34gSBzemTACj5rCWt1BYeu0GfkLSjNMBSw==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-riscv64-gnu/-/canvas-linux-riscv64-gnu-0.1.67.tgz", + "integrity": "sha512-PdBC9p6bLHA1W3OdA0vTHj701SB/kioGQ1uCFBRMs5KBCaMLb/H4aNi8uaIUIEvBWnxeAjoNcLU7//q0FxEosw==", "cpu": [ "riscv64" ], @@ -2383,9 +2384,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-gnu": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.65.tgz", - "integrity": "sha512-wsp+atutw13OJXGU3DDkdngtBDoEg01IuK5xMe0L6VFPV8maGkh17CXze078OD5QJOc6kFyw3DDscMLOPF8+oA==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-gnu/-/canvas-linux-x64-gnu-0.1.67.tgz", + "integrity": "sha512-kJJX6eWzjipL/LdKOWCJctc88e5yzuXri8+s0V/lN06OwuLGW62TWS3lvi8qlUrGMOfRGabSWWlB4omhASSB8w==", "cpu": [ "x64" ], @@ -2400,9 +2401,9 @@ } }, "node_modules/@napi-rs/canvas-linux-x64-musl": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.65.tgz", - "integrity": "sha512-odX+nN+IozWzhdj31INcHz3Iy9+EckNw+VqsZcaUxZOTu7/3FmktRNI6aC1qe5minZNv1m05YOS1FVf7fvmjlA==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-linux-x64-musl/-/canvas-linux-x64-musl-0.1.67.tgz", + "integrity": "sha512-jLKiPWGeN6ZzhnaLG7ex7eexsiHJ1mdtPK1qKvETIcu45dApMXyUIHvdL6XWB5gFFtj5ScHzLUxv1vkfPZsoxA==", "cpu": [ "x64" ], @@ -2417,9 +2418,9 @@ } }, "node_modules/@napi-rs/canvas-win32-x64-msvc": { - "version": "0.1.65", - "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.65.tgz", - "integrity": "sha512-RZQX3luWnlNWgdMnLMQ1hyfQraeAn9lnxWWVCHuUM4tAWEV8UDdeb7cMwmJW7eyt8kAosmjeHt3cylQMHOxGFg==", + "version": "0.1.67", + "resolved": "https://registry.npmjs.org/@napi-rs/canvas-win32-x64-msvc/-/canvas-win32-x64-msvc-0.1.67.tgz", + "integrity": "sha512-K/JmkOFbc4iRZYUqJhj0jwqfHA/wNQEmTiGNsgZ6d59yF/IBNp5T0D5eg3B8ghjI8GxDYCiSJ6DNX8mC3Oh2EQ==", "cpu": [ "x64" ], @@ -2492,9 +2493,9 @@ } }, "node_modules/@puppeteer/browsers": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.0.tgz", - "integrity": "sha512-bO61XnTuopsz9kvtfqhVbH6LTM1koxK0IlBR+yuVrM2LB7mk8+5o1w18l5zqd5cs8xlf+ntgambqRqGifMDjog==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.7.1.tgz", + "integrity": "sha512-MK7rtm8JjaxPN7Mf1JdZIZKPD2Z+W7osvrC1vjpvfOX1K0awDIHYbNi89f7eotp7eMUn2shWnt03HwVbriXtKQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2502,9 +2503,8 @@ "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.6.3", - "tar-fs": "^3.0.6", - "unbzip2-stream": "^1.4.3", + "semver": "^7.7.0", + "tar-fs": "^3.0.8", "yargs": "^17.7.2" }, "bin": { @@ -2515,9 +2515,9 @@ } }, "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -2582,6 +2582,13 @@ "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", "dev": true }, + "node_modules/@types/gensync": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", + "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2624,9 +2631,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.13.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.0.tgz", - "integrity": "sha512-ClIbNe36lawluuvq3+YYhnIN2CELi+6q8NpnM7PYp4hBn/TatfboPgVSm2rwKRfnV2M+Ty9GWDFI64KEe+kysA==", + "version": "22.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", + "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", "dev": true, "license": "MIT", "dependencies": { @@ -2662,14 +2669,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.22.0.tgz", - "integrity": "sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz", + "integrity": "sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/visitor-keys": "8.22.0" + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2680,9 +2687,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.22.0.tgz", - "integrity": "sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.23.0.tgz", + "integrity": "sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==", "dev": true, "license": "MIT", "engines": { @@ -2694,20 +2701,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.22.0.tgz", - "integrity": "sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz", + "integrity": "sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/visitor-keys": "8.22.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/visitor-keys": "8.23.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2747,9 +2754,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -2760,16 +2767,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.22.0.tgz", - "integrity": "sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.23.0.tgz", + "integrity": "sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.22.0", - "@typescript-eslint/types": "8.22.0", - "@typescript-eslint/typescript-estree": "8.22.0" + "@typescript-eslint/scope-manager": "8.23.0", + "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/typescript-estree": "8.23.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2784,13 +2791,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.22.0.tgz", - "integrity": "sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz", + "integrity": "sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.22.0", + "@typescript-eslint/types": "8.23.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3529,14 +3536,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -3621,9 +3628,9 @@ } }, "node_modules/bare-stream": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.4.tgz", - "integrity": "sha512-G6i3A74FjNq4nVrrSTUz5h3vgXzBJnjmWAVlBWaZETkgu+LgKd7AiyOml3EDJY1AHlIbBHKDXE+TUT53Ff8OaA==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", "dev": true, "license": "Apache-2.0", "optional": true, @@ -3722,9 +3729,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -3742,10 +3749,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3754,31 +3761,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -3897,9 +3879,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001696", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz", - "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==", + "version": "1.0.30001699", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", + "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", "dev": true, "funding": [ { @@ -4002,14 +3984,14 @@ } }, "node_modules/chromium-bidi": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.1.0.tgz", - "integrity": "sha512-HislCEczCuamWm3+55Lig9XKmMF13K+BGKum9rwtDAzgUAHT4h5jNwhDmD4U20VoVUG8ujnv9UZ89qiIf5uF8w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.2.0.tgz", + "integrity": "sha512-XtdJ1GSN6S3l7tO7F77GhNsw0K367p0IsLYf2yZawCVAKKC3lUvDhPdMVrB2FNhmhfW43QGYbEX3Wg6q0maGwQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "mitt": "3.0.1", - "zod": "3.24.1" + "mitt": "^3.0.1", + "zod": "^3.24.1" }, "peerDependencies": { "devtools-protocol": "*" @@ -4195,13 +4177,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -4589,9 +4571,9 @@ } }, "node_modules/devtools-protocol": { - "version": "0.0.1380148", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1380148.tgz", - "integrity": "sha512-1CJABgqLxbYxVI+uJY/UDUHJtJ0KZTSjNYJYKqd9FRoXT33WDakDHNxRapMEgzeJ/C3rcs01+avshMnPmKQbvA==", + "version": "0.0.1402036", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1402036.tgz", + "integrity": "sha512-JwAYQgEvm3yD45CHB+RmF5kMbWtXBaOGwuxa87sZogHcLCv8c/IqnThaoQ1y60d7pXWjSKWQphPEc+1rAScVdg==", "dev": true, "license": "BSD-3-Clause" }, @@ -4741,9 +4723,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.32", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz", - "integrity": "sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==", + "version": "1.5.96", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.96.tgz", + "integrity": "sha512-8AJUW6dh75Fm/ny8+kZKJzI1pgoE8bKLZlzDU2W1ENd+DXKJrx7I7l9hb8UWR4ojlnb5OlixMt00QWiYJoVw1w==", "dev": true, "license": "ISC" }, @@ -4980,9 +4962,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -5031,18 +5013,18 @@ } }, "node_modules/eslint": { - "version": "9.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz", - "integrity": "sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", + "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.11.0", "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.19.0", + "@eslint/js": "9.20.0", "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -5252,14 +5234,14 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.7.0.tgz", - "integrity": "sha512-e2ODzm2SsAztFWY3ZRJd1K702vyl8Sapacjc3JluOW294CfA3+jfjin+UxjcrK48EvlNIMOp+JJB9N54YR2LRw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.8.0.tgz", + "integrity": "sha512-ZF04IAPGItYMlj9xjgvvl/QpksZf79g0dkxbNcuxDjbcUSZ4CwucJ7h5Yzt5JuHe+i6igQbUYEp40j4ndfbvWQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.21.0", - "@typescript-eslint/utils": "^8.21.0", + "@typescript-eslint/types": "^8.23.0", + "@typescript-eslint/utils": "^8.23.0", "natural-orderby": "^5.0.0" }, "engines": { @@ -5420,6 +5402,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/@eslint/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7665,23 +7660,23 @@ } }, "node_modules/jasmine": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.5.0.tgz", - "integrity": "sha512-JKlEVCVD5QBPYLsg/VE+IUtjyseDCrW8rMBu8la+9ysYashDgavMLM9Kotls1FhI6dCJLJ40dBCIfQjGLPZI1Q==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.6.0.tgz", + "integrity": "sha512-6frlW22jhgRjtlp68QY/DDVCUfrYqmSxDBWM13mrBzYQGx1XITfVcJltnY15bk8B5cRfN5IpKvemkDiDTSRCsA==", "dev": true, "license": "MIT", "dependencies": { "glob": "^10.2.2", - "jasmine-core": "~5.5.0" + "jasmine-core": "~5.6.0" }, "bin": { "jasmine": "bin/jasmine.js" } }, "node_modules/jasmine-core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.5.0.tgz", - "integrity": "sha512-NHOvoPO6o9gVR6pwqEACTEpbgcH+JJ6QDypyymGbSUIFIFsMMbBJ/xsFNud8MSClfnWclXd7RQlAZBz7yVo5TQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.6.0.tgz", + "integrity": "sha512-niVlkeYVRwKFpmfWg6suo6H9CrNnydfBLEqefM5UjibYS+UoTjZdmvPJSiuyrRLGnFj1eYRhFd/ch+5hSlsFVA==", "dev": true, "license": "MIT" }, @@ -8970,9 +8965,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -9859,9 +9854,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", + "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", "dev": true, "license": "MIT", "bin": { @@ -9984,18 +9979,18 @@ } }, "node_modules/puppeteer": { - "version": "24.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.1.1.tgz", - "integrity": "sha512-fuhceZ5HZuDXVuaMIRxUuDHfCJLmK0pXh8FlzVQ0/+OApStevxZhU5kAVeYFOEqeCF5OoAyZjcWbdQK27xW/9A==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.2.0.tgz", + "integrity": "sha512-z8vv7zPEgrilIbOo3WNvM+2mXMnyM9f4z6zdrB88Fzeuo43Oupmjrzk3EpuvuCtyK0A7Lsllfx7Z+4BvEEGJcQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.7.0", - "chromium-bidi": "1.1.0", + "@puppeteer/browsers": "2.7.1", + "chromium-bidi": "1.2.0", "cosmiconfig": "^9.0.0", - "devtools-protocol": "0.0.1380148", - "puppeteer-core": "24.1.1", + "devtools-protocol": "0.0.1402036", + "puppeteer-core": "24.2.0", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10006,16 +10001,16 @@ } }, "node_modules/puppeteer-core": { - "version": "24.1.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.1.1.tgz", - "integrity": "sha512-7FF3gq6bpIsbq3I8mfbodXh3DCzXagoz3l2eGv1cXooYU4g0P4mcHQVHuBD4iSZPXNg8WjzlP5kmRwK9UvwF0A==", + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.2.0.tgz", + "integrity": "sha512-e4A4/xqWdd4kcE6QVHYhJ+Qlx/+XpgjP4d8OwBx0DJoY/nkIRhSgYmKQnv7+XSs1ofBstalt+XPGrkaz4FoXOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@puppeteer/browsers": "2.7.0", - "chromium-bidi": "1.1.0", + "@puppeteer/browsers": "2.7.1", + "chromium-bidi": "1.2.0", "debug": "^4.4.0", - "devtools-protocol": "0.0.1380148", + "devtools-protocol": "0.0.1402036", "typed-query-selector": "^2.12.0", "ws": "^8.18.0" }, @@ -12280,17 +12275,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "node_modules/unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -12404,9 +12388,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "dev": true, "funding": [ { @@ -12424,8 +12408,8 @@ ], "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" diff --git a/package.json b/package.json index ad51073827fb0..029b79f8a3249 100644 --- a/package.json +++ b/package.json @@ -2,25 +2,25 @@ "name": "pdf.js", "type": "module", "devDependencies": { - "@babel/core": "^7.26.7", - "@babel/preset-env": "^7.26.7", + "@babel/core": "^7.26.8", + "@babel/preset-env": "^7.26.8", "@babel/runtime": "^7.26.7", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", - "@napi-rs/canvas": "^0.1.65", - "@types/node": "^22.13.0", + "@napi-rs/canvas": "^0.1.67", + "@types/node": "^22.13.1", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001696", + "caniuse-lite": "^1.0.30001699", "core-js": "^3.40.0", - "eslint": "^9.19.0", + "eslint": "^9.20.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.7.0", + "eslint-plugin-perfectionist": "^4.8.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -31,7 +31,7 @@ "gulp-replace": "^1.1.4", "gulp-zip": "^6.1.0", "highlight.js": "^11.11.1", - "jasmine": "^5.5.0", + "jasmine": "^5.6.0", "jsdoc": "^4.0.4", "jstransformer-nunjucks": "^1.2.0", "metalsmith": "^2.6.3", @@ -43,8 +43,8 @@ "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.4.2", - "puppeteer": "^24.1.1", + "prettier": "^3.5.0", + "puppeteer": "^24.2.0", "stylelint": "^16.14.1", "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", diff --git a/web/annotation_editor_layer_builder.css b/web/annotation_editor_layer_builder.css index 032d44a282b86..179f866de6b55 100644 --- a/web/annotation_editor_layer_builder.css +++ b/web/annotation_editor_layer_builder.css @@ -41,12 +41,10 @@ ); --editorFreeText-editing-cursor: text; --editorInk-editing-cursor: url(images/cursor-editorInk.svg) 0 16, pointer; - --editorHighlight-editing-cursor: url(images/cursor-editorTextHighlight.svg) - 24 24, - text; - --editorFreeHighlight-editing-cursor: url(images/cursor-editorFreeHighlight.svg) - 1 18, - pointer; + --editorHighlight-editing-cursor: + url(images/cursor-editorTextHighlight.svg) 24 24, text; + --editorFreeHighlight-editing-cursor: + url(images/cursor-editorFreeHighlight.svg) 1 18, pointer; --new-alt-text-warning-image: url(images/altText_warning.svg); } @@ -94,8 +92,8 @@ @media (min-resolution: 1.1dppx) { :root { - --editorFreeText-editing-cursor: url(images/cursor-editorFreeText.svg) 0 16, - text; + --editorFreeText-editing-cursor: + url(images/cursor-editorFreeText.svg) 0 16, text; } } diff --git a/web/signature_manager.css b/web/signature_manager.css index ede846a02f93a..1dc2a58efb1cf 100644 --- a/web/signature_manager.css +++ b/web/signature_manager.css @@ -260,7 +260,8 @@ color: var(--signature-color); background-color: transparent; - font-family: "Brush script", "Apple Chancery", "Segoe script", + font-family: + "Brush script", "Apple Chancery", "Segoe script", "Freestyle Script", "Palace Script MT", "Brush Script MT", TK, cursive, serif; font-size: 44px; diff --git a/web/viewer.css b/web/viewer.css index d577895b2726f..9e6ac313ed8ec 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -51,8 +51,8 @@ --toolbar-border-color: rgb(184 184 184); --toolbar-box-shadow: 0 1px 0 var(--toolbar-border-color); --toolbar-border-bottom: none; - --toolbarSidebar-box-shadow: inset calc(-1px * var(--dir-factor)) 0 0 - rgb(0 0 0 / 0.25), + --toolbarSidebar-box-shadow: + inset calc(-1px * var(--dir-factor)) 0 0 rgb(0 0 0 / 0.25), 0 1px 0 rgb(0 0 0 / 0.15), 0 0 1px rgb(0 0 0 / 0.1); --toolbarSidebar-border-bottom: none; --button-hover-color: rgb(221 222 223); From 220acc2a3b367d16713cb9c54fabefa337075329 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 9 Feb 2025 18:53:04 +0100 Subject: [PATCH 256/338] Update translations to the most recent versions --- l10n/ach/viewer.ftl | 15 ++++++++++ l10n/af/viewer.ftl | 15 ++++++++++ l10n/an/viewer.ftl | 15 ++++++++++ l10n/ar/viewer.ftl | 68 +++++++++++++++++++++++++++++++++++++++++++ l10n/ast/viewer.ftl | 15 ++++++++++ l10n/az/viewer.ftl | 15 ++++++++++ l10n/be/viewer.ftl | 18 ++++++++++++ l10n/bg/viewer.ftl | 15 ++++++++++ l10n/bn/viewer.ftl | 15 ++++++++++ l10n/bo/viewer.ftl | 15 ++++++++++ l10n/br/viewer.ftl | 15 ++++++++++ l10n/brx/viewer.ftl | 15 ++++++++++ l10n/bs/viewer.ftl | 15 ++++++++++ l10n/ca/viewer.ftl | 15 ++++++++++ l10n/cak/viewer.ftl | 15 ++++++++++ l10n/ckb/viewer.ftl | 15 ++++++++++ l10n/cs/viewer.ftl | 15 ++++++++++ l10n/cy/viewer.ftl | 15 ++++++++++ l10n/da/viewer.ftl | 15 ++++++++++ l10n/de/viewer.ftl | 15 ++++++++++ l10n/dsb/viewer.ftl | 55 ++++++++++++++++++++++++++++++++++ l10n/el/viewer.ftl | 59 +++++++++++++++++++++++++++++++++++-- l10n/en-CA/viewer.ftl | 15 ++++++++++ l10n/en-GB/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/eo/viewer.ftl | 15 ++++++++++ l10n/es-AR/viewer.ftl | 56 +++++++++++++++++++++++++++++++++++ l10n/es-CL/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/es-ES/viewer.ftl | 15 ++++++++++ l10n/es-MX/viewer.ftl | 15 ++++++++++ l10n/et/viewer.ftl | 15 ++++++++++ l10n/eu/viewer.ftl | 61 ++++++++++++++++++++++++++++++++++++++ l10n/fa/viewer.ftl | 15 ++++++++++ l10n/ff/viewer.ftl | 15 ++++++++++ l10n/fi/viewer.ftl | 15 ++++++++++ l10n/fr/viewer.ftl | 15 ++++++++++ l10n/fur/viewer.ftl | 17 ++++++++++- l10n/fy-NL/viewer.ftl | 15 ++++++++++ l10n/ga-IE/viewer.ftl | 15 ++++++++++ l10n/gd/viewer.ftl | 15 ++++++++++ l10n/gl/viewer.ftl | 15 ++++++++++ l10n/gn/viewer.ftl | 15 ++++++++++ l10n/gu-IN/viewer.ftl | 15 ++++++++++ l10n/he/viewer.ftl | 52 +++++++++++++++++++++++++++++++++ l10n/hi-IN/viewer.ftl | 15 ++++++++++ l10n/hr/viewer.ftl | 15 ++++++++++ l10n/hsb/viewer.ftl | 56 +++++++++++++++++++++++++++++++++++ l10n/hu/viewer.ftl | 56 +++++++++++++++++++++++++++++++++++ l10n/hy-AM/viewer.ftl | 15 ++++++++++ l10n/hye/viewer.ftl | 15 ++++++++++ l10n/ia/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/id/viewer.ftl | 15 ++++++++++ l10n/is/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/it/viewer.ftl | 60 +++++++++++++++++++++++++++++++++++++- l10n/ka/viewer.ftl | 15 ++++++++++ l10n/kab/viewer.ftl | 15 ++++++++++ l10n/kk/viewer.ftl | 15 ++++++++++ l10n/km/viewer.ftl | 15 ++++++++++ l10n/kn/viewer.ftl | 15 ++++++++++ l10n/ko/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/lij/viewer.ftl | 15 ++++++++++ l10n/lo/viewer.ftl | 15 ++++++++++ l10n/lt/viewer.ftl | 15 ++++++++++ l10n/ltg/viewer.ftl | 15 ++++++++++ l10n/lv/viewer.ftl | 15 ++++++++++ l10n/meh/viewer.ftl | 15 ++++++++++ l10n/mk/viewer.ftl | 15 ++++++++++ l10n/mr/viewer.ftl | 15 ++++++++++ l10n/ms/viewer.ftl | 15 ++++++++++ l10n/my/viewer.ftl | 15 ++++++++++ l10n/nb-NO/viewer.ftl | 15 ++++++++++ l10n/ne-NP/viewer.ftl | 15 ++++++++++ l10n/nl/viewer.ftl | 15 ++++++++++ l10n/nn-NO/viewer.ftl | 18 ++++++++++++ l10n/oc/viewer.ftl | 15 ++++++++++ l10n/pa-IN/viewer.ftl | 15 ++++++++++ l10n/pl/viewer.ftl | 15 ++++++++++ l10n/pt-BR/viewer.ftl | 62 +++++++++++++++++++++++++++++++++++++-- l10n/pt-PT/viewer.ftl | 15 ++++++++++ l10n/rm/viewer.ftl | 15 ++++++++++ l10n/ro/viewer.ftl | 15 ++++++++++ l10n/ru/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/sat/viewer.ftl | 15 ++++++++++ l10n/sc/viewer.ftl | 15 ++++++++++ l10n/scn/viewer.ftl | 15 ++++++++++ l10n/sco/viewer.ftl | 15 ++++++++++ l10n/si/viewer.ftl | 15 ++++++++++ l10n/sk/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/skr/viewer.ftl | 15 ++++++++++ l10n/sl/viewer.ftl | 15 ++++++++++ l10n/son/viewer.ftl | 15 ++++++++++ l10n/sq/viewer.ftl | 15 ++++++++++ l10n/sr/viewer.ftl | 15 ++++++++++ l10n/sv-SE/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ l10n/szl/viewer.ftl | 15 ++++++++++ l10n/ta/viewer.ftl | 15 ++++++++++ l10n/te/viewer.ftl | 15 ++++++++++ l10n/tg/viewer.ftl | 55 ++++++++++++++++++++++++++++++++++ l10n/th/viewer.ftl | 15 ++++++++++ l10n/tl/viewer.ftl | 15 ++++++++++ l10n/tr/viewer.ftl | 15 ++++++++++ l10n/trs/viewer.ftl | 15 ++++++++++ l10n/uk/viewer.ftl | 15 ++++++++++ l10n/ur/viewer.ftl | 15 ++++++++++ l10n/uz/viewer.ftl | 15 ++++++++++ l10n/vi/viewer.ftl | 15 ++++++++++ l10n/wo/viewer.ftl | 15 ++++++++++ l10n/xh/viewer.ftl | 15 ++++++++++ l10n/zh-CN/viewer.ftl | 15 ++++++++++ l10n/zh-TW/viewer.ftl | 57 ++++++++++++++++++++++++++++++++++++ 109 files changed, 2488 insertions(+), 8 deletions(-) diff --git a/l10n/ach/viewer.ftl b/l10n/ach/viewer.ftl index a512c4053b1f5..3f4cc554e563b 100644 --- a/l10n/ach/viewer.ftl +++ b/l10n/ach/viewer.ftl @@ -246,3 +246,18 @@ pdfjs-web-fonts-disabled = Kijuko dit pa coc me kakube woko: pe romo tic ki dit ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/af/viewer.ftl b/l10n/af/viewer.ftl index 6f9d32cf6e58d..111b02b794baa 100644 --- a/l10n/af/viewer.ftl +++ b/l10n/af/viewer.ftl @@ -233,3 +233,18 @@ pdfjs-web-fonts-disabled = Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingeb ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/an/viewer.ftl b/l10n/an/viewer.ftl index a42666554b089..06611750b408b 100644 --- a/l10n/an/viewer.ftl +++ b/l10n/an/viewer.ftl @@ -278,3 +278,18 @@ pdfjs-web-fonts-disabled = As fuents web son desactivadas: no se puet incrustar ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ar/viewer.ftl b/l10n/ar/viewer.ftl index aeb7e51cf97ea..eb754ddaece4e 100644 --- a/l10n/ar/viewer.ftl +++ b/l10n/ar/viewer.ftl @@ -335,6 +335,8 @@ pdfjs-editor-remove-stamp-button = .title = أزِل الصورة pdfjs-editor-remove-highlight-button = .title = أزِل الإبراز +pdfjs-editor-remove-signature-button = + .title = أزِل التوقيع ## @@ -508,9 +510,75 @@ pdfjs-editor-undo-bar-message-highlight = أُزِيل البرز pdfjs-editor-undo-bar-message-freetext = أُزيل النص pdfjs-editor-undo-bar-message-ink = أُزِيلت الرسمة pdfjs-editor-undo-bar-message-stamp = أُزيلت الصورة +pdfjs-editor-undo-bar-message-signature = أُزيل التوقيع +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [zero] أُزيل لا تعليق + [one] أُزيل تعليق + [two] أُزيل تعليقين + [few] أُزيلت { $count } تعليقات + [many] أُزيل { $count } تعليق + *[other] أُزيل { $count } تعليق + } pdfjs-editor-undo-bar-undo-button = .title = تراجع pdfjs-editor-undo-bar-undo-button-label = تراجع pdfjs-editor-undo-bar-close-button = .title = أغلق pdfjs-editor-undo-bar-close-button-label = أغلق + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = يتيح هذا النموذج للمستخدم إنشاء توقيع لإضافته إلى مستند PDF. ويمكن للمستخدم تحرير الاسم (الذي يعمل أيضًا كنص بديل)، وحفظ التوقيع بشكل اختياري للاستخدام المتكرر. +pdfjs-editor-add-signature-dialog-title = أضِف توقيعا + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = اكتب + .title = اكتب +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = ارسم + .title = ارسم +pdfjs-editor-add-signature-image-button = صورة + .title = صورة + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = اكتب توقيعك + .placeholder = اكتب توقيعك +pdfjs-editor-add-signature-draw-placeholder = ارسم توقيعك +pdfjs-editor-add-signature-draw-thickness-range-label = السماكة +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = سمك الرسم: { $thickness } +pdfjs-editor-add-signature-image-placeholder = اسحب الملف هنا لرفعه +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] أو اختر ملفات الصور + *[other] أو تصفح ملفات الصور + } + +## Controls + +pdfjs-editor-add-signature-description-label = الوصف (نص بديل) +pdfjs-editor-add-signature-description-input = + .title = الوصف (نص بديل) +pdfjs-editor-add-signature-description-default-when-drawing = توقيع +pdfjs-editor-add-signature-clear-button-label = امحُ التوقيع +pdfjs-editor-add-signature-clear-button = + .title = امحُ التوقيع +pdfjs-editor-add-signature-save-checkbox = احفظ التوقيع +pdfjs-editor-add-signature-save-warning-message = لقد وصلت إلى الحد الأقصى وهو 5 توقيعات محفوظة. أزِل توقيع واحد لحفظ المزيد. +pdfjs-editor-add-signature-image-upload-error-title = تعذر رفع الصورة. +pdfjs-editor-add-signature-image-upload-error-description = تحقق من اتصال الشبكة لديك أو جرّب صورة أخرى. +pdfjs-editor-add-signature-error-close-button = أغلق + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = ألغِ +pdfjs-editor-add-signature-add-button = أضِف diff --git a/l10n/ast/viewer.ftl b/l10n/ast/viewer.ftl index 6bc54576ca0f1..b3e3ac6077097 100644 --- a/l10n/ast/viewer.ftl +++ b/l10n/ast/viewer.ftl @@ -222,3 +222,18 @@ pdfjs-password-cancel-button = Encaboxar ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/az/viewer.ftl b/l10n/az/viewer.ftl index b18f019999507..1632acf815e6f 100644 --- a/l10n/az/viewer.ftl +++ b/l10n/az/viewer.ftl @@ -278,3 +278,18 @@ pdfjs-web-fonts-disabled = Web Şriftlər söndürülüb: yerləşdirilmiş PDF ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/be/viewer.ftl b/l10n/be/viewer.ftl index 3f029d93381cf..e3bca5be90b8d 100644 --- a/l10n/be/viewer.ftl +++ b/l10n/be/viewer.ftl @@ -516,3 +516,21 @@ pdfjs-editor-undo-bar-undo-button-label = Адмяніць pdfjs-editor-undo-bar-close-button = .title = Закрыць pdfjs-editor-undo-bar-close-button-label = Закрыць + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + +pdfjs-editor-add-signature-error-close-button = Закрыць + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Скасаваць +pdfjs-editor-add-signature-add-button = Дадаць diff --git a/l10n/bg/viewer.ftl b/l10n/bg/viewer.ftl index 0ab64d0ac413c..10649911edb89 100644 --- a/l10n/bg/viewer.ftl +++ b/l10n/bg/viewer.ftl @@ -418,3 +418,18 @@ pdfjs-editor-new-alt-text-not-now-button = Не сега ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/bn/viewer.ftl b/l10n/bn/viewer.ftl index 71055f6cadedd..628b363389f62 100644 --- a/l10n/bn/viewer.ftl +++ b/l10n/bn/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = ওয়েব ফন্ট নিষ্ক্রিয় ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/bo/viewer.ftl b/l10n/bo/viewer.ftl index 60b343018d73b..6a0c482592533 100644 --- a/l10n/bo/viewer.ftl +++ b/l10n/bo/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/br/viewer.ftl b/l10n/br/viewer.ftl index 1938bc65b15a1..d92015f123022 100644 --- a/l10n/br/viewer.ftl +++ b/l10n/br/viewer.ftl @@ -341,3 +341,18 @@ pdfjs-editor-alt-text-settings-close-button = Serriñ ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/brx/viewer.ftl b/l10n/brx/viewer.ftl index 8882781f20db0..8de66edbc3140 100644 --- a/l10n/brx/viewer.ftl +++ b/l10n/brx/viewer.ftl @@ -239,3 +239,18 @@ pdfjs-web-fonts-disabled = वेब फन्टखौ लोरबां ख ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/bs/viewer.ftl b/l10n/bs/viewer.ftl index cd592a78911bd..317c66a091e18 100644 --- a/l10n/bs/viewer.ftl +++ b/l10n/bs/viewer.ftl @@ -244,3 +244,18 @@ pdfjs-web-fonts-disabled = Web fontovi su onemogućeni: nemoguće koristiti uba ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ca/viewer.ftl b/l10n/ca/viewer.ftl index 229c54444b142..056a271398199 100644 --- a/l10n/ca/viewer.ftl +++ b/l10n/ca/viewer.ftl @@ -314,3 +314,18 @@ pdfjs-ink-canvas = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/cak/viewer.ftl b/l10n/cak/viewer.ftl index 4ff8fb7deb9d7..a226e535b3f2b 100644 --- a/l10n/cak/viewer.ftl +++ b/l10n/cak/viewer.ftl @@ -312,3 +312,18 @@ pdfjs-ink-canvas = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ckb/viewer.ftl b/l10n/ckb/viewer.ftl index e87fce06e67fb..a4d4ad16e37ce 100644 --- a/l10n/ckb/viewer.ftl +++ b/l10n/ckb/viewer.ftl @@ -263,3 +263,18 @@ pdfjs-web-fonts-disabled = جۆرەپیتی وێب ناچالاکە: نەتوا ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index 696fe300ebbef..0dfb21942f929 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -519,3 +519,18 @@ pdfjs-editor-undo-bar-undo-button-label = Zpět pdfjs-editor-undo-bar-close-button = .title = Zavřít pdfjs-editor-undo-bar-close-button-label = Zavřít + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/cy/viewer.ftl b/l10n/cy/viewer.ftl index 836383511159c..f65f66ad8fcb1 100644 --- a/l10n/cy/viewer.ftl +++ b/l10n/cy/viewer.ftl @@ -525,3 +525,18 @@ pdfjs-editor-undo-bar-undo-button-label = Dadwneud pdfjs-editor-undo-bar-close-button = .title = Cau pdfjs-editor-undo-bar-close-button-label = Cau + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index 224eac170da7c..faa971573ebab 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Fortryd pdfjs-editor-undo-bar-close-button = .title = Luk pdfjs-editor-undo-bar-close-button-label = Luk + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/de/viewer.ftl b/l10n/de/viewer.ftl index ee26455097ebb..cda899c0fcb13 100644 --- a/l10n/de/viewer.ftl +++ b/l10n/de/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Rückgängig pdfjs-editor-undo-bar-close-button = .title = Schließen pdfjs-editor-undo-bar-close-button-label = Schließen + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index 24ac94fb233b8..2e140a38c05c0 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -331,6 +331,8 @@ pdfjs-editor-remove-stamp-button = .title = Wobraz wótwónoźeś pdfjs-editor-remove-highlight-button = .title = Wuzwignjenje wótpóraś +pdfjs-editor-remove-signature-button = + .title = Signaturu wótwónoźeś ## @@ -504,6 +506,7 @@ pdfjs-editor-undo-bar-message-highlight = Wótwónoźone wuzwignuś pdfjs-editor-undo-bar-message-freetext = Tekst jo se wótwónoźeł pdfjs-editor-undo-bar-message-ink = Kreslanka jo se wótwónoźeła pdfjs-editor-undo-bar-message-stamp = Wobraz jo se wótwónoźeł +pdfjs-editor-undo-bar-message-signature = Signatura jo se wótwónoźeła # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -519,3 +522,55 @@ pdfjs-editor-undo-bar-undo-button-label = Anulěrowaś pdfjs-editor-undo-bar-close-button = .title = Zacyniś pdfjs-editor-undo-bar-close-button-label = Zacyniś + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Signaturu pśidaś + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typ + .title = Typ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Kresliś + .title = Kresliś +pdfjs-editor-add-signature-image-button = Wobraz + .title = Wobraz + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Zapódajśo swóju signaturu + .placeholder = Zapódajśo swóju signaturu +pdfjs-editor-add-signature-draw-placeholder = Kresliśo swóju signaturu +pdfjs-editor-add-signature-draw-thickness-range-label = Tłustosć +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Tłustosć kreslanki: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Śěgniśo dataju sem, aby ju nagrał +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Abo wubjeŕśo wobrazowe dataje + *[other] Abo pśepytajśo wobrazowe dataje + } + +## Controls + +pdfjs-editor-add-signature-description-label = Wopisanje (alternatiwny tekst) +pdfjs-editor-add-signature-description-input = + .title = Wopisanje (alternatiwny tekst) +pdfjs-editor-add-signature-description-default-when-drawing = Signatura +pdfjs-editor-add-signature-clear-button-label = Signaturu lašowaś +pdfjs-editor-add-signature-clear-button = + .title = Signaturu lašowaś +pdfjs-editor-add-signature-save-checkbox = Signaturu składowaś +pdfjs-editor-add-signature-image-upload-error-title = Wobraz njedajo se nagraś +pdfjs-editor-add-signature-image-upload-error-description = Pśeglědajśo swój seśowy zwisk abo wopytajśo drugi wobraz. +pdfjs-editor-add-signature-error-close-button = Zacyniś + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Pśetergnuś +pdfjs-editor-add-signature-add-button = Pśidaś diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index 5a04bd8a35987..fe3dc3de58925 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Αφαίρεση εικόνας pdfjs-editor-remove-highlight-button = .title = Αφαίρεση επισήμανσης +pdfjs-editor-remove-signature-button = + .title = Αφαίρεση υπογραφής ## @@ -454,8 +456,8 @@ pdfjs-editor-new-alt-text-error-close-button = Κλείσιμο # $totalSize (Number) - the total size (in MB) of the AI model. # $downloadedSize (Number) - the downloaded size (in MB) of the AI model. # $percent (Number) - the percentage of the downloaded size. -pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) - .aria-valuetext = Λήψη μοντέλου AI εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) +pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) + .aria-valuetext = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB) # This is a button that users can click to edit the alt text they have already added. pdfjs-editor-new-alt-text-added-button = .aria-label = Προστέθηκε εναλλακτικό κείμενο @@ -484,7 +486,7 @@ pdfjs-editor-alt-text-settings-create-model-button-label = Αυτόματη δη pdfjs-editor-alt-text-settings-create-model-description = Προτείνει περιγραφές για άτομα που δεν μπορούν να δουν την εικόνα ή όταν η εικόνα δεν φορτώνεται. # Variables: # $totalSize (Number) - the total size (in MB) of the AI model. -pdfjs-editor-alt-text-settings-download-model-label = Μοντέλο AI εναλλακτικού κειμένου ({ $totalSize } MB) +pdfjs-editor-alt-text-settings-download-model-label = Μοντέλο ΤΝ εναλλακτικού κειμένου ({ $totalSize } MB) pdfjs-editor-alt-text-settings-ai-model-description = Εκτελείται τοπικά στη συσκευή σας, ώστε τα δεδομένα σας να παραμένουν ιδιωτικά. Απαιτείται για τη δημιουργία του αυτόματου εναλλακτικού κειμένου. pdfjs-editor-alt-text-settings-delete-model-button = Διαγραφή pdfjs-editor-alt-text-settings-download-model-button = Λήψη @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Η επισήμανση αφαιρέθ pdfjs-editor-undo-bar-message-freetext = Το κείμενο αφαιρέθηκε pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε +pdfjs-editor-undo-bar-message-signature = Η υπογραφή αφαιρέθηκε # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,53 @@ pdfjs-editor-undo-bar-undo-button-label = Αναίρεση pdfjs-editor-undo-bar-close-button = .title = Κλείσιμο pdfjs-editor-undo-bar-close-button-label = Κλείσιμο + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Προσθήκη υπογραφής + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Πληκτρολόγηση + .title = Πληκτρολόγηση +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Σχέδιο + .title = Σχέδιο +pdfjs-editor-add-signature-image-button = Εικόνα + .title = Εικόνα + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Πληκτρολογήστε την υπογραφή σας + .placeholder = Πληκτρολογήστε την υπογραφή σας +pdfjs-editor-add-signature-draw-placeholder = Σχεδιάστε την υπογραφή σας +pdfjs-editor-add-signature-draw-thickness-range-label = Πάχος +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Πάχος σχεδίου: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Σύρετε ένα αρχείο εδώ για μεταφόρτωση +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ή επιλέξτε αρχεία εικόνας + *[other] Ή περιηγηθείτε σε αρχεία εικόνας + } + +## Controls + +pdfjs-editor-add-signature-description-label = Περιγραφή (εναλλακτικό κείμενο) +pdfjs-editor-add-signature-description-input = + .title = Περιγραφή (εναλλακτικό κείμενο) +pdfjs-editor-add-signature-description-default-when-drawing = Υπογραφή +pdfjs-editor-add-signature-clear-button-label = Απαλοιφή υπογραφής +pdfjs-editor-add-signature-clear-button = + .title = Απαλοιφή υπογραφής +pdfjs-editor-add-signature-save-checkbox = Αποθήκευση υπογραφής +pdfjs-editor-add-signature-error-close-button = Κλείσιμο + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Ακύρωση +pdfjs-editor-add-signature-add-button = Προσθήκη diff --git a/l10n/en-CA/viewer.ftl b/l10n/en-CA/viewer.ftl index 346e6e8d8fcee..2338fb498e7c8 100644 --- a/l10n/en-CA/viewer.ftl +++ b/l10n/en-CA/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Undo pdfjs-editor-undo-bar-close-button = .title = Close pdfjs-editor-undo-bar-close-button-label = Close + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/en-GB/viewer.ftl b/l10n/en-GB/viewer.ftl index 4222f6febc48d..f2586e1071cb6 100644 --- a/l10n/en-GB/viewer.ftl +++ b/l10n/en-GB/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Remove image pdfjs-editor-remove-highlight-button = .title = Remove highlight +pdfjs-editor-remove-signature-button = + .title = Remove signature ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Highlight removed pdfjs-editor-undo-bar-message-freetext = Text removed pdfjs-editor-undo-bar-message-ink = Drawing removed pdfjs-editor-undo-bar-message-stamp = Image removed +pdfjs-editor-undo-bar-message-signature = Signature removed # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,57 @@ pdfjs-editor-undo-bar-undo-button-label = Undo pdfjs-editor-undo-bar-close-button = .title = Close pdfjs-editor-undo-bar-close-button-label = Close + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use. +pdfjs-editor-add-signature-dialog-title = Add a signature + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Type + .title = Type +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Draw + .title = Draw +pdfjs-editor-add-signature-image-button = Image + .title = Image + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Type your signature + .placeholder = Type your signature +pdfjs-editor-add-signature-draw-placeholder = Draw your signature +pdfjs-editor-add-signature-draw-thickness-range-label = Thickness +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Drawing thickness: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Or choose image files + *[other] Or browse image files + } + +## Controls + +pdfjs-editor-add-signature-description-label = Description (alt text) +pdfjs-editor-add-signature-description-input = + .title = Description (alt text) +pdfjs-editor-add-signature-description-default-when-drawing = Signature +pdfjs-editor-add-signature-clear-button-label = Clear signature +pdfjs-editor-add-signature-clear-button = + .title = Clear signature +pdfjs-editor-add-signature-save-checkbox = Save signature +pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more. +pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image +pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image. +pdfjs-editor-add-signature-error-close-button = Close + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancel +pdfjs-editor-add-signature-add-button = Add diff --git a/l10n/eo/viewer.ftl b/l10n/eo/viewer.ftl index ce45ebfe64c10..beb7e81763c75 100644 --- a/l10n/eo/viewer.ftl +++ b/l10n/eo/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Malfari pdfjs-editor-undo-bar-close-button = .title = Fermi pdfjs-editor-undo-bar-close-button-label = Fermi + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index ca73dc7c7ff79..8c681b84539f3 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Eliminar imagen pdfjs-editor-remove-highlight-button = .title = Eliminar resaltado +pdfjs-editor-remove-signature-button = + .title = Eliminar firma ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado pdfjs-editor-undo-bar-message-freetext = Texto eliminado pdfjs-editor-undo-bar-message-ink = Dibujo eliminado pdfjs-editor-undo-bar-message-stamp = Imagen eliminado +pdfjs-editor-undo-bar-message-signature = Firma eliminada # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,56 @@ pdfjs-editor-undo-bar-undo-button-label = Deshacer pdfjs-editor-undo-bar-close-button = .title = Cerrar pdfjs-editor-undo-bar-close-button-label = Cerrar + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Agregar una firma + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Tipear + .title = Tipear +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Dibujar + .title = Dibujar +pdfjs-editor-add-signature-image-button = Imagen + .title = Imagen + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Escribir la firma + .placeholder = Escribir la firma +pdfjs-editor-add-signature-draw-placeholder = Dibujar la firma +pdfjs-editor-add-signature-draw-thickness-range-label = Grosor +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Grosor del dibujo: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Arrastrar un archivo acá para subirlo +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] O seleccionar archivos de imágenes + *[other] O seleccionar archivos de imágenes + } + +## Controls + +pdfjs-editor-add-signature-description-label = Descripción (texto alternativo) +pdfjs-editor-add-signature-description-input = + .title = Descripción (texto alternativo) +pdfjs-editor-add-signature-description-default-when-drawing = Firma +pdfjs-editor-add-signature-clear-button-label = Borrar firma +pdfjs-editor-add-signature-clear-button = + .title = Borrar firma +pdfjs-editor-add-signature-save-checkbox = Guardar firma +pdfjs-editor-add-signature-save-warning-message = Se alcanzó el límite de 5 firmas guardadas. Elimine una para guardar más. +pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen +pdfjs-editor-add-signature-image-upload-error-description = Verifique la conexión de red o pruebe con otra imagen. +pdfjs-editor-add-signature-error-close-button = Cerrar + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancelar +pdfjs-editor-add-signature-add-button = Agregar diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index 74389e4dd546e..8be05e328de32 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Eliminar imagen pdfjs-editor-remove-highlight-button = .title = Quitar resaltado +pdfjs-editor-remove-signature-button = + .title = Eliminar firma ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado pdfjs-editor-undo-bar-message-freetext = Texto eliminado pdfjs-editor-undo-bar-message-ink = Dibujo eliminado pdfjs-editor-undo-bar-message-stamp = Imagen eliminada +pdfjs-editor-undo-bar-message-signature = Firma eliminada # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,57 @@ pdfjs-editor-undo-bar-undo-button-label = Deshacer pdfjs-editor-undo-bar-close-button = .title = Cerrar pdfjs-editor-undo-bar-close-button-label = Cerrar + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregarla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para usarla nuevamente. +pdfjs-editor-add-signature-dialog-title = Añadir una firma + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Escribir + .title = Escribir +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Dibujar + .title = Dibujar +pdfjs-editor-add-signature-image-button = Imagen + .title = Imagen + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Escribe tu firma + .placeholder = Escribe tu firma +pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma +pdfjs-editor-add-signature-draw-thickness-range-label = Grosor +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Grosor del dibujo: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Arrastre un archivo aquí para cargarlo +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] O elige archivos de imagen + *[other] O busca archivos de imagen + } + +## Controls + +pdfjs-editor-add-signature-description-label = Descripción (texto alternativo) +pdfjs-editor-add-signature-description-input = + .title = Descripción (texto alternativo) +pdfjs-editor-add-signature-description-default-when-drawing = Firma +pdfjs-editor-add-signature-clear-button-label = Limpiar firma +pdfjs-editor-add-signature-clear-button = + .title = Limpiar firma +pdfjs-editor-add-signature-save-checkbox = Guardar firma +pdfjs-editor-add-signature-save-warning-message = Has alcanzado el límite de 5 firmas guardadas. Elimina una para guardar más. +pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen +pdfjs-editor-add-signature-image-upload-error-description = Verifica tu conexión de red o prueba con otra imagen. +pdfjs-editor-add-signature-error-close-button = Cerrar + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancelar +pdfjs-editor-add-signature-add-button = Añadir diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index f610a179b674f..4ed4c7c47efa3 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Deshacer pdfjs-editor-undo-bar-close-button = .title = Cerrar pdfjs-editor-undo-bar-close-button-label = Cerrar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/es-MX/viewer.ftl b/l10n/es-MX/viewer.ftl index 03afe7c0a3167..3d4eee86b1fc8 100644 --- a/l10n/es-MX/viewer.ftl +++ b/l10n/es-MX/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Deshacer pdfjs-editor-undo-bar-close-button = .title = Cerrar pdfjs-editor-undo-bar-close-button-label = Cerrar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/et/viewer.ftl b/l10n/et/viewer.ftl index 84f1245c4c78d..7cdaa8e1806ad 100644 --- a/l10n/et/viewer.ftl +++ b/l10n/et/viewer.ftl @@ -289,3 +289,18 @@ pdfjs-web-fonts-disabled = Veebifondid on keelatud: PDFiga kaasatud fonte pole v ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/eu/viewer.ftl b/l10n/eu/viewer.ftl index 2b2660bdc5197..3447d2f7f7ee8 100644 --- a/l10n/eu/viewer.ftl +++ b/l10n/eu/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Kendu irudia pdfjs-editor-remove-highlight-button = .title = Kendu nabarmentzea +pdfjs-editor-remove-signature-button = + .title = Kendu sinadura ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Nabarmentzea kenduta pdfjs-editor-undo-bar-message-freetext = Testua kenduta pdfjs-editor-undo-bar-message-ink = Marrazkia kenduta pdfjs-editor-undo-bar-message-stamp = Irudia kenduta +pdfjs-editor-undo-bar-message-signature = Sinadura kenduta # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,61 @@ pdfjs-editor-undo-bar-undo-button-label = Desegin pdfjs-editor-undo-bar-close-button = .title = Itxi pdfjs-editor-undo-bar-close-button-label = Itxi + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = + Leiho modal honek PDF dokumentu batera gehitzeko sinadurak + sortzea ahalbidetzen dio erabiltzaileari. Erabiltzaileak izena edita + dezake (testu alternatibo modura ere erabiltzen dena) eta sinadura + gordetzeko aukera du gehiagotan erabili ahal izateko. +pdfjs-editor-add-signature-dialog-title = Gehitu sinadura + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Mota + .title = Mota +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Marraztu + .title = Marraztu +pdfjs-editor-add-signature-image-button = Irudia + .title = Irudia + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Idatzi zure sinadura + .placeholder = Idatzi zure sinadura +pdfjs-editor-add-signature-draw-placeholder = Marraztu zure sinadura +pdfjs-editor-add-signature-draw-thickness-range-label = Loditasuna +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Marrazteko loditasuna: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Igotzeko, jaregin fitxategia hemen +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Edo aukeratu irudi-fitxategiak + *[other] Edo arakatu irudi-fitxategiak + } + +## Controls + +pdfjs-editor-add-signature-description-label = Azalpena (testu alternatiboa) +pdfjs-editor-add-signature-description-input = + .title = Azalpena (testu alternatiboa) +pdfjs-editor-add-signature-description-default-when-drawing = Sinadura +pdfjs-editor-add-signature-clear-button-label = Garbitu sinadura +pdfjs-editor-add-signature-clear-button = + .title = Garbitu sinadura +pdfjs-editor-add-signature-save-checkbox = Gorde sinadura +pdfjs-editor-add-signature-save-warning-message = Gordetako sinadura kopuruaren mugara heldu zara (5). Gehiago gorde ahal izateko, ken ezazu bat. +pdfjs-editor-add-signature-image-upload-error-title = Ezin da irudia igo +pdfjs-editor-add-signature-image-upload-error-description = Egiaztatu zure sareko konexioa edo saiatu beste irudi batekin. +pdfjs-editor-add-signature-error-close-button = Itxi + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Utzi +pdfjs-editor-add-signature-add-button = Gehitu diff --git a/l10n/fa/viewer.ftl b/l10n/fa/viewer.ftl index 1ba7f086f33c0..3df2266e0d711 100644 --- a/l10n/fa/viewer.ftl +++ b/l10n/fa/viewer.ftl @@ -349,3 +349,18 @@ pdfjs-editor-alt-text-settings-close-button = بستن ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ff/viewer.ftl b/l10n/ff/viewer.ftl index b519092d86fbe..82240af847ed9 100644 --- a/l10n/ff/viewer.ftl +++ b/l10n/ff/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = Ponte geese ko daaƴaaɗe: horiima huutoraade ponte P ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 0819d0ea8d2aa..2cdc7efe5366c 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Kumoa pdfjs-editor-undo-bar-close-button = .title = Sulje pdfjs-editor-undo-bar-close-button-label = Sulje + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index d0a778f884390..d18252ad5dafe 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -509,3 +509,18 @@ pdfjs-editor-undo-bar-undo-button-label = Annuler pdfjs-editor-undo-bar-close-button = .title = Fermer pdfjs-editor-undo-bar-close-button-label = Fermer + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/fur/viewer.ftl b/l10n/fur/viewer.ftl index ab94626d9c771..8f029ed18c3f8 100644 --- a/l10n/fur/viewer.ftl +++ b/l10n/fur/viewer.ftl @@ -6,7 +6,7 @@ ## Main toolbar buttons (tooltips and alt text for images) pdfjs-previous-button = - .title = Pagjine precedente + .title = Pagjine di prime pdfjs-previous-button-label = Indaûr pdfjs-next-button = .title = Prossime pagjine @@ -482,3 +482,18 @@ pdfjs-editor-alt-text-settings-close-button = Siere ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index 15850b4cd570e..1032f5935e761 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Ungedien meitsje pdfjs-editor-undo-bar-close-button = .title = Slute pdfjs-editor-undo-bar-close-button-label = Slute + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ga-IE/viewer.ftl b/l10n/ga-IE/viewer.ftl index 590c576edc731..ea22483ea3e51 100644 --- a/l10n/ga-IE/viewer.ftl +++ b/l10n/ga-IE/viewer.ftl @@ -234,3 +234,18 @@ pdfjs-web-fonts-disabled = Tá clófhoirne Gréasáin díchumasaithe: ní féidi ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/gd/viewer.ftl b/l10n/gd/viewer.ftl index 5c1abc03d1bd7..d3e53ae75f94d 100644 --- a/l10n/gd/viewer.ftl +++ b/l10n/gd/viewer.ftl @@ -314,3 +314,18 @@ pdfjs-ink-canvas = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/gl/viewer.ftl b/l10n/gl/viewer.ftl index 28e10b06a8ed8..5596493b5323a 100644 --- a/l10n/gl/viewer.ftl +++ b/l10n/gl/viewer.ftl @@ -385,3 +385,18 @@ pdfjs-editor-resizer-middle-left = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index 6402c6f91feed..2462849621728 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Mboguevi pdfjs-editor-undo-bar-close-button = .title = Mboty pdfjs-editor-undo-bar-close-button-label = Mboty + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/gu-IN/viewer.ftl b/l10n/gu-IN/viewer.ftl index 1bc278d4ddfc3..5c5c187234bc9 100644 --- a/l10n/gu-IN/viewer.ftl +++ b/l10n/gu-IN/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = વેબ ફોન્ટ નિષ્ક્રિય ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index 2f04851854f21..b7a027d10b07c 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = הסרת תמונה pdfjs-editor-remove-highlight-button = .title = הסרת סימון +pdfjs-editor-remove-signature-button = + .title = הסרת חתימה ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = הסימון הוסר pdfjs-editor-undo-bar-message-freetext = הטקסט הוסר pdfjs-editor-undo-bar-message-ink = הציור הוסר pdfjs-editor-undo-bar-message-stamp = התמונה הוסרה +pdfjs-editor-undo-bar-message-signature = החתימה הוסרה # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,52 @@ pdfjs-editor-undo-bar-undo-button-label = ביטול פעלה pdfjs-editor-undo-bar-close-button = .title = סגירה pdfjs-editor-undo-bar-close-button-label = סגירה + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = מודל זה מאפשר למשתמש ליצור חתימה להוספה למסמך PDF. המשתמש יכול לערוך את השם (שמשמש גם כטקסט האלטרנטיבי), ובאופן אופציונלי לשמור את החתימה לשימוש חוזר. +pdfjs-editor-add-signature-dialog-title = הוספת חתימה + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = הקלדה + .title = הקלדה +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = ציור + .title = ציור +pdfjs-editor-add-signature-image-button = תמונה + .title = תמונה + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = נא להקליד את החתימה שלך + .placeholder = נא להקליד את החתימה שלך +pdfjs-editor-add-signature-draw-placeholder = נא לצייר את החתימה שלך +pdfjs-editor-add-signature-draw-thickness-range-label = עובי +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = עובי הציור: { $thickness } +pdfjs-editor-add-signature-image-placeholder = יש לגרור לכאן קובץ להעלאה +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] או לבחור בקובצי תמונה + *[other] או לעיין בקובצי תמונה + } + +## Controls + +pdfjs-editor-add-signature-clear-button = + .title = ניקוי חתימה +pdfjs-editor-add-signature-save-checkbox = שמירת החתימה +pdfjs-editor-add-signature-save-warning-message = הגעת למגבלה של 5 חתימות שמורות. יש להסיר אחד כדי לשמור עוד. +pdfjs-editor-add-signature-image-upload-error-title = לא ניתן להעלות את התמונה +pdfjs-editor-add-signature-image-upload-error-description = נא לבדוק את החיבור שלך לרשת או לנסות תמונה אחרת. +pdfjs-editor-add-signature-error-close-button = סגירה + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = ביטול +pdfjs-editor-add-signature-add-button = הוספה diff --git a/l10n/hi-IN/viewer.ftl b/l10n/hi-IN/viewer.ftl index e90fabc1c3ab5..e4478f58f87a9 100644 --- a/l10n/hi-IN/viewer.ftl +++ b/l10n/hi-IN/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-editor-free-text-color-input = रंग ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index c97831df9c2ee..4af3bd3bff7ff 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -516,3 +516,18 @@ pdfjs-editor-undo-bar-undo-button-label = Poništi pdfjs-editor-undo-bar-close-button = .title = Zatvori pdfjs-editor-undo-bar-close-button-label = Zatvori + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/hsb/viewer.ftl b/l10n/hsb/viewer.ftl index 065ab8d06438d..e33d9cc86a6c8 100644 --- a/l10n/hsb/viewer.ftl +++ b/l10n/hsb/viewer.ftl @@ -331,6 +331,8 @@ pdfjs-editor-remove-stamp-button = .title = Wobraz wotstronić pdfjs-editor-remove-highlight-button = .title = Wuzběhnjenje wotstronić +pdfjs-editor-remove-signature-button = + .title = Signaturu wotstronić ## @@ -504,6 +506,7 @@ pdfjs-editor-undo-bar-message-highlight = Wotstronjene wuzběhnyć pdfjs-editor-undo-bar-message-freetext = Tekst je so wotstronił pdfjs-editor-undo-bar-message-ink = Rysowanka je so wotstroniła pdfjs-editor-undo-bar-message-stamp = Wobraz je so wotstronił +pdfjs-editor-undo-bar-message-signature = Signatura je so wotstroniła # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -519,3 +522,56 @@ pdfjs-editor-undo-bar-undo-button-label = Cofnyć pdfjs-editor-undo-bar-close-button = .title = Začinić pdfjs-editor-undo-bar-close-button-label = Začinić + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Signaturu přidać + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typ + .title = Typ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Rysować + .title = Rysować +pdfjs-editor-add-signature-image-button = Wobraz + .title = Wobraz + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Zapodajće swoju signaturu + .placeholder = Zapodajće swoju signaturu +pdfjs-editor-add-signature-draw-placeholder = Rysujće swoju signaturu +pdfjs-editor-add-signature-draw-thickness-range-label = Tołstosć +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Tołstosć rysowanki: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Ćehńće dataju sem, zo byšće ju nahrał +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Abo přepytajće wobrazowe dataje + *[other] Abo přepytajće wobrazowe dataje + } + +## Controls + +pdfjs-editor-add-signature-description-label = Wopisanje (alternatiwny tekst) +pdfjs-editor-add-signature-description-input = + .title = Wopisanje (alternatiwny tekst) +pdfjs-editor-add-signature-description-default-when-drawing = Signatura +pdfjs-editor-add-signature-clear-button-label = Signaturu zhašeć +pdfjs-editor-add-signature-clear-button = + .title = Signaturu zhašeć +pdfjs-editor-add-signature-save-checkbox = Signaturu składować +pdfjs-editor-add-signature-save-warning-message = Sće limit 5 składowanych signaturow docpěł. Wotstrońće jednu, zo byšće wjace składował. +pdfjs-editor-add-signature-image-upload-error-title = Wobraz njeda so nahrać +pdfjs-editor-add-signature-image-upload-error-description = Přepruwujće swój syćowy zwisk abo spytajće druhi wobraz. +pdfjs-editor-add-signature-error-close-button = Začinić + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Přetorhnyć +pdfjs-editor-add-signature-add-button = Přidać diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index 76307a2254356..0d495de4cca40 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Kép eltávolítása pdfjs-editor-remove-highlight-button = .title = Kiemelés eltávolítása +pdfjs-editor-remove-signature-button = + .title = Aláírás eltávolítása ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Kiemelés eltávolítva pdfjs-editor-undo-bar-message-freetext = Szöveg eltávolítva pdfjs-editor-undo-bar-message-ink = Rajz eltávolítva pdfjs-editor-undo-bar-message-stamp = Kép eltávolítva +pdfjs-editor-undo-bar-message-signature = Aláírás eltávolítva # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,56 @@ pdfjs-editor-undo-bar-undo-button-label = Visszavonás pdfjs-editor-undo-bar-close-button = .title = Bezárás pdfjs-editor-undo-bar-close-button-label = Bezárás + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Aláírás hozzáadása + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Beírás + .title = Beírás +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Rajzolás + .title = Rajzolás +pdfjs-editor-add-signature-image-button = Kép + .title = Kép + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Írja be az aláírását + .placeholder = Írja be az aláírását +pdfjs-editor-add-signature-draw-placeholder = Rajzolja le az aláírását +pdfjs-editor-add-signature-draw-thickness-range-label = Vastagság +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Rajzolási vastagság: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Húzzon ide egy fájlt a feltöltéshez +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Vagy tallózzon a képfájlok között + *[other] Vagy tallózzon a képfájlok között + } + +## Controls + +pdfjs-editor-add-signature-description-label = Leírás (alternatív szöveg) +pdfjs-editor-add-signature-description-input = + .title = Leírás (alternatív szöveg) +pdfjs-editor-add-signature-description-default-when-drawing = Aláírás +pdfjs-editor-add-signature-clear-button-label = Aláírás törlése +pdfjs-editor-add-signature-clear-button = + .title = Aláírás törlése +pdfjs-editor-add-signature-save-checkbox = Aláírás mentése +pdfjs-editor-add-signature-save-warning-message = Elérte a mentett aláírások 5 darabos korlátját. A mentéshez távolítson el egyet. +pdfjs-editor-add-signature-image-upload-error-title = A kép nem tölthető fel +pdfjs-editor-add-signature-image-upload-error-description = Ellenőrizze a hálózati kapcsolatot, vagy próbálkozzon egy másik képpel. +pdfjs-editor-add-signature-error-close-button = Bezárás + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Mégse +pdfjs-editor-add-signature-add-button = Hozzáadás diff --git a/l10n/hy-AM/viewer.ftl b/l10n/hy-AM/viewer.ftl index b89932fb5ee6c..093e05d21b54c 100644 --- a/l10n/hy-AM/viewer.ftl +++ b/l10n/hy-AM/viewer.ftl @@ -280,3 +280,18 @@ pdfjs-editor-highlight-show-all-button = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/hye/viewer.ftl b/l10n/hye/viewer.ftl index 3ac911c094013..a08e47b54e23a 100644 --- a/l10n/hye/viewer.ftl +++ b/l10n/hye/viewer.ftl @@ -289,3 +289,18 @@ pdfjs-web-fonts-disabled = Վեբ-տառատեսակները անջատուած ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ia/viewer.ftl b/l10n/ia/viewer.ftl index 91fbaf98fee36..d44104464565d 100644 --- a/l10n/ia/viewer.ftl +++ b/l10n/ia/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Remover imagine pdfjs-editor-remove-highlight-button = .title = Remover evidentia +pdfjs-editor-remove-signature-button = + .title = Remover signatura ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Evidentiation removite pdfjs-editor-undo-bar-message-freetext = Texto removite pdfjs-editor-undo-bar-message-ink = Designo removite pdfjs-editor-undo-bar-message-stamp = Imagine removite +pdfjs-editor-undo-bar-message-signature = Signatura removite # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,57 @@ pdfjs-editor-undo-bar-undo-button-label = Disfacer pdfjs-editor-undo-bar-close-button = .title = Clauder pdfjs-editor-undo-bar-close-button-label = Clauder + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Iste formulario permitte al usator crear un firma a adder a un documento PDF. Le usator pote modificar le nomine (le qual tamben servi de texto alternative) e, si desirate, salvar le firma pro uso repetite. +pdfjs-editor-add-signature-dialog-title = Adder un signatura + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typar + .title = Typar +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Designar + .title = Designar +pdfjs-editor-add-signature-image-button = Imagine + .title = Imagine + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Insere tu firma + .placeholder = Insere tu firma +pdfjs-editor-add-signature-draw-placeholder = Designa tu firma +pdfjs-editor-add-signature-draw-thickness-range-label = Spissor +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Spissor de designo: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Trahe un file hic pro incargar lo +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] O elige files de imagine + *[other] O folietta files de imagine + } + +## Controls + +pdfjs-editor-add-signature-description-label = Description (texto alternative) +pdfjs-editor-add-signature-description-input = + .title = Description (texto alternative) +pdfjs-editor-add-signature-description-default-when-drawing = Signatura +pdfjs-editor-add-signature-clear-button-label = Rader signatura +pdfjs-editor-add-signature-clear-button = + .title = Rader signatura +pdfjs-editor-add-signature-save-checkbox = Salvar signatura +pdfjs-editor-add-signature-save-warning-message = Tu ha attingite le limite de 5 firmas salvate. Remove un pro salvar un altere. +pdfjs-editor-add-signature-image-upload-error-title = Non poteva incargar le imagine +pdfjs-editor-add-signature-image-upload-error-description = Verifica tu connexion al rete o tenta un altere imagine. +pdfjs-editor-add-signature-error-close-button = Clauder + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancellar +pdfjs-editor-add-signature-add-button = Adder diff --git a/l10n/id/viewer.ftl b/l10n/id/viewer.ftl index bbc475b1f7241..acb922b81a1b4 100644 --- a/l10n/id/viewer.ftl +++ b/l10n/id/viewer.ftl @@ -501,3 +501,18 @@ pdfjs-editor-undo-bar-undo-button-label = Urungkan pdfjs-editor-undo-bar-close-button = .title = Tutup pdfjs-editor-undo-bar-close-button-label = Tutup + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/is/viewer.ftl b/l10n/is/viewer.ftl index deda510461925..7d91bafa65b0f 100644 --- a/l10n/is/viewer.ftl +++ b/l10n/is/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Fjarlægja mynd pdfjs-editor-remove-highlight-button = .title = Fjarlægja áherslulit +pdfjs-editor-remove-signature-button = + .title = Fjarlægja undirskrift ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Áherslulitun fjarlægð pdfjs-editor-undo-bar-message-freetext = Texti fjarlægður pdfjs-editor-undo-bar-message-ink = Teikning fjarlægð pdfjs-editor-undo-bar-message-stamp = Mynd fjarlægð +pdfjs-editor-undo-bar-message-signature = Undirskrift fjarlægð # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,57 @@ pdfjs-editor-undo-bar-undo-button-label = Afturkalla pdfjs-editor-undo-bar-close-button = .title = Loka pdfjs-editor-undo-bar-close-button-label = Loka + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Þessi gluggi gerir notandanum kleift að búa til undirskrift til að bæta við PDF-skjal. Notandinn getur breytt nafninu (sem einnig þjónar sem alt-texti), og valið að vista undirskriftina til endurtekinnar notkunar. +pdfjs-editor-add-signature-dialog-title = Bæta við undirskrift + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Tegund + .title = Tegund +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Teikna + .title = Teikna +pdfjs-editor-add-signature-image-button = Mynd + .title = Mynd + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Skrifaðu inn undirskriftina þína + .placeholder = Skrifaðu inn undirskriftina þína +pdfjs-editor-add-signature-draw-placeholder = Teiknaðu undirskriftina þína +pdfjs-editor-add-signature-draw-thickness-range-label = Þykkt +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Sverleiki teikningar: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Dragðu skrá hingað til að senda inn +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Eða skoðaðu myndskrár + *[other] Eða skoðaðu myndskrár + } + +## Controls + +pdfjs-editor-add-signature-description-label = Lýsing (alt-hjálpartexti) +pdfjs-editor-add-signature-description-input = + .title = Lýsing (alt-hjálpartexti) +pdfjs-editor-add-signature-description-default-when-drawing = Undirskrift +pdfjs-editor-add-signature-clear-button-label = Hreinsa undirskrift +pdfjs-editor-add-signature-clear-button = + .title = Hreinsa undirskrift +pdfjs-editor-add-signature-save-checkbox = Vista undirskrift +pdfjs-editor-add-signature-save-warning-message = Þú hefur náð hámarki 5 vistaðra undirskrifta. Fjarlægðu eina til að geta vistað fleiri. +pdfjs-editor-add-signature-image-upload-error-title = Ekki tókst að senda inn mynd +pdfjs-editor-add-signature-image-upload-error-description = Athugaðu nettenginguna þína eða prófaðu aðra mynd. +pdfjs-editor-add-signature-error-close-button = Loka + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Hætta við +pdfjs-editor-add-signature-add-button = Bæta við diff --git a/l10n/it/viewer.ftl b/l10n/it/viewer.ftl index d1de7e12da1f6..b54744a78a39d 100644 --- a/l10n/it/viewer.ftl +++ b/l10n/it/viewer.ftl @@ -293,7 +293,7 @@ pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: "short", tim ## Password pdfjs-password-label = Inserire la password per aprire questo file PDF. -pdfjs-password-invalid = Password non corretta. Riprovare. +pdfjs-password-invalid = Password non corretta. Riprova. pdfjs-password-ok-button = OK pdfjs-password-cancel-button = Annulla pdfjs-web-fonts-disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF. @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Rimuovi immagine pdfjs-editor-remove-highlight-button = .title = Rimuovi evidenziazione +pdfjs-editor-remove-signature-button = + .title = Rimuovi firma ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Evidenziazione rimossa pdfjs-editor-undo-bar-message-freetext = Testo rimosso pdfjs-editor-undo-bar-message-ink = Disegno rimosso pdfjs-editor-undo-bar-message-stamp = Immagine rimossa +pdfjs-editor-undo-bar-message-signature = Firma rimossa # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,58 @@ pdfjs-editor-undo-bar-undo-button-label = Annulla pdfjs-editor-undo-bar-close-button = .title = Chiudi pdfjs-editor-undo-bar-close-button-label = Chiudi + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Questa finestra consente all’utente di creare una firma da aggiungere a un documento PDF. L’utente può modificare il nome (che verrà utilizzato anche come testo alternativo) e, se lo desidera, salvare la firma per riutilizzarla in futuro. +pdfjs-editor-add-signature-dialog-title = Aggiungi una firma + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Scrivi + .title = Scrivi +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Disegna + .title = Disegna +pdfjs-editor-add-signature-image-button = Immagine + .title = Immagine + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Digita la tua firma + .placeholder = Digita la tua firma +pdfjs-editor-add-signature-draw-placeholder = Disegna la tua firma +pdfjs-editor-add-signature-draw-thickness-range-label = Spessore +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Spessore del tratto: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Trascina un file qui per caricarlo +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Oppure scegli un file immagine + *[other] Oppure sfoglia i file immagine + } + +## Controls + +pdfjs-editor-add-signature-description-label = Descrizione (testo alternativo) +pdfjs-editor-add-signature-description-input = + .title = Descrizione (testo alternativo) +pdfjs-editor-add-signature-description-default-when-drawing = Firma +pdfjs-editor-add-signature-clear-button-label = Cancella firma +pdfjs-editor-add-signature-clear-button = + .title = Cancella firma +pdfjs-editor-add-signature-save-checkbox = Salva firma +pdfjs-editor-add-signature-save-warning-message = Hai raggiunto il limite di 5 firme salvate. Rimuovine una per salvarne altre. +pdfjs-editor-add-signature-image-upload-error-title = Impossibile caricare l’immagine +pdfjs-editor-add-signature-image-upload-error-description = Controlla la connessione di rete o prova con un’altra immagine. +pdfjs-editor-add-signature-error-close-button = Chiudi + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Annulla +pdfjs-editor-add-signature-add-button = Aggiungi + diff --git a/l10n/ka/viewer.ftl b/l10n/ka/viewer.ftl index d500f3e5e98ab..8c1fe5050d5bd 100644 --- a/l10n/ka/viewer.ftl +++ b/l10n/ka/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = დაბრუნება pdfjs-editor-undo-bar-close-button = .title = დახურვა pdfjs-editor-undo-bar-close-button-label = დახურვა + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/kab/viewer.ftl b/l10n/kab/viewer.ftl index 50f3b9e882372..63a83227aa5e7 100644 --- a/l10n/kab/viewer.ftl +++ b/l10n/kab/viewer.ftl @@ -438,3 +438,18 @@ pdfjs-editor-alt-text-settings-close-button = Mdel ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index fb14226ef52e6..31f1d8c2fc1f1 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Болдырмау pdfjs-editor-undo-bar-close-button = .title = Жабу pdfjs-editor-undo-bar-close-button-label = Жабу + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/km/viewer.ftl b/l10n/km/viewer.ftl index c4362b9dc6aaa..f7195e0d5e733 100644 --- a/l10n/km/viewer.ftl +++ b/l10n/km/viewer.ftl @@ -244,3 +244,18 @@ pdfjs-web-fonts-disabled = បាន​បិទ​ពុម្ពអក្ស ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/kn/viewer.ftl b/l10n/kn/viewer.ftl index f9d48f7afcd4d..939ad307fcf8f 100644 --- a/l10n/kn/viewer.ftl +++ b/l10n/kn/viewer.ftl @@ -234,3 +234,18 @@ pdfjs-web-fonts-disabled = ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ko/viewer.ftl b/l10n/ko/viewer.ftl index a321a1108522d..237e9945fa9ef 100644 --- a/l10n/ko/viewer.ftl +++ b/l10n/ko/viewer.ftl @@ -319,6 +319,8 @@ pdfjs-editor-remove-stamp-button = .title = 이미지 제거 pdfjs-editor-remove-highlight-button = .title = 강조 표시 제거 +pdfjs-editor-remove-signature-button = + .title = 서명 제거 ## @@ -492,6 +494,7 @@ pdfjs-editor-undo-bar-message-highlight = 강조 표시 제거됨 pdfjs-editor-undo-bar-message-freetext = 텍스트 제거됨 pdfjs-editor-undo-bar-message-ink = 그리기 제거됨 pdfjs-editor-undo-bar-message-stamp = 이미지 제거됨 +pdfjs-editor-undo-bar-message-signature = 서명 제거됨 # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = 주석 { $count }개 제거됨 @@ -501,3 +504,57 @@ pdfjs-editor-undo-bar-undo-button-label = 실행 취소 pdfjs-editor-undo-bar-close-button = .title = 닫기 pdfjs-editor-undo-bar-close-button-label = 닫기 + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = 이 모달로 PDF 문서에 추가 할 서명을 만들 수 있습니다. 사용자는 이름(대체 텍스트 역할도 함)을 편집하고, 반복해 사용할 수 있도록 서명을 저장할 수도 있습니다. +pdfjs-editor-add-signature-dialog-title = 서명 추가 + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = 입력 + .title = 입력 +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = 그리기 + .title = 그리기 +pdfjs-editor-add-signature-image-button = 이미지 + .title = 이미지 + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = 서명 입력 + .placeholder = 서명 입력 +pdfjs-editor-add-signature-draw-placeholder = 서명 그리기 +pdfjs-editor-add-signature-draw-thickness-range-label = 두께 +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = 그리기 두께: { $thickness } +pdfjs-editor-add-signature-image-placeholder = 업로드할 파일을 여기로 끌어서 놓기 +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] 또는 이미지 파일 찾아보기 + *[other] 또는 이미지 파일 찾아보기 + } + +## Controls + +pdfjs-editor-add-signature-description-label = 설명 (대체 텍스트) +pdfjs-editor-add-signature-description-input = + .title = 설명 (대체 텍스트) +pdfjs-editor-add-signature-description-default-when-drawing = 서명 +pdfjs-editor-add-signature-clear-button-label = 서명 지우기 +pdfjs-editor-add-signature-clear-button = + .title = 서명 지우기 +pdfjs-editor-add-signature-save-checkbox = 서명 저장 +pdfjs-editor-add-signature-save-warning-message = 저장된 서명의 한계에 도달했습니다. 더 저장하려면 하나를 제거하세요. +pdfjs-editor-add-signature-image-upload-error-title = 이미지를 업로드할 수 없음 +pdfjs-editor-add-signature-image-upload-error-description = 네트워크 연결을 확인하거나 다른 이미지로 시도하세요. +pdfjs-editor-add-signature-error-close-button = 닫기 + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = 취소 +pdfjs-editor-add-signature-add-button = 추가 diff --git a/l10n/lij/viewer.ftl b/l10n/lij/viewer.ftl index eb828b5474d04..70f0a159465e4 100644 --- a/l10n/lij/viewer.ftl +++ b/l10n/lij/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = I font do web en dizativæ: inposcibile adeuviâ i ca ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/lo/viewer.ftl b/l10n/lo/viewer.ftl index 10ffc9edc2b09..5bd0f8b029085 100644 --- a/l10n/lo/viewer.ftl +++ b/l10n/lo/viewer.ftl @@ -314,3 +314,18 @@ pdfjs-ink-canvas = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/lt/viewer.ftl b/l10n/lt/viewer.ftl index d2777c85ec4c6..f89b39408ff3c 100644 --- a/l10n/lt/viewer.ftl +++ b/l10n/lt/viewer.ftl @@ -289,3 +289,18 @@ pdfjs-web-fonts-disabled = Saityno šriftai išjungti – PDF faile esančių š ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ltg/viewer.ftl b/l10n/ltg/viewer.ftl index f0dbbe2dfc30c..8cee14948984c 100644 --- a/l10n/ltg/viewer.ftl +++ b/l10n/ltg/viewer.ftl @@ -267,3 +267,18 @@ pdfjs-web-fonts-disabled = Šķārsteikla fonti nav aktivizāti: Navar īgult PD ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/lv/viewer.ftl b/l10n/lv/viewer.ftl index aba51a823af3b..719f8449d9998 100644 --- a/l10n/lv/viewer.ftl +++ b/l10n/lv/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fon ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/meh/viewer.ftl b/l10n/meh/viewer.ftl index f5161b3fc9630..5ac3713606603 100644 --- a/l10n/meh/viewer.ftl +++ b/l10n/meh/viewer.ftl @@ -108,3 +108,18 @@ pdfjs-password-cancel-button = Nkuvi-ka ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/mk/viewer.ftl b/l10n/mk/viewer.ftl index 7529732f2d678..da0618eb8df82 100644 --- a/l10n/mk/viewer.ftl +++ b/l10n/mk/viewer.ftl @@ -236,3 +236,18 @@ pdfjs-web-fonts-disabled = Интернет фонтовите се оневоз ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/mr/viewer.ftl b/l10n/mr/viewer.ftl index dbef75e588bf4..e61a8ce3dacb3 100644 --- a/l10n/mr/viewer.ftl +++ b/l10n/mr/viewer.ftl @@ -260,3 +260,18 @@ pdfjs-web-fonts-disabled = वेब टंक असमर्थीत आह ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ms/viewer.ftl b/l10n/ms/viewer.ftl index 1419b6e3cf92c..3cc03f3fe7746 100644 --- a/l10n/ms/viewer.ftl +++ b/l10n/ms/viewer.ftl @@ -268,3 +268,18 @@ pdfjs-web-fonts-disabled = Fon web dinyahdayakan: tidak dapat menggunakan fon te ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/my/viewer.ftl b/l10n/my/viewer.ftl index 0b045cd41cf9c..0a4ecb5bb7778 100644 --- a/l10n/my/viewer.ftl +++ b/l10n/my/viewer.ftl @@ -227,3 +227,18 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/nb-NO/viewer.ftl b/l10n/nb-NO/viewer.ftl index b038670f9ff26..82c9592bdd8b5 100644 --- a/l10n/nb-NO/viewer.ftl +++ b/l10n/nb-NO/viewer.ftl @@ -502,3 +502,18 @@ pdfjs-editor-undo-bar-undo-button-label = Angre pdfjs-editor-undo-bar-close-button = .title = Lukk pdfjs-editor-undo-bar-close-button-label = Lukk + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ne-NP/viewer.ftl b/l10n/ne-NP/viewer.ftl index 79de63bd63932..caa7fae7a6ddd 100644 --- a/l10n/ne-NP/viewer.ftl +++ b/l10n/ne-NP/viewer.ftl @@ -255,3 +255,18 @@ pdfjs-web-fonts-disabled = वेब फन्ट असक्षम छन्: ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/nl/viewer.ftl b/l10n/nl/viewer.ftl index fe24ce75f7bd6..5a8767a14290a 100644 --- a/l10n/nl/viewer.ftl +++ b/l10n/nl/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Ongedaan maken pdfjs-editor-undo-bar-close-button = .title = Sluiten pdfjs-editor-undo-bar-close-button-label = Sluiten + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index e8acedac0950e..065bffbd0fd73 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -496,9 +496,27 @@ pdfjs-editor-alt-text-settings-close-button = Lat att ## "Annotations removed" bar +pdfjs-editor-undo-bar-message-freetext = Tekst fjerna +pdfjs-editor-undo-bar-message-ink = Teikning fjerna +pdfjs-editor-undo-bar-message-stamp = Bilde fjerna pdfjs-editor-undo-bar-undo-button = .title = Angre pdfjs-editor-undo-bar-undo-button-label = Angre pdfjs-editor-undo-bar-close-button = .title = Lat att pdfjs-editor-undo-bar-close-button-label = Lat att + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/oc/viewer.ftl b/l10n/oc/viewer.ftl index b347aefce4adf..27cd7bc8bcdcd 100644 --- a/l10n/oc/viewer.ftl +++ b/l10n/oc/viewer.ftl @@ -407,3 +407,18 @@ pdfjs-editor-undo-bar-undo-button-label = Anullar pdfjs-editor-undo-bar-close-button = .title = Tampar pdfjs-editor-undo-bar-close-button-label = Tampar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index 10a61124ef360..7376d30107a17 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = ਵਾਪਸ pdfjs-editor-undo-bar-close-button = .title = ਬੰਦ ਕਰੋ pdfjs-editor-undo-bar-close-button-label = ਬੰਦ ਕਰੋ + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/pl/viewer.ftl b/l10n/pl/viewer.ftl index 07f94166656b3..7d6da2efff6af 100644 --- a/l10n/pl/viewer.ftl +++ b/l10n/pl/viewer.ftl @@ -516,3 +516,18 @@ pdfjs-editor-undo-bar-undo-button-label = Cofnij pdfjs-editor-undo-bar-close-button = .title = Zamknij pdfjs-editor-undo-bar-close-button-label = Zamknij + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 7da52019a5df0..523e9b65b3593 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Remover imagem pdfjs-editor-remove-highlight-button = .title = Remover destaque +pdfjs-editor-remove-signature-button = + .title = Remover assinatura ## @@ -439,7 +441,7 @@ pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descriç # Modal header positioned above a text box where users can add the alt text. pdfjs-editor-new-alt-text-dialog-add-label = Adicionar texto alternativo (descrição da imagem) pdfjs-editor-new-alt-text-textarea = - .placeholder = Escreva sua descrição aqui… + .placeholder = Você pode escrever uma descrição aqui… # This text refers to the alt text box above this description. It offers a definition of alt text. pdfjs-editor-new-alt-text-description = Descrição curta para pessoas que não conseguem ver a imagem ou quando a imagem não é carregada. # This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human. @@ -462,8 +464,8 @@ pdfjs-editor-new-alt-text-added-button = pdfjs-editor-new-alt-text-added-button-label = Texto alternativo adicionado # This is a button that users can click to open the alt text editor and add alt text when it is not present. pdfjs-editor-new-alt-text-missing-button = - .aria-label = Falta texto alternativo -pdfjs-editor-new-alt-text-missing-button-label = Falta texto alternativo + .aria-label = Sem texto alternativo +pdfjs-editor-new-alt-text-missing-button-label = Sem texto alternativo # This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. pdfjs-editor-new-alt-text-to-review-button = .aria-label = Revisar texto alternativo @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Destaque removido pdfjs-editor-undo-bar-message-freetext = Texto removido pdfjs-editor-undo-bar-message-ink = Desenho removido pdfjs-editor-undo-bar-message-stamp = Imagem removida +pdfjs-editor-undo-bar-message-signature = Assinatura removida # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,56 @@ pdfjs-editor-undo-bar-undo-button-label = Desfazer pdfjs-editor-undo-bar-close-button = .title = Fechar pdfjs-editor-undo-bar-close-button-label = Fechar + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Adicionar uma assinatura + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Tipo + .title = Tipo +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Desenhar + .title = Desenhar +pdfjs-editor-add-signature-image-button = Imagem + .title = Imagem + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Digite sua assinatura + .placeholder = Digite sua assinatura +pdfjs-editor-add-signature-draw-placeholder = Desenhe sua assinatura +pdfjs-editor-add-signature-draw-thickness-range-label = Espessura +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Espessura do desenho: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Arraste um arquivo aqui para enviar +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ou escolha arquivos de imagem + *[other] Ou escolha arquivos de imagem + } + +## Controls + +pdfjs-editor-add-signature-description-label = Descrição (texto alternativo) +pdfjs-editor-add-signature-description-input = + .title = Descrição (texto alternativo) +pdfjs-editor-add-signature-description-default-when-drawing = Assinatura +pdfjs-editor-add-signature-clear-button-label = Limpar assinatura +pdfjs-editor-add-signature-clear-button = + .title = Limpar assinatura +pdfjs-editor-add-signature-save-checkbox = Salvar assinatura +pdfjs-editor-add-signature-save-warning-message = Você atingiu o limite de 5 assinaturas salvas. Remova uma para salvar mais. +pdfjs-editor-add-signature-image-upload-error-title = Não foi possível enviar a imagem +pdfjs-editor-add-signature-image-upload-error-description = Verifique sua conexão de rede ou tente outra imagem. +pdfjs-editor-add-signature-error-close-button = Fechar + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Cancelar +pdfjs-editor-add-signature-add-button = Adicionar diff --git a/l10n/pt-PT/viewer.ftl b/l10n/pt-PT/viewer.ftl index 1829417e165d3..c653fd3534b5d 100644 --- a/l10n/pt-PT/viewer.ftl +++ b/l10n/pt-PT/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Anular pdfjs-editor-undo-bar-close-button = .title = Fechar pdfjs-editor-undo-bar-close-button-label = Fechar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/rm/viewer.ftl b/l10n/rm/viewer.ftl index 76992dad6f361..484489d1cfd5a 100644 --- a/l10n/rm/viewer.ftl +++ b/l10n/rm/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Revocar pdfjs-editor-undo-bar-close-button = .title = Serrar pdfjs-editor-undo-bar-close-button-label = Serrar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ro/viewer.ftl b/l10n/ro/viewer.ftl index 17f9c4363acd0..86e5b6b8554af 100644 --- a/l10n/ro/viewer.ftl +++ b/l10n/ro/viewer.ftl @@ -272,3 +272,18 @@ pdfjs-web-fonts-disabled = Fonturile web sunt dezactivate: nu se pot folosi font ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ru/viewer.ftl b/l10n/ru/viewer.ftl index 81c2f41629b19..d44342c4d6f19 100644 --- a/l10n/ru/viewer.ftl +++ b/l10n/ru/viewer.ftl @@ -329,6 +329,8 @@ pdfjs-editor-remove-stamp-button = .title = Удалить изображение pdfjs-editor-remove-highlight-button = .title = Удалить выделение +pdfjs-editor-remove-signature-button = + .title = Удалить подпись ## @@ -502,6 +504,7 @@ pdfjs-editor-undo-bar-message-highlight = Выделение удалено pdfjs-editor-undo-bar-message-freetext = Текст удалён pdfjs-editor-undo-bar-message-ink = Рисунок удалён pdfjs-editor-undo-bar-message-stamp = Изображение удалено +pdfjs-editor-undo-bar-message-signature = Подпись удалена # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,3 +519,57 @@ pdfjs-editor-undo-bar-undo-button-label = Отменить pdfjs-editor-undo-bar-close-button = .title = Закрыть pdfjs-editor-undo-bar-close-button-label = Закрыть + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Это окно позволяет пользователю создать подпись для добавления в PDF-документ. Пользователь может отредактировать имя (которое также используется в качестве альтернативного текста) и, по желанию, сохранить подпись для повторного использования. +pdfjs-editor-add-signature-dialog-title = Добавить подпись + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Ввод + .title = Ввод +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Рисовать + .title = Рисовать +pdfjs-editor-add-signature-image-button = Изображение + .title = Изображение + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Введите свою подпись + .placeholder = Введите свою подпись +pdfjs-editor-add-signature-draw-placeholder = Нарисуйте свою подпись +pdfjs-editor-add-signature-draw-thickness-range-label = Толщина +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Толщина рисунка: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Перетащите сюда файл для загрузки +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Или просмотрите файлы изображений + *[other] Или просмотрите файлы изображений + } + +## Controls + +pdfjs-editor-add-signature-description-label = Описание (альтернативный текст) +pdfjs-editor-add-signature-description-input = + .title = Описание (альтернативный текст) +pdfjs-editor-add-signature-description-default-when-drawing = Подпись +pdfjs-editor-add-signature-clear-button-label = Удалить подпись +pdfjs-editor-add-signature-clear-button = + .title = Удалить подпись +pdfjs-editor-add-signature-save-checkbox = Сохранить подпись +pdfjs-editor-add-signature-save-warning-message = Вы достигли лимита в 5 сохранённых подписей. Удалите одну, чтобы сохранить другие. +pdfjs-editor-add-signature-image-upload-error-title = Не удалось загрузить изображение +pdfjs-editor-add-signature-image-upload-error-description = Проверьте подключение к сети или попробуйте другое изображение. +pdfjs-editor-add-signature-error-close-button = Закрыть + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Отмена +pdfjs-editor-add-signature-add-button = Добавить diff --git a/l10n/sat/viewer.ftl b/l10n/sat/viewer.ftl index 90773f790678f..885b93ad083be 100644 --- a/l10n/sat/viewer.ftl +++ b/l10n/sat/viewer.ftl @@ -326,3 +326,18 @@ pdfjs-ink-canvas = ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sc/viewer.ftl b/l10n/sc/viewer.ftl index feae3a0226daf..b9659582a4568 100644 --- a/l10n/sc/viewer.ftl +++ b/l10n/sc/viewer.ftl @@ -365,3 +365,18 @@ pdfjs-editor-alt-text-settings-close-button = Serra ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/scn/viewer.ftl b/l10n/scn/viewer.ftl index d45b9004bbf49..94e0859ddc8d8 100644 --- a/l10n/scn/viewer.ftl +++ b/l10n/scn/viewer.ftl @@ -95,3 +95,18 @@ pdfjs-password-cancel-button = Sfai ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sco/viewer.ftl b/l10n/sco/viewer.ftl index aa6f9b2c8d17f..c82bd51a8eae5 100644 --- a/l10n/sco/viewer.ftl +++ b/l10n/sco/viewer.ftl @@ -285,3 +285,18 @@ pdfjs-web-fonts-disabled = Wab fonts are disabled: cannae yaise embeddit PDF fon ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/si/viewer.ftl b/l10n/si/viewer.ftl index b41e2e1e26efc..94fab4b76a80d 100644 --- a/l10n/si/viewer.ftl +++ b/l10n/si/viewer.ftl @@ -272,3 +272,18 @@ pdfjs-editor-alt-text-mark-decorative-description = මෙය දාර හෝ ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index 5cbbb8d26fdd1..44b2220bafb7e 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -331,6 +331,8 @@ pdfjs-editor-remove-stamp-button = .title = Odstrániť obrázok pdfjs-editor-remove-highlight-button = .title = Odstrániť zvýraznenie +pdfjs-editor-remove-signature-button = + .title = Odstrániť podpis ## @@ -504,6 +506,7 @@ pdfjs-editor-undo-bar-message-highlight = Zvýraznenie bolo odstránené pdfjs-editor-undo-bar-message-freetext = Text bol odstránený pdfjs-editor-undo-bar-message-ink = Kreslenie bolo odstránené pdfjs-editor-undo-bar-message-stamp = Obrázok bol odstránený +pdfjs-editor-undo-bar-message-signature = Podpis bol odstránený # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -519,3 +522,57 @@ pdfjs-editor-undo-bar-undo-button-label = Späť pdfjs-editor-undo-bar-close-button = .title = Zavrieť pdfjs-editor-undo-bar-close-button-label = Zavrieť + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Toto okno umožňuje používateľovi vytvoriť podpis, ktorý sa pridá do dokumentu PDF. Používateľ môže upraviť meno (ktoré zároveň slúži ako alternatívny text) a voliteľne uložiť podpis, ak ho plánuje v budúcnosti znova použiť. +pdfjs-editor-add-signature-dialog-title = Pridať podpis + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typ + .title = Typ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Kresliť + .title = Kresliť +pdfjs-editor-add-signature-image-button = Obrázok + .title = Obrázok + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Zadajte svoj podpis + .placeholder = Zadajte svoj podpis +pdfjs-editor-add-signature-draw-placeholder = Nakreslite svoj podpis +pdfjs-editor-add-signature-draw-thickness-range-label = Hrúbka +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Hrúbka ceruzky: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Sem presuňte súbor, ktorý chcete nahrať +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Alebo vyberte súbor s obrázkom + *[other] Alebo vyberte súbor s obrázkom + } + +## Controls + +pdfjs-editor-add-signature-description-label = Popis (alternatívny text) +pdfjs-editor-add-signature-description-input = + .title = Popis (alternatívny text) +pdfjs-editor-add-signature-description-default-when-drawing = Podpis +pdfjs-editor-add-signature-clear-button-label = Vymazať podpis +pdfjs-editor-add-signature-clear-button = + .title = Vymazať podpis +pdfjs-editor-add-signature-save-checkbox = Uložiť podpis +pdfjs-editor-add-signature-save-warning-message = Dosiahli ste limit 5 uložených podpisov. Ak chcete uložiť ďalší, jeden odstráňte. +pdfjs-editor-add-signature-image-upload-error-title = Obrázok sa nepodarilo nahrať +pdfjs-editor-add-signature-image-upload-error-description = Skontrolujte sieťové pripojenie alebo skúste iný obrázok. +pdfjs-editor-add-signature-error-close-button = Zavrieť + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Zrušiť +pdfjs-editor-add-signature-add-button = Pridať diff --git a/l10n/skr/viewer.ftl b/l10n/skr/viewer.ftl index 2d0e87f3da25a..bbd63793d26ef 100644 --- a/l10n/skr/viewer.ftl +++ b/l10n/skr/viewer.ftl @@ -496,3 +496,18 @@ pdfjs-editor-undo-bar-undo-button-label = کیتا اݨ کیتا pdfjs-editor-undo-bar-close-button = .title = بند کرو pdfjs-editor-undo-bar-close-button-label = بند کرو + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sl/viewer.ftl b/l10n/sl/viewer.ftl index 4e004bdd93abd..0f06687a0a55a 100644 --- a/l10n/sl/viewer.ftl +++ b/l10n/sl/viewer.ftl @@ -519,3 +519,18 @@ pdfjs-editor-undo-bar-undo-button-label = Razveljavi pdfjs-editor-undo-bar-close-button = .title = Zapri pdfjs-editor-undo-bar-close-button-label = Zapri + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/son/viewer.ftl b/l10n/son/viewer.ftl index d8adf9c8ee225..56134910b0ee2 100644 --- a/l10n/son/viewer.ftl +++ b/l10n/son/viewer.ftl @@ -227,3 +227,18 @@ pdfjs-web-fonts-disabled = Interneti šigirawey kay: ši hin ka goy nda PDF šig ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index 2b1c91aae2462..daea36a34c0f3 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -504,3 +504,18 @@ pdfjs-editor-undo-bar-undo-button-label = Zhbëje pdfjs-editor-undo-bar-close-button = .title = Mbylle pdfjs-editor-undo-bar-close-button-label = Mbylle + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sr/viewer.ftl b/l10n/sr/viewer.ftl index 534c6686cb20a..f30a8660f0384 100644 --- a/l10n/sr/viewer.ftl +++ b/l10n/sr/viewer.ftl @@ -422,3 +422,18 @@ pdfjs-editor-new-alt-text-not-now-button = Не сада ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/sv-SE/viewer.ftl b/l10n/sv-SE/viewer.ftl index 6c4c610454e96..b57f8c394745e 100644 --- a/l10n/sv-SE/viewer.ftl +++ b/l10n/sv-SE/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Ta bort bild pdfjs-editor-remove-highlight-button = .title = Ta bort markering +pdfjs-editor-remove-signature-button = + .title = Ta bort signatur ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Markering borttagen pdfjs-editor-undo-bar-message-freetext = Text borttagen pdfjs-editor-undo-bar-message-ink = Ritning borttagen pdfjs-editor-undo-bar-message-stamp = Bild borttagen +pdfjs-editor-undo-bar-message-signature = Signatur borttagen # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,57 @@ pdfjs-editor-undo-bar-undo-button-label = Ångra pdfjs-editor-undo-bar-close-button = .title = Stäng pdfjs-editor-undo-bar-close-button-label = Stäng + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = Denna modal tillåter användaren att skapa en signatur för att lägga till i ett PDF-dokument. Användaren kan redigera namnet (som också fungerar som alternativ text) och eventuellt spara signaturen för upprepad användning. +pdfjs-editor-add-signature-dialog-title = Lägg till en signatur + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typ + .title = Typ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Rita + .title = Rita +pdfjs-editor-add-signature-image-button = Bild + .title = Bild + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Skriv din signatur + .placeholder = Skriv din signatur +pdfjs-editor-add-signature-draw-placeholder = Rita din signatur +pdfjs-editor-add-signature-draw-thickness-range-label = Tjocklek +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Ritningstjocklek: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Dra en fil hit för att ladda upp +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Eller välj bildfiler + *[other] Eller bläddra bland bildfiler + } + +## Controls + +pdfjs-editor-add-signature-description-label = Beskrivning (alternativ text) +pdfjs-editor-add-signature-description-input = + .title = Beskrivning (alternativ text) +pdfjs-editor-add-signature-description-default-when-drawing = Signatur +pdfjs-editor-add-signature-clear-button-label = Rensa signatur +pdfjs-editor-add-signature-clear-button = + .title = Rensa signatur +pdfjs-editor-add-signature-save-checkbox = Spara signatur +pdfjs-editor-add-signature-save-warning-message = Du har nått gränsen på 5 sparade signaturer. Ta bort en för att spara fler. +pdfjs-editor-add-signature-image-upload-error-title = Det gick inte att ladda upp bilden +pdfjs-editor-add-signature-image-upload-error-description = Kontrollera din nätverksanslutning eller försök med en annan bild. +pdfjs-editor-add-signature-error-close-button = Stäng + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Avbryt +pdfjs-editor-add-signature-add-button = Lägg till diff --git a/l10n/szl/viewer.ftl b/l10n/szl/viewer.ftl index cefa4e6782e39..87f85b35b7b5c 100644 --- a/l10n/szl/viewer.ftl +++ b/l10n/szl/viewer.ftl @@ -278,3 +278,18 @@ pdfjs-web-fonts-disabled = Necowe fōnty sōm zastawiōne: niy idzie użyć wklu ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ta/viewer.ftl b/l10n/ta/viewer.ftl index 48a692201c75f..f724b4dfb990e 100644 --- a/l10n/ta/viewer.ftl +++ b/l10n/ta/viewer.ftl @@ -244,3 +244,18 @@ pdfjs-web-fonts-disabled = வலை எழுத்துருக்கள் ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/te/viewer.ftl b/l10n/te/viewer.ftl index 37b5ba52a6795..a44cecb69f6fd 100644 --- a/l10n/te/viewer.ftl +++ b/l10n/te/viewer.ftl @@ -260,3 +260,18 @@ pdfjs-editor-ink-opacity-input = అకిరణ్యత ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/tg/viewer.ftl b/l10n/tg/viewer.ftl index b39fee5724f5c..f9364936a7db2 100644 --- a/l10n/tg/viewer.ftl +++ b/l10n/tg/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Тоза кардани тасвир pdfjs-editor-remove-highlight-button = .title = Тоза кардани ҷудокунӣ +pdfjs-editor-remove-signature-button = + .title = Тоза кардани имзо ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Ҷудосозӣ тоза карда pdfjs-editor-undo-bar-message-freetext = Матн тоза карда шуд pdfjs-editor-undo-bar-message-ink = Расм тоза карда шуд pdfjs-editor-undo-bar-message-stamp = Тасвир тоза карда шуд +pdfjs-editor-undo-bar-message-signature = Имзо тоза карда шуд # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -513,3 +516,55 @@ pdfjs-editor-undo-bar-undo-button-label = Бекор кардан pdfjs-editor-undo-bar-close-button = .title = Пӯшидан pdfjs-editor-undo-bar-close-button-label = Пӯшидан + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-title = Илова кардани имзо + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Нависед + .title = Нависед +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Имзо гузоред + .title = Имзо гузоред +pdfjs-editor-add-signature-image-button = Тасвир + .title = Тасвир + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = Имзои худро бо ном нависед + .placeholder = Имзои худро бо ном нависед +pdfjs-editor-add-signature-draw-placeholder = Имзои худро кашида, гузоред +pdfjs-editor-add-signature-draw-thickness-range-label = Ғафсӣ +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Ғафсии имзо: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Барои бор кардани файл, онро дар ин ҷой кашида, гузоред +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ё файлҳои тасвириро интихоб кунед + *[other] Ё файлҳои тасвириро интихоб кунед + } + +## Controls + +pdfjs-editor-add-signature-description-label = Тавсиф (матни иловагӣ) +pdfjs-editor-add-signature-description-input = + .title = Тавсиф (матни иловагӣ) +pdfjs-editor-add-signature-description-default-when-drawing = Имзо +pdfjs-editor-add-signature-clear-button-label = Пок кардани имзо +pdfjs-editor-add-signature-clear-button = + .title = Пок кардани имзо +pdfjs-editor-add-signature-save-checkbox = Нигоҳ доштани имзо +pdfjs-editor-add-signature-image-upload-error-title = Тасвир бор карда нашуд +pdfjs-editor-add-signature-image-upload-error-description = Пайвастшавии шабакаи худро санҷед ё тасвири дигареро кӯшиш кунед. +pdfjs-editor-add-signature-error-close-button = Пӯшидан + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = Бекор кардан +pdfjs-editor-add-signature-add-button = Илова кардан diff --git a/l10n/th/viewer.ftl b/l10n/th/viewer.ftl index cba15f90fa09c..d8692721d7d58 100644 --- a/l10n/th/viewer.ftl +++ b/l10n/th/viewer.ftl @@ -501,3 +501,18 @@ pdfjs-editor-undo-bar-undo-button-label = เลิกทำ pdfjs-editor-undo-bar-close-button = .title = ปิด pdfjs-editor-undo-bar-close-button-label = ปิด + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/tl/viewer.ftl b/l10n/tl/viewer.ftl index 6daa6103851c8..eda4fd740e717 100644 --- a/l10n/tl/viewer.ftl +++ b/l10n/tl/viewer.ftl @@ -278,3 +278,18 @@ pdfjs-web-fonts-disabled = Naka-disable ang mga Web font: hindi kayang gamitin a ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/tr/viewer.ftl b/l10n/tr/viewer.ftl index b1b7cbfaa4e76..be4e257d229af 100644 --- a/l10n/tr/viewer.ftl +++ b/l10n/tr/viewer.ftl @@ -513,3 +513,18 @@ pdfjs-editor-undo-bar-undo-button-label = Geri al pdfjs-editor-undo-bar-close-button = .title = Kapat pdfjs-editor-undo-bar-close-button-label = Kapat + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/trs/viewer.ftl b/l10n/trs/viewer.ftl index 6bc0307ebdd2a..142c147e421e2 100644 --- a/l10n/trs/viewer.ftl +++ b/l10n/trs/viewer.ftl @@ -218,3 +218,18 @@ pdfjs-password-cancel-button = Duyichin' ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index dd547279b7f6e..8f394c17cf27d 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -516,3 +516,18 @@ pdfjs-editor-undo-bar-undo-button-label = Повернути pdfjs-editor-undo-bar-close-button = .title = Закрити pdfjs-editor-undo-bar-close-button-label = Закрити + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/ur/viewer.ftl b/l10n/ur/viewer.ftl index 981217796ab59..b6a73d52c59bd 100644 --- a/l10n/ur/viewer.ftl +++ b/l10n/ur/viewer.ftl @@ -269,3 +269,18 @@ pdfjs-web-fonts-disabled = ویب فانٹ نا اہل ہیں: شامل PDF فا ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/uz/viewer.ftl b/l10n/uz/viewer.ftl index e22cf7a71c7d3..9c6d79314c3ac 100644 --- a/l10n/uz/viewer.ftl +++ b/l10n/uz/viewer.ftl @@ -208,3 +208,18 @@ pdfjs-web-fonts-disabled = Veb shriftlar oʻchirilgan: ichki PDF shriftlardan fo ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/vi/viewer.ftl b/l10n/vi/viewer.ftl index af1291f36fd58..96dcfab409d03 100644 --- a/l10n/vi/viewer.ftl +++ b/l10n/vi/viewer.ftl @@ -501,3 +501,18 @@ pdfjs-editor-undo-bar-undo-button-label = Hoàn tác pdfjs-editor-undo-bar-close-button = .title = Đóng pdfjs-editor-undo-bar-close-button-label = Đóng + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/wo/viewer.ftl b/l10n/wo/viewer.ftl index 5cea775608b2f..dc761d741880b 100644 --- a/l10n/wo/viewer.ftl +++ b/l10n/wo/viewer.ftl @@ -148,3 +148,18 @@ pdfjs-password-cancel-button = Neenal ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/xh/viewer.ftl b/l10n/xh/viewer.ftl index 4888b999f5db8..d46e910cfc9dd 100644 --- a/l10n/xh/viewer.ftl +++ b/l10n/xh/viewer.ftl @@ -233,3 +233,18 @@ pdfjs-web-fonts-disabled = Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa ## "Annotations removed" bar + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/zh-CN/viewer.ftl b/l10n/zh-CN/viewer.ftl index 8fe9a6ae4dce3..94f32c292e2aa 100644 --- a/l10n/zh-CN/viewer.ftl +++ b/l10n/zh-CN/viewer.ftl @@ -501,3 +501,18 @@ pdfjs-editor-undo-bar-undo-button-label = 撤销 pdfjs-editor-undo-bar-close-button = .title = 关闭 pdfjs-editor-undo-bar-close-button-label = 关闭 + +## Add a signature dialog + + +## Tab names + + +## Tab panels + + +## Controls + + +## Dialog buttons + diff --git a/l10n/zh-TW/viewer.ftl b/l10n/zh-TW/viewer.ftl index bc4b7efe1f1aa..65d7309bd2238 100644 --- a/l10n/zh-TW/viewer.ftl +++ b/l10n/zh-TW/viewer.ftl @@ -319,6 +319,8 @@ pdfjs-editor-remove-stamp-button = .title = 移除圖片 pdfjs-editor-remove-highlight-button = .title = 移除強調範圍 +pdfjs-editor-remove-signature-button = + .title = 移除簽章 ## @@ -492,6 +494,7 @@ pdfjs-editor-undo-bar-message-highlight = 已移除強調 pdfjs-editor-undo-bar-message-freetext = 已移除文字 pdfjs-editor-undo-bar-message-ink = 已移除繪圖 pdfjs-editor-undo-bar-message-stamp = 已移除圖片 +pdfjs-editor-undo-bar-message-signature = 已移除簽章 # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 筆註解 @@ -501,3 +504,57 @@ pdfjs-editor-undo-bar-undo-button-label = 還原 pdfjs-editor-undo-bar-close-button = .title = 關閉 pdfjs-editor-undo-bar-close-button-label = 關閉 + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = 此對話框讓使用者能夠建立簽章以加入 PDF 文件。使用者可以編輯他們的姓名(同時也是替代文字),並選擇性儲存簽章,以供未來重複使用。 +pdfjs-editor-add-signature-dialog-title = 加入簽章 + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = 打字 + .title = 打字 +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = 手繪 + .title = 手繪 +pdfjs-editor-add-signature-image-button = 圖片 + .title = 圖片 + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = 輸入簽章 + .placeholder = 輸入簽章 +pdfjs-editor-add-signature-draw-placeholder = 手繪簽章 +pdfjs-editor-add-signature-draw-thickness-range-label = 線條粗細 +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = 繪製時的線條粗細:{ $thickness } +pdfjs-editor-add-signature-image-placeholder = 將檔案拖曳到此處即可上傳 +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] 或選擇圖片檔案 + *[other] 或瀏覽圖片檔案 + } + +## Controls + +pdfjs-editor-add-signature-description-label = 描述(替代文字) +pdfjs-editor-add-signature-description-input = + .title = 描述(替代文字) +pdfjs-editor-add-signature-description-default-when-drawing = 簽章 +pdfjs-editor-add-signature-clear-button-label = 清除簽章 +pdfjs-editor-add-signature-clear-button = + .title = 清除簽章 +pdfjs-editor-add-signature-save-checkbox = 儲存簽章 +pdfjs-editor-add-signature-save-warning-message = 您已經儲存 5 式簽章,請移除任一式才能再新增。 +pdfjs-editor-add-signature-image-upload-error-title = 無法上傳圖片 +pdfjs-editor-add-signature-image-upload-error-description = 請檢查您的網路連線,或改用其他圖片。 +pdfjs-editor-add-signature-error-close-button = 關閉 + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = 取消 +pdfjs-editor-add-signature-add-button = 新增 From 035ffdf95a8d1e1946a5f4ba21b6d403558e5f0d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 10 Feb 2025 10:03:28 +0100 Subject: [PATCH 257/338] Create the `borderStyle` of inferred links lazily (PR 19110 follow-up) Given that most inferred links will overlap existing LinkAnnotations, creating a lot of unused `borderStyle` objects seem unnecessary. Hence we can move that into the `AnnotationLayer.prototype.addLinkAnnotations` method instead, which also allows us to slightly reduce the API-surface. --- src/display/annotation_layer.js | 20 ++++++++++++++++++++ src/pdf.js | 2 -- test/unit/pdf_spec.js | 2 -- web/autolinker.js | 19 ++++--------------- web/pdfjs.js | 2 -- 5 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 0937dc566d349..8db5d994f32d9 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -3254,6 +3254,8 @@ class AnnotationLayer { parent: this, }; for (const data of annotations) { + data.borderStyle ||= AnnotationLayer._defaultBorderStyle; + elementParams.data = data; const element = AnnotationElementFactory.create(elementParams); @@ -3329,6 +3331,24 @@ class AnnotationLayer { getEditableAnnotation(id) { return this.#editableAnnotations.get(id); } + + /** + * @private + */ + static get _defaultBorderStyle() { + return shadow( + this, + "_defaultBorderStyle", + Object.freeze({ + width: 1, + rawWidth: 1, + style: AnnotationBorderStyleType.SOLID, + dashArray: [3], + horizontalCornerRadius: 0, + verticalCornerRadius: 0, + }) + ); + } } export { diff --git a/src/pdf.js b/src/pdf.js index 869f41db529af..36b0ccc97d852 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -24,7 +24,6 @@ import { AbortException, - AnnotationBorderStyleType, AnnotationEditorParamsType, AnnotationEditorType, AnnotationMode, @@ -92,7 +91,6 @@ if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING || GENERIC")) { export { AbortException, - AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 73bab4a981d7c..1f4de0f21ceb0 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -15,7 +15,6 @@ import { AbortException, - AnnotationBorderStyleType, AnnotationEditorParamsType, AnnotationEditorType, AnnotationMode, @@ -69,7 +68,6 @@ import { XfaLayer } from "../../src/display/xfa_layer.js"; const expectedAPI = Object.freeze({ AbortException, - AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, diff --git a/web/autolinker.js b/web/autolinker.js index b2c7007ef1184..098acb2739320 100644 --- a/web/autolinker.js +++ b/web/autolinker.js @@ -13,12 +13,7 @@ * limitations under the License. */ -import { - AnnotationBorderStyleType, - AnnotationType, - createValidAbsoluteUrl, - Util, -} from "pdfjs-lib"; +import { AnnotationType, createValidAbsoluteUrl, Util } from "pdfjs-lib"; import { getOriginalIndex, normalize } from "./pdf_find_controller.js"; function DOMRectToPDF({ width, height, left, top }, pdfPageView) { @@ -89,15 +84,9 @@ function createLinkAnnotation({ url, index, length }, pdfPageView, id) { annotationType: AnnotationType.LINK, rotation: 0, ...calculateLinkPosition(range, pdfPageView), - // This is just the default for AnnotationBorderStyle. - borderStyle: { - width: 1, - rawWidth: 1, - style: AnnotationBorderStyleType.SOLID, - dashArray: [3], - horizontalCornerRadius: 0, - verticalCornerRadius: 0, - }, + // Populated in the annotationLayer to avoid unnecessary object creation, + // since most inferred links overlap existing LinkAnnotations: + borderStyle: null, }; } diff --git a/web/pdfjs.js b/web/pdfjs.js index 763e194bc4372..3a2daeb747caf 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -15,7 +15,6 @@ const { AbortException, - AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, @@ -65,7 +64,6 @@ const { export { AbortException, - AnnotationBorderStyleType, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, From 1c8ddabba386506d97622c2a864f635408758c0d Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 5 Feb 2025 19:34:11 +0100 Subject: [PATCH 258/338] Add the possibility to compress/decompress the signature data in order to store them in the logins storage in Firefox (bug 1946171) --- src/display/editor/drawers/signaturedraw.js | 186 +++++++++++++++++++- src/display/editor/signature.js | 1 + src/pdf.js | 4 + test/unit/editor_spec.js | 48 +++++ test/unit/pdf_spec.js | 4 + web/app.js | 16 +- web/chromecom.js | 6 + web/external_services.js | 4 + web/firefoxcom.js | 70 ++++++++ web/generic_signature_storage.js | 76 ++++++++ web/genericcom.js | 5 + web/pdfjs.js | 4 + web/signature_manager.css | 15 +- web/signature_manager.js | 35 +++- web/viewer.html | 2 +- 15 files changed, 459 insertions(+), 17 deletions(-) create mode 100644 web/generic_signature_storage.js diff --git a/src/display/editor/drawers/signaturedraw.js b/src/display/editor/drawers/signaturedraw.js index f0a0ed36f72af..d148ea5248413 100644 --- a/src/display/editor/drawers/signaturedraw.js +++ b/src/display/editor/drawers/signaturedraw.js @@ -13,10 +13,14 @@ * limitations under the License. */ +import { fromBase64Util, toBase64Util, warn } from "../../../shared/util.js"; import { ContourDrawOutline } from "./contour.js"; import { InkDrawOutline } from "./inkdraw.js"; import { Outline } from "./outline.js"; +const BASE_HEADER_LENGTH = 8; +const POINTS_PROPERTIES_NUMBER = 3; + /** * Basic text editor in order to create a Signature annotation. */ @@ -607,12 +611,14 @@ class SignatureExtractor { const ratio = Math.min(pageWidth / width, pageHeight / height); const xScale = ratio / pageWidth; const yScale = ratio / pageHeight; + const newCurves = []; for (const { points } of curves) { const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points; if (!reducedPoints) { continue; } + newCurves.push(reducedPoints); const len = reducedPoints.length; const newPoints = new Float32Array(len); @@ -660,7 +666,185 @@ class SignatureExtractor { innerMargin ); - return outline; + return { outline, newCurves, areContours, thickness, width, height }; + } + + static async compressSignature({ + outlines, + areContours, + thickness, + width, + height, + }) { + // We create a single array containing all the outlines. + // The format is the following: + // - 4 bytes: data length. + // - 4 bytes: version. + // - 4 bytes: width. + // - 4 bytes: height. + // - 4 bytes: 0 if it's a contour, 1 if it's an ink. + // - 4 bytes: thickness. + // - 4 bytes: number of drawings. + // - 4 bytes: size of the buffer containing the diff of the coordinates. + // - 4 bytes: number of points in the first drawing. + // - 4 bytes: x coordinate of the first point. + // - 4 bytes: y coordinate of the first point. + // - 4 bytes: number of points in the second drawing. + // - 4 bytes: x coordinate of the first point. + // - 4 bytes: y coordinate of the first point. + // - ... + // - The buffer containing the diff of the coordinates. + + // The coordinates are supposed to be positive integers. + + // We also compute the min and max difference between two points. + // This will help us to determine the type of the buffer (Int8, Int16 or + // Int32) in order to minimize the amount of data we have. + let minDiff = Infinity; + let maxDiff = -Infinity; + let outlinesLength = 0; + for (const points of outlines) { + outlinesLength += points.length; + for (let i = 2, ii = points.length; i < ii; i++) { + const dx = points[i] - points[i - 2]; + minDiff = Math.min(minDiff, dx); + maxDiff = Math.max(maxDiff, dx); + } + } + + let bufferType; + if (minDiff >= -128 && maxDiff <= 127) { + bufferType = Int8Array; + } else if (minDiff >= -32768 && maxDiff <= 32767) { + bufferType = Int16Array; + } else { + bufferType = Int32Array; + } + + const len = outlines.length; + const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len; + const header = new Uint32Array(headerLength); + + let offset = 0; + header[offset++] = + headerLength * Uint32Array.BYTES_PER_ELEMENT + + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT; + header[offset++] = 0; // Version. + header[offset++] = width; + header[offset++] = height; + header[offset++] = areContours ? 0 : 1; + header[offset++] = Math.max(0, Math.floor(thickness ?? 0)); + header[offset++] = len; + header[offset++] = bufferType.BYTES_PER_ELEMENT; + for (const points of outlines) { + header[offset++] = points.length - 2; + header[offset++] = points[0]; + header[offset++] = points[1]; + } + + const cs = new CompressionStream("deflate-raw"); + const writer = cs.writable.getWriter(); + await writer.ready; + + writer.write(header); + const BufferCtor = bufferType.prototype.constructor; + for (const points of outlines) { + const diffs = new BufferCtor(points.length - 2); + for (let i = 2, ii = points.length; i < ii; i++) { + diffs[i - 2] = points[i] - points[i - 2]; + } + writer.write(diffs); + } + + writer.close(); + + const buf = await new Response(cs.readable).arrayBuffer(); + const bytes = new Uint8Array(buf); + + return toBase64Util(bytes); + } + + static async decompressSignature(signatureData) { + try { + const bytes = fromBase64Util(signatureData); + const { readable, writable } = new DecompressionStream("deflate-raw"); + const writer = writable.getWriter(); + await writer.ready; + + // We can't await writer.write() because it'll block until the reader + // starts which happens few lines below. + writer + .write(bytes) + .then(async () => { + await writer.ready; + await writer.close(); + }) + .catch(() => {}); + + let data = null; + let offset = 0; + for await (const chunk of readable) { + data ||= new Uint8Array(new Uint32Array(chunk.buffer)[0]); + data.set(chunk, offset); + offset += chunk.length; + } + + // We take a bit too much data for the header but it's fine. + const header = new Uint32Array(data.buffer, 0, data.length >> 2); + const version = header[1]; + if (version !== 0) { + throw new Error(`Invalid version: ${version}`); + } + const width = header[2]; + const height = header[3]; + const areContours = header[4] === 0; + const thickness = header[5]; + const numberOfDrawings = header[6]; + const bufferType = header[7]; + const outlines = []; + const diffsOffset = + (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * + Uint32Array.BYTES_PER_ELEMENT; + let diffs; + + switch (bufferType) { + case Int8Array.BYTES_PER_ELEMENT: + diffs = new Int8Array(data.buffer, diffsOffset); + break; + case Int16Array.BYTES_PER_ELEMENT: + diffs = new Int16Array(data.buffer, diffsOffset); + break; + case Int32Array.BYTES_PER_ELEMENT: + diffs = new Int32Array(data.buffer, diffsOffset); + break; + } + + offset = 0; + for (let i = 0; i < numberOfDrawings; i++) { + const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH]; + const points = new Float32Array(len + 2); + outlines.push(points); + + for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) { + points[j] = + header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1]; + } + for (let j = 0; j < len; j++) { + points[j + 2] = points[j] + diffs[offset++]; + } + } + + return { + areContours, + thickness, + outlines, + width, + height, + }; + } catch (e) { + warn(`decompressSignature: ${e}`); + return null; + } } } diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index 2c5c830b9f4f6..512a22b3f61e8 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -72,6 +72,7 @@ class SignatureEditor extends DrawingEditor { super({ ...params, mustBeCommitted: true, name: "signatureEditor" }); this._willKeepAspectRatio = true; this._description = ""; + this._signatureUUID = null; } /** @inheritdoc */ diff --git a/src/pdf.js b/src/pdf.js index 36b0ccc97d852..351e5cfed42d3 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -30,6 +30,7 @@ import { AnnotationType, createValidAbsoluteUrl, FeatureTest, + getUuid, ImageKind, InvalidPDFException, normalizeUnicode, @@ -72,6 +73,7 @@ import { DOMSVGFactory } from "./display/svg_factory.js"; import { DrawLayer } from "./display/draw_layer.js"; import { GlobalWorkerOptions } from "./display/worker_options.js"; import { HighlightOutliner } from "./display/editor/drawers/highlight.js"; +import { SignatureExtractor } from "./display/editor/drawers/signaturedraw.js"; import { TextLayer } from "./display/text_layer.js"; import { TouchManager } from "./display/touch_manager.js"; import { XfaLayer } from "./display/xfa_layer.js"; @@ -108,6 +110,7 @@ export { getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, + getUuid, getXfaPageViewport, GlobalWorkerOptions, ImageKind, @@ -128,6 +131,7 @@ export { ResponseException, setLayerDimensions, shadow, + SignatureExtractor, stopEvent, SupportedImageMimeTypes, TextLayer, diff --git a/test/unit/editor_spec.js b/test/unit/editor_spec.js index 7adda95881c90..aa8aa458a6b1d 100644 --- a/test/unit/editor_spec.js +++ b/test/unit/editor_spec.js @@ -14,6 +14,7 @@ */ import { CommandManager } from "../../src/display/editor/tools.js"; +import { SignatureExtractor } from "../../src/display/editor/drawers/signaturedraw.js"; describe("editor", function () { describe("Command Manager", function () { @@ -90,4 +91,51 @@ describe("editor", function () { manager.add({ ...makeDoUndo(5), mustExec: true }); expect(x).toEqual(11); }); + + it("should check signature compression/decompression", async () => { + let gen = n => new Float32Array(crypto.getRandomValues(new Uint16Array(n))); + let outlines = [102, 28, 254, 4536, 10, 14532, 512].map(gen); + const signature = { + outlines, + areContours: false, + thickness: 1, + width: 123, + height: 456, + }; + let compressed = await SignatureExtractor.compressSignature(signature); + let decompressed = await SignatureExtractor.decompressSignature(compressed); + expect(decompressed).toEqual(signature); + + signature.thickness = 2; + compressed = await SignatureExtractor.compressSignature(signature); + decompressed = await SignatureExtractor.decompressSignature(compressed); + expect(decompressed).toEqual(signature); + + signature.areContours = true; + compressed = await SignatureExtractor.compressSignature(signature); + decompressed = await SignatureExtractor.decompressSignature(compressed); + expect(decompressed).toEqual(signature); + + // Numbers are small enough to be compressed with Uint8Array. + gen = n => + new Float32Array( + crypto.getRandomValues(new Uint8Array(n)).map(x => x / 10) + ); + outlines = [100, 200, 300, 10, 80].map(gen); + signature.outlines = outlines; + compressed = await SignatureExtractor.compressSignature(signature); + decompressed = await SignatureExtractor.decompressSignature(compressed); + expect(decompressed).toEqual(signature); + + // Numbers are large enough to be compressed with Uint16Array. + gen = n => + new Float32Array( + crypto.getRandomValues(new Uint16Array(n)).map(x => x / 10) + ); + outlines = [100, 200, 300, 10, 80].map(gen); + signature.outlines = outlines; + compressed = await SignatureExtractor.compressSignature(signature); + decompressed = await SignatureExtractor.decompressSignature(compressed); + expect(decompressed).toEqual(signature); + }); }); diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 1f4de0f21ceb0..66b85d4d96519 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -21,6 +21,7 @@ import { AnnotationType, createValidAbsoluteUrl, FeatureTest, + getUuid, ImageKind, InvalidPDFException, normalizeUnicode, @@ -62,6 +63,7 @@ import { ColorPicker } from "../../src/display/editor/color_picker.js"; import { DOMSVGFactory } from "../../src/display/svg_factory.js"; import { DrawLayer } from "../../src/display/draw_layer.js"; import { GlobalWorkerOptions } from "../../src/display/worker_options.js"; +import { SignatureExtractor } from "../../src/display/editor/drawers/signaturedraw.js"; import { TextLayer } from "../../src/display/text_layer.js"; import { TouchManager } from "../../src/display/touch_manager.js"; import { XfaLayer } from "../../src/display/xfa_layer.js"; @@ -85,6 +87,7 @@ const expectedAPI = Object.freeze({ getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, + getUuid, getXfaPageViewport, GlobalWorkerOptions, ImageKind, @@ -105,6 +108,7 @@ const expectedAPI = Object.freeze({ ResponseException, setLayerDimensions, shadow, + SignatureExtractor, stopEvent, SupportedImageMimeTypes, TextLayer, diff --git a/web/app.js b/web/app.js index 61550978cc5c5..0592b526d97f0 100644 --- a/web/app.js +++ b/web/app.js @@ -461,13 +461,15 @@ const PDFViewerApplication = { this.editorUndoBar = new EditorUndoBar(appConfig.editorUndoBar, eventBus); } - const signatureManager = appConfig.addSignatureDialog - ? new SignatureManager( - appConfig.addSignatureDialog, - this.overlayManager, - this.l10n - ) - : null; + const signatureManager = + AppOptions.get("enableSignatureEditor") && appConfig.addSignatureDialog + ? new SignatureManager( + appConfig.addSignatureDialog, + this.overlayManager, + this.l10n, + externalServices.createSignatureStorage() + ) + : null; const enableHWA = AppOptions.get("enableHWA"); const pdfViewer = new PDFViewer({ diff --git a/web/chromecom.js b/web/chromecom.js index a2eec5c347ec3..c66734a87bc28 100644 --- a/web/chromecom.js +++ b/web/chromecom.js @@ -19,8 +19,10 @@ import { BaseExternalServices } from "./external_services.js"; import { BasePreferences } from "./preferences.js"; import { GenericL10n } from "./genericl10n.js"; import { GenericScripting } from "./generic_scripting.js"; +import { SignatureStorage } from "./generic_signature_storage.js"; // These strings are from chrome/app/resources/generated_resources_*.xtb. +// eslint-disable-next-line sort-imports import i18nFileAccessLabels from "./chrome-i18n-allow-access-to-file-urls.json" with { type: "json" }; if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("CHROME")) { @@ -419,6 +421,10 @@ class ExternalServices extends BaseExternalServices { createScripting() { return new GenericScripting(AppOptions.get("sandboxBundleSrc")); } + + createSignatureStorage() { + return new SignatureStorage(); + } } class MLManager { diff --git a/web/external_services.js b/web/external_services.js index 772a15ef81405..b9b199bd4bb14 100644 --- a/web/external_services.js +++ b/web/external_services.js @@ -44,6 +44,10 @@ class BaseExternalServices { throw new Error("Not implemented: createScripting"); } + createSignatureStorage() { + throw new Error("Not implemented: createSignatureStorage"); + } + updateEditorStates(data) { throw new Error("Not implemented: updateEditorStates"); } diff --git a/web/firefoxcom.js b/web/firefoxcom.js index 5b98d17a60683..983fcceeddd3e 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -495,6 +495,72 @@ class MLManager { } } +class SignatureStorage { + #signatures = null; + + #handleSignature(data) { + return FirefoxCom.requestAsync("handleSignature", data); + } + + async getAll() { + if (!this.#signatures) { + this.#signatures = Object.create(null); + const data = await this.#handleSignature({ action: "get" }); + if (data) { + for (const { uuid, description, signatureData } of data) { + this.#signatures[uuid] = { description, signatureData }; + } + } + } + return this.#signatures; + } + + async isFull() { + // We want to store at most 5 signatures. + return Object.keys(await this.getAll()).length === 5; + } + + async create(data) { + if (await this.isFull()) { + return null; + } + const uuid = await this.#handleSignature({ + action: "create", + ...data, + }); + if (!uuid) { + return null; + } + this.#signatures[uuid] = data; + return uuid; + } + + async delete(uuid) { + const signatures = await this.getAll(); + if (!signatures[uuid]) { + return false; + } + if (await this.#handleSignature({ action: "delete", uuid })) { + delete signatures[uuid]; + return true; + } + return false; + } + + async update(uuid, data) { + const signatures = await this.getAll(); + const oldData = signatures[uuid]; + if (!oldData) { + return false; + } + if (await this.#handleSignature({ action: "update", uuid, ...data })) { + Object.assign(oldData, data); + return true; + } + return false; + } +} + class ExternalServices extends BaseExternalServices { updateFindControlState(data) { FirefoxCom.request("updateFindControlState", data); @@ -581,6 +647,10 @@ class ExternalServices extends BaseExternalServices { return FirefoxScripting; } + createSignatureStorage() { + return new SignatureStorage(); + } + dispatchGlobalEvent(event) { FirefoxCom.request("dispatchGlobalEvent", event); } diff --git a/web/generic_signature_storage.js b/web/generic_signature_storage.js new file mode 100644 index 0000000000000..4432311629f35 --- /dev/null +++ b/web/generic_signature_storage.js @@ -0,0 +1,76 @@ +/* Copyright 2025 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. + */ + +import { getUuid } from "pdfjs-lib"; + +class SignatureStorage { + // TODO: Encrypt the data in using a password and add a UI for entering it. + // We could use the Web Crypto API for this (see https://bradyjoslin.com/blog/encryption-webcrypto/ + // for an example). + + #signatures = null; + + #save() { + localStorage.setItem("pdfjs.signature", JSON.stringify(this.#signatures)); + } + + async getAll() { + if (!this.#signatures) { + const data = localStorage.getItem("pdfjs.signature"); + this.#signatures = data ? JSON.parse(data) : Object.create(null); + } + return this.#signatures; + } + + async isFull() { + return Object.keys(await this.getAll()).length === 5; + } + + async create(data) { + if (await this.isFull()) { + return null; + } + const uuid = getUuid(); + this.#signatures[uuid] = data; + this.#save(); + + return uuid; + } + + async delete(uuid) { + const signatures = await this.getAll(); + if (!signatures[uuid]) { + return false; + } + delete signatures[uuid]; + this.#save(); + + return true; + } + + async update(uuid, data) { + const signatures = await this.getAll(); + const oldData = signatures[uuid]; + if (!oldData) { + return false; + } + Object.assign(oldData, data); + this.#save(); + + return true; + } +} + +export { SignatureStorage }; diff --git a/web/genericcom.js b/web/genericcom.js index 610dac9502140..9cdf38d232b3d 100644 --- a/web/genericcom.js +++ b/web/genericcom.js @@ -18,6 +18,7 @@ import { BaseExternalServices } from "./external_services.js"; import { BasePreferences } from "./preferences.js"; import { GenericL10n } from "./genericl10n.js"; import { GenericScripting } from "./generic_scripting.js"; +import { SignatureStorage } from "./generic_signature_storage.js"; if (typeof PDFJSDev !== "undefined" && !PDFJSDev.test("GENERIC")) { throw new Error( @@ -45,6 +46,10 @@ class ExternalServices extends BaseExternalServices { createScripting() { return new GenericScripting(AppOptions.get("sandboxBundleSrc")); } + + createSignatureStorage() { + return new SignatureStorage(); + } } class MLManager { diff --git a/web/pdfjs.js b/web/pdfjs.js index 3a2daeb747caf..47739ef5223a4 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -32,6 +32,7 @@ const { getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, + getUuid, getXfaPageViewport, GlobalWorkerOptions, ImageKind, @@ -52,6 +53,7 @@ const { ResponseException, setLayerDimensions, shadow, + SignatureExtractor, stopEvent, SupportedImageMimeTypes, TextLayer, @@ -81,6 +83,7 @@ export { getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, + getUuid, getXfaPageViewport, GlobalWorkerOptions, ImageKind, @@ -101,6 +104,7 @@ export { ResponseException, setLayerDimensions, shadow, + SignatureExtractor, stopEvent, SupportedImageMimeTypes, TextLayer, diff --git a/web/signature_manager.css b/web/signature_manager.css index 1dc2a58efb1cf..f1c90b76da146 100644 --- a/web/signature_manager.css +++ b/web/signature_manager.css @@ -571,14 +571,23 @@ user-select: none; } - #addSignatureSaveWarning { + &:not(.fullStorage) #addSignatureSaveWarning { + display: none; + } + + &.fullStorage #addSignatureSaveWarning { + display: block; + opacity: 1; color: var(--save-warning-color); font-size: 11px; } - &[disabled] { + &:is([disabled], .fullStorage) { pointer-events: none; - opacity: 0.4; + + > :not(#addSignatureSaveWarning) { + opacity: 0.4; + } } } } diff --git a/web/signature_manager.js b/web/signature_manager.js index 945282cf9d976..d25dda7a23692 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -16,6 +16,7 @@ import { DOMSVGFactory, noContextMenu, + SignatureExtractor, stopEvent, SupportedImageMimeTypes, } from "pdfjs-lib"; @@ -81,6 +82,8 @@ class SignatureManager { #overlayManager; + #signatureStorage; + #uiManager = null; static #l10nDescription = null; @@ -111,7 +114,8 @@ class SignatureManager { saveContainer, }, overlayManager, - l10n + l10n, + signatureStorage ) { this.#addButton = addButton; this.#clearButton = clearButton; @@ -131,6 +135,7 @@ class SignatureManager { this.#saveContainer = saveContainer; this.#typeInput = typeInput; this.#l10n = l10n; + this.#signatureStorage = signatureStorage; SignatureManager.#l10nDescription ||= Object.freeze({ signature: "pdfjs-editor-add-signature-description-default-when-drawing", @@ -564,7 +569,7 @@ class SignatureManager { return; } - const outline = (this.#extractedSignatureData = + const { outline } = (this.#extractedSignatureData = this.#currentEditor.getFromImage(data.bitmap)); if (!outline) { @@ -617,6 +622,10 @@ class SignatureManager { this.#currentEditor = editor; this.#uiManager.removeEditListeners(); + const isStorageFull = await this.#signatureStorage.isFull(); + this.#saveContainer.classList.toggle("fullStorage", isStorageFull); + this.#saveCheckbox.checked = !isStorageFull; + await this.#overlayManager.open(this.#dialog); const tabType = this.#tabButtons.get("type"); @@ -653,7 +662,7 @@ class SignatureManager { this.#tabsToAltText = null; } - #add() { + async #add() { let data; switch (this.#currentTab) { case "type": @@ -667,12 +676,28 @@ class SignatureManager { break; } this.#currentEditor.addSignature( - data, + data.outline, /* heightInPage */ 40, this.#description.value ); if (this.#saveCheckbox.checked) { - // TODO + const description = this.#description.value; + const { newCurves, areContours, thickness, width, height } = data; + const signatureData = await SignatureExtractor.compressSignature({ + outlines: newCurves, + areContours, + thickness, + width, + height, + }); + const uuid = (this.#currentEditor._signatureUUID = + await this.#signatureStorage.create({ + description, + signatureData, + })); + if (!uuid) { + console.warn("SignatureManager.add: cannot save the signature."); + } } this.#finish(); } diff --git a/web/viewer.html b/web/viewer.html index 571bf4fb3708e..1c2338b721df8 100644 --- a/web/viewer.html +++ b/web/viewer.html @@ -730,7 +730,7 @@ - + You’ve reached the limit of 5 saved signatures. Remove one to save more. - + This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.
- Add a signature + Add a signature
+ + +
@@ -742,7 +742,7 @@
-
+
@@ -750,6 +750,28 @@
+ +
+
+ Edit description +
+
+
+ + + + + +
+ +
+
+ + +
+
+
+
diff --git a/web/viewer.js b/web/viewer.js index d76620ef77fee..5590a591625c8 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -229,9 +229,6 @@ function getViewerConfiguration() { imagePicker: document.getElementById("addSignatureFilePicker"), imagePickerLink: document.getElementById("addSignatureImageBrowse"), description: document.getElementById("addSignatureDescription"), - clearDescription: document.getElementById( - "addSignatureDescriptionClearButton" - ), clearButton: document.getElementById("clearSignatureButton"), saveContainer: document.getElementById("addSignatureSaveContainer"), saveCheckbox: document.getElementById("addSignatureSaveCheckbox"), @@ -240,6 +237,13 @@ function getViewerConfiguration() { cancelButton: document.getElementById("addSignatureCancelButton"), addButton: document.getElementById("addSignatureAddButton"), }, + editSignatureDialog: { + dialog: document.getElementById("editSignatureDescriptionDialog"), + description: document.getElementById("editSignatureDescription"), + editSignatureView: document.getElementById("editSignatureView"), + cancelButton: document.getElementById("editSignatureCancelButton"), + updateButton: document.getElementById("editSignatureUpdateButton"), + }, annotationEditorParams: { editorFreeTextFontSize: document.getElementById("editorFreeTextFontSize"), editorFreeTextColor: document.getElementById("editorFreeTextColor"), From e6c4b00a4f79d886afaa5b2d85407015b91d6285 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 14 Feb 2025 10:34:38 +0100 Subject: [PATCH 267/338] Add a new `closeIfActive` method in the `OverlayManager` class It's now pretty common that we only want to close a `dialog` *if* it's currently active, to avoid throwing errors, and this new method provides a shorter and more convenient way to achieve that. --- web/alt_text_manager.js | 4 +--- web/new_alt_text_manager.js | 8 ++------ web/overlay_manager.js | 11 +++++++++++ web/password_prompt.js | 4 +--- web/pdf_print_service.js | 8 ++------ web/signature_manager.js | 8 ++------ 6 files changed, 19 insertions(+), 24 deletions(-) diff --git a/web/alt_text_manager.js b/web/alt_text_manager.js index 4c228ab30d25d..9245d42d6c23f 100644 --- a/web/alt_text_manager.js +++ b/web/alt_text_manager.js @@ -245,9 +245,7 @@ class AltTextManager { } #finish() { - if (this.#overlayManager.active === this.#dialog) { - this.#overlayManager.close(this.#dialog); - } + this.#overlayManager.closeIfActive(this.#dialog); } #close() { diff --git a/web/new_alt_text_manager.js b/web/new_alt_text_manager.js index 12d1eeaa51007..d9554b7798aa9 100644 --- a/web/new_alt_text_manager.js +++ b/web/new_alt_text_manager.js @@ -440,9 +440,7 @@ class NewAltTextManager { } #finish() { - if (this.#overlayManager.active === this.#dialog) { - this.#overlayManager.close(this.#dialog); - } + this.#overlayManager.closeIfActive(this.#dialog); } #close() { @@ -696,9 +694,7 @@ class ImageAltTextSettings { } #finish() { - if (this.#overlayManager.active === this.#dialog) { - this.#overlayManager.close(this.#dialog); - } + this.#overlayManager.closeIfActive(this.#dialog); } } diff --git a/web/overlay_manager.js b/web/overlay_manager.js index 616baed710804..8ceb7dad3354d 100644 --- a/web/overlay_manager.js +++ b/web/overlay_manager.js @@ -81,6 +81,17 @@ class OverlayManager { dialog.close(); this.#active = null; } + + /** + * @param {HTMLDialogElement} dialog - The overlay's DOM element. + * @returns {Promise} A promise that is resolved when the overlay has been + * closed. + */ + async closeIfActive(dialog) { + if (this.#active === dialog) { + await this.close(dialog); + } + } } export { OverlayManager }; diff --git a/web/password_prompt.js b/web/password_prompt.js index 6d9f41e2db1be..4f99428f63676 100644 --- a/web/password_prompt.js +++ b/web/password_prompt.js @@ -89,9 +89,7 @@ class PasswordPrompt { } async close() { - if (this.overlayManager.active === this.dialog) { - this.overlayManager.close(this.dialog); - } + this.overlayManager.closeIfActive(this.dialog); } #verify() { diff --git a/web/pdf_print_service.js b/web/pdf_print_service.js index 97bf548fdb136..05cae4acb8b94 100644 --- a/web/pdf_print_service.js +++ b/web/pdf_print_service.js @@ -148,9 +148,7 @@ class PDFPrintService { this.scratchCanvas = null; activeService = null; ensureOverlay().then(function () { - if (overlayManager.active === dialog) { - overlayManager.close(dialog); - } + overlayManager.closeIfActive(dialog); }); } @@ -260,9 +258,7 @@ window.print = function () { if (!activeService) { console.error("Expected print service to be initialized."); ensureOverlay().then(function () { - if (overlayManager.active === dialog) { - overlayManager.close(dialog); - } + overlayManager.closeIfActive(dialog); }); return; // eslint-disable-line no-unsafe-finally } diff --git a/web/signature_manager.js b/web/signature_manager.js index 38cc6bfb33b12..f24f4099f2efb 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -826,9 +826,7 @@ class SignatureManager { } #finish() { - if (this.#overlayManager.active === this.#dialog) { - this.#overlayManager.close(this.#dialog); - } + this.#overlayManager.closeIfActive(this.#dialog); } #close() { @@ -993,9 +991,7 @@ class EditDescriptionDialog { } #finish() { - if (this.#overlayManager.active === this.#dialog) { - this.#overlayManager.close(this.#dialog); - } + this.#overlayManager.closeIfActive(this.#dialog); } #close() { From 46586f813972523b9beffce38bd00f974e0dc97d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 12 Feb 2025 13:47:13 +0100 Subject: [PATCH 268/338] Search for destinations in both /Names and /Dests dictionaries (issue 19474) Currently we only use either one of them, preferring the NameTree when it's available. --- src/core/catalog.js | 66 ++++++++++++++++++++------------------- test/pdfs/.gitignore | 1 + test/pdfs/issue19474.pdf | Bin 0 -> 2361 bytes test/unit/api_spec.js | 29 +++++++++++++++++ 4 files changed, 64 insertions(+), 32 deletions(-) create mode 100644 test/pdfs/issue19474.pdf diff --git a/src/core/catalog.js b/src/core/catalog.js index b2f0d8711f51a..1274f6f5c2ee4 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -707,20 +707,23 @@ class Catalog { } get destinations() { - const obj = this._readDests(), + const rawDests = this.#readDests(), dests = Object.create(null); - if (obj instanceof NameTree) { - for (const [key, value] of obj.getAll()) { - const dest = fetchDest(value); - if (dest) { - dests[stringToPDFString(key)] = dest; + for (const obj of rawDests) { + if (obj instanceof NameTree) { + for (const [key, value] of obj.getAll()) { + const dest = fetchDest(value); + if (dest) { + dests[stringToPDFString(key)] = dest; + } } - } - } else if (obj instanceof Dict) { - for (const [key, value] of obj) { - const dest = fetchDest(value); - if (dest) { - dests[key] = dest; + } else if (obj instanceof Dict) { + for (const [key, value] of obj) { + const dest = fetchDest(value); + if (dest) { + // Always let the NameTree take precedence. + dests[key] ||= dest; + } } } } @@ -728,40 +731,39 @@ class Catalog { } getDestination(id) { - const obj = this._readDests(); - if (obj instanceof NameTree) { - const dest = fetchDest(obj.get(id)); - if (dest) { - return dest; + const rawDests = this.#readDests(); + for (const obj of rawDests) { + if (obj instanceof NameTree || obj instanceof Dict) { + const dest = fetchDest(obj.get(id)); + if (dest) { + return dest; + } } + } + + if (rawDests[0] instanceof NameTree) { // Fallback to checking the *entire* NameTree, in an attempt to handle // corrupt PDF documents with out-of-order NameTrees (fixes issue 10272). - const allDest = this.destinations[id]; - if (allDest) { - warn(`Found "${id}" at an incorrect position in the NameTree.`); - return allDest; - } - } else if (obj instanceof Dict) { - const dest = fetchDest(obj.get(id)); + const dest = this.destinations[id]; if (dest) { + warn(`Found "${id}" at an incorrect position in the NameTree.`); return dest; } } return null; } - /** - * @private - */ - _readDests() { + #readDests() { const obj = this._catDict.get("Names"); + const rawDests = []; if (obj?.has("Dests")) { - return new NameTree(obj.getRaw("Dests"), this.xref); - } else if (this._catDict.has("Dests")) { + rawDests.push(new NameTree(obj.getRaw("Dests"), this.xref)); + } + if (this._catDict.has("Dests")) { // Simple destination dictionary. - return this._catDict.get("Dests"); + rawDests.push(this._catDict.get("Dests")); } - return undefined; + return rawDests; } get pageLabels() { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index efe327f76c38d..71bd8946479c6 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -533,6 +533,7 @@ !transparent.pdf !issue19326.pdf !issue13931.pdf +!issue19474.pdf !xobject-image.pdf !issue15441.pdf !issue6605.pdf diff --git a/test/pdfs/issue19474.pdf b/test/pdfs/issue19474.pdf new file mode 100644 index 0000000000000000000000000000000000000000..33e9963936a2ef749735bc5bd24999bda34dde08 GIT binary patch literal 2361 zcmb_e&u<$=6kc(FvT85jNFZ^TOR5Bsotgb@lv?sSwGuUL%_gWqjuB&f;%;zu%kCtk zhy#BBTb8;>+5*;{ymP{ahwReb2Jq4wjIUqeh9VD%~B+zY_@M1==9%dlJ@`6e~|=B&2%Q-C=oST~vqp5pG53BJKc$rzaA@kHE} z#Q+_dNI5&yPriKg`Y!2h-npm$@}ad$?C{do4zYjxn!IrOapTj=jW;e|`TNH!YmFfM z+=q7Qg18Jc+U>R5D zO+G#5A{sG#J%;L{c!KXlaXZeU;$G>w)Ie2XJvQO^CLc#ENKSIGI8Da@J^6M{dC0Tm zC>`+(L@Dv)8%0!R2x4lraF3-t7D%ZJcfbQ~Sszi^f^d*)Sl(s-L!?v(Z&K>vppuyh zh9a{_O!>+`|7sl#X?rW$u@-3zjxqc_)Hs|HZKxffN!xwo*}BLDMPBed_em3kUI%jKqFq4N}CRZIGDXHXFWSudvu3mIN4+{OIVT<=H9z9} zb(`naY9p=*N}kV;I99C=V%c>+^Bg~VPCO!4^*jc+)i9_@KrDryNLe)Hsr*-EC;Es( z+i;j90;#o!w>J9g)O9&=Op`LooT23o$!N$d#~pFYY+9b#da{T7e#it%h0+G~iK8zs JU%%be{{wc5b~gY3 literal 0 HcmV?d00001 diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index df515c253b0ec..bc0e8bb946008 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -1261,6 +1261,19 @@ describe("api", function () { await loadingTask.destroy(); }); + it("gets destinations, from /Names (NameTree) respectively /Dests dictionary", async function () { + const loadingTask = getDocument(buildGetDocumentParams("issue19474.pdf")); + const pdfDoc = await loadingTask.promise; + const destinations = await pdfDoc.getDestinations(); + expect(destinations).toEqual({ + A: [{ num: 1, gen: 0 }, { name: "Fit" }], + B: [{ num: 4, gen: 0 }, { name: "Fit" }], + C: [{ num: 5, gen: 0 }, { name: "Fit" }], + }); + + await loadingTask.destroy(); + }); + it("gets a destination, from /Names (NameTree) dictionary", async function () { const loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf")); const pdfDoc = await loadingTask.promise; @@ -1320,6 +1333,22 @@ describe("api", function () { await loadingTask.destroy(); }); + it("gets a destination, from /Names (NameTree) respectively /Dests dictionary", async function () { + const loadingTask = getDocument(buildGetDocumentParams("issue19474.pdf")); + const pdfDoc = await loadingTask.promise; + + const destA = await pdfDoc.getDestination("A"); + expect(destA).toEqual([{ num: 1, gen: 0 }, { name: "Fit" }]); + + const destB = await pdfDoc.getDestination("B"); + expect(destB).toEqual([{ num: 4, gen: 0 }, { name: "Fit" }]); + + const destC = await pdfDoc.getDestination("C"); + expect(destC).toEqual([{ num: 5, gen: 0 }, { name: "Fit" }]); + + await loadingTask.destroy(); + }); + it("gets non-string destination", async function () { let numberPromise = pdfDocument.getDestination(4.3); let booleanPromise = pdfDocument.getDestination(true); From bb86cb7c1ccd5e7bbbbf8e687fb5754e464017f4 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 6 Feb 2025 10:51:15 +0100 Subject: [PATCH 269/338] Add some unicode mapping for ligatures when writing the cmap table in the font (bug 1946181) --- src/core/fonts.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/core/fonts.js b/src/core/fonts.js index 67f8c2b27c9a8..3769c88a6d147 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -485,6 +485,8 @@ function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) { const isInPrivateArea = code => (PRIVATE_USE_AREAS[0][0] <= code && code <= PRIVATE_USE_AREAS[0][1]) || (PRIVATE_USE_AREAS[1][0] <= code && code <= PRIVATE_USE_AREAS[1][1]); + let LIGATURE_TO_UNICODE = null; + for (const originalCharCode in charCodeToGlyphId) { let glyphId = charCodeToGlyphId[originalCharCode]; // For missing glyphs don't create the mappings so the glyph isn't @@ -514,7 +516,23 @@ function adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) { // glyph ids to the correct unicode. let unicode = toUnicode.get(originalCharCode); if (typeof unicode === "string") { - unicode = unicode.codePointAt(0); + if (unicode.length === 1) { + unicode = unicode.codePointAt(0); + } else { + if (!LIGATURE_TO_UNICODE) { + LIGATURE_TO_UNICODE = new Map(); + // The code range [0xfb00, 0xfb4f] contains some ligature characters + // but not all. + // See https://www.compart.com/en/unicode/block/U+FB00. + for (let i = 0xfb00; i <= 0xfb4f; i++) { + const normalized = String.fromCharCode(i).normalize("NFKD"); + if (normalized.length > 1) { + LIGATURE_TO_UNICODE.set(normalized, i); + } + } + } + unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0); + } } if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) { toUnicodeExtraMap.set(unicode, glyphId); From b5ae55668005d068a6b0ffbdd744fe29ac2e86ed Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 15 Feb 2025 13:00:42 +0100 Subject: [PATCH 270/338] Shorten the `CipherTransformFactory.prototype.#buildObjectKey` method - Use `TypedArray.prototype.set()` rather than a manual loop when building the `key`. - Use an existing local variable to avoid re-computing the length of the `encryptionKey`. --- src/core/crypto.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/core/crypto.js b/src/core/crypto.js index 883c21d89cd0d..5c95a7b531ebe 100644 --- a/src/core/crypto.js +++ b/src/core/crypto.js @@ -1595,12 +1595,10 @@ class CipherTransformFactory { } #buildObjectKey(num, gen, encryptionKey, isAes = false) { - const key = new Uint8Array(encryptionKey.length + 9); const n = encryptionKey.length; - let i; - for (i = 0; i < n; ++i) { - key[i] = encryptionKey[i]; - } + const key = new Uint8Array(n + 9); + key.set(encryptionKey); + let i = n; key[i++] = num & 0xff; key[i++] = (num >> 8) & 0xff; key[i++] = (num >> 16) & 0xff; @@ -1613,7 +1611,7 @@ class CipherTransformFactory { key[i++] = 0x54; } const hash = calculateMD5(key, 0, i); - return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); + return hash.subarray(0, Math.min(n + 5, 16)); } #buildCipherConstructor(cf, name, num, gen, key) { From 50b3abaf33e5204caf7a5dfe7f1e525e1686cc3a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 15 Feb 2025 14:18:07 +0100 Subject: [PATCH 271/338] Check more of the stream when looking for commands after inline image (issue 19494) Currently we only check `followingBytes`, which turns out to be too short to find e.g. valid transform (cm) commands with decimal arguments. --- src/core/parser.js | 6 +++++- test/pdfs/issue19494.pdf.link | 1 + test/test_manifest.json | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19494.pdf.link diff --git a/src/core/parser.js b/src/core/parser.js index 94b2e7894cbcd..50ea563dbad31 100644 --- a/src/core/parser.js +++ b/src/core/parser.js @@ -248,8 +248,12 @@ class Parser { } // Check that the "EI" sequence isn't part of the image data, since // that would cause the image to be truncated (fixes issue11124.pdf). + // + // Check more than the `followingBytes` to be able to find operators + // with multiple arguments, e.g. transform (cm) with decimal arguments + // (fixes issue19494.pdf). const tmpLexer = new Lexer( - new Stream(followingBytes.slice()), + new Stream(stream.peekBytes(5 * n)), knownCommands ); // Reduce the number of (potential) warning messages. diff --git a/test/pdfs/issue19494.pdf.link b/test/pdfs/issue19494.pdf.link new file mode 100644 index 0000000000000..a6093208279b1 --- /dev/null +++ b/test/pdfs/issue19494.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18810079/VERAPDF-1335-InlineImage.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index f1b8f1d560f4a..d4deda4079f5f 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -5617,6 +5617,15 @@ "rounds": 1, "type": "eq" }, + { + "id": "issue19494", + "file": "pdfs/issue19494.pdf", + "md5": "2ec2ccbe6aa7e622ef981ca5ca443d55", + "link": true, + "rounds": 1, + "type": "eq", + "lastPage": 1 + }, { "id": "issue11768", "file": "pdfs/issue11768_reduced.pdf", From c0d99fb0ff5c9b1a2e22071a731273e43ecbbf50 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 16 Feb 2025 13:55:35 +0100 Subject: [PATCH 272/338] Ensure that the `useWorkerFetch` fallback value is always a boolean If either of the factory-urls are missing or invalid, the fallback value would currently become `useWorkerFetch === null`. While that is obviously a falsy value, which means that the code still works as intended, we should ensure that this is consistent. --- src/display/api.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 38ab1bfe7c5ba..944a9b7729a59 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -331,7 +331,8 @@ function getDocument(src = {}) { typeof src.useWorkerFetch === "boolean" ? src.useWorkerFetch : (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) || - (CMapReaderFactory === DOMCMapReaderFactory && + !!( + CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && @@ -339,7 +340,8 @@ function getDocument(src = {}) { wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && - isValidFetchUrl(wasmUrl, document.baseURI)); + isValidFetchUrl(wasmUrl, document.baseURI) + ); // Parameters only intended for development/testing purposes. const styleElement = From 3fc233eedd1f9432900b7c3a64247970a781bc5a Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sun, 16 Feb 2025 21:14:01 +0100 Subject: [PATCH 273/338] [Editor] Add two integration tests for the signature UI --- test/integration/jasmine-boot.js | 1 + test/integration/signature_editor_spec.mjs | 210 +++++++++++++++++++++ web/signature_manager.js | 1 + 3 files changed, 212 insertions(+) create mode 100644 test/integration/signature_editor_spec.mjs diff --git a/test/integration/jasmine-boot.js b/test/integration/jasmine-boot.js index b6d904c84a168..5c74aa958d4fa 100644 --- a/test/integration/jasmine-boot.js +++ b/test/integration/jasmine-boot.js @@ -36,6 +36,7 @@ async function runTests(results) { "highlight_editor_spec.mjs", "ink_editor_spec.mjs", "scripting_spec.mjs", + "signature_editor_spec.mjs", "stamp_editor_spec.mjs", "text_field_spec.mjs", "text_layer_spec.mjs", diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs new file mode 100644 index 0000000000000..60ac12c803b7c --- /dev/null +++ b/test/integration/signature_editor_spec.mjs @@ -0,0 +1,210 @@ +/* Copyright 2025 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. + */ + +import { + closePages, + getEditorSelector, + loadAndWait, + switchToEditor, + waitForTimeout, +} from "./test_utils.mjs"; + +const switchToSignature = switchToEditor.bind(null, "Signature"); + +describe("Signature Editor", () => { + const descriptionInputSelector = "#addSignatureDescription > input"; + const addButtonSelector = "#addSignatureAddButton"; + + describe("Basic operations", () => { + let pages; + + beforeEach(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that the editor has been removed when the dialog is cancelled", async () => { + await Promise.all( + pages.map(async ([_, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + + // An invisible editor is created but invisible. + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: false }); + + await page.click("#addSignatureCancelButton"); + + // The editor should have been removed. + await page.waitForSelector(`:not(${editorSelector})`); + }) + ); + }); + + it("must check that the basic and common elements are working as expected", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + + await page.waitForSelector( + "#addSignatureTypeButton[aria-selected=true]" + ); + await page.click("#addSignatureTypeInput"); + await page.waitForSelector( + "#addSignatureSaveContainer[disabled=true]" + ); + let description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual(""); + await page.waitForSelector(`${addButtonSelector}:disabled`); + + await page.type("#addSignatureTypeInput", "PDF.js"); + await page.waitForSelector(`${addButtonSelector}:not(:disabled)`); + + // The save button should be enabled now. + await page.waitForSelector( + "#addSignatureSaveContainer:not([disabled])" + ); + await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]"); + + // The description has been filled in automatically. + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value !== ""` + ); + description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual("PDF.js"); + + // Clear the description. + await page.click("#addSignatureDescription > button"); + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value === ""` + ); + + // Clear the text for the signature. + await page.click("#clearSignatureButton"); + await page.waitForFunction( + `document.querySelector("#addSignatureTypeInput").value === ""` + ); + // The save button should be disabled now. + await page.waitForSelector( + "#addSignatureSaveContainer[disabled=true]" + ); + await page.waitForSelector(`${addButtonSelector}:disabled`); + + await page.type("#addSignatureTypeInput", "PDF.js"); + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value !== ""` + ); + + // Clearing the signature type should clear the description. + await page.click("#clearSignatureButton"); + await page.waitForFunction( + `document.querySelector("#addSignatureTypeInput").value === ""` + ); + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value === ""` + ); + + // Add a signature and change the description. + await page.type("#addSignatureTypeInput", "PDF.js"); + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value !== ""` + ); + await page.click("#addSignatureDescription > button"); + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value === ""` + ); + await page.type(descriptionInputSelector, "Hello World"); + await page.type("#addSignatureTypeInput", "Hello"); + + // The description mustn't be changed. + // eslint-disable-next-line no-restricted-syntax + await waitForTimeout(100); + description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual("Hello World"); + + await page.click("#addSignatureAddButton"); + await page.waitForSelector("#addSignatureDialog", { + visible: false, + }); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_0"]`, + { visible: true } + ); + + // Check the tooltip. + await page.waitForSelector( + `.altText.editDescription[title="Hello World"]` + ); + + // Edit the description. + await page.click(`.altText.editDescription`); + + await page.waitForSelector("#editSignatureDescriptionDialog", { + visible: true, + }); + await page.waitForSelector("#editSignatureUpdateButton:disabled"); + await page.waitForSelector( + `#editSignatureDescriptionDialog svg[aria-label="Hello World"]` + ); + const editDescriptionInput = "#editSignatureDescription > input"; + description = await page.$eval(editDescriptionInput, el => el.value); + expect(description).withContext(browserName).toEqual("Hello World"); + await page.click("#editSignatureDescription > button"); + await page.waitForFunction( + `document.querySelector("${editDescriptionInput}").value === ""` + ); + await page.waitForSelector( + "#editSignatureUpdateButton:not(:disabled)" + ); + await page.type(editDescriptionInput, "Hello PDF.js World"); + await page.waitForSelector( + "#editSignatureUpdateButton:not(:disabled)" + ); + + await page.click("#editSignatureUpdateButton"); + + // Check the tooltip. + await page.waitForSelector( + `.altText.editDescription[title="Hello PDF.js World"]` + ); + }) + ); + }); + }); +}); diff --git a/web/signature_manager.js b/web/signature_manager.js index f24f4099f2efb..add12bc7f855f 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -946,6 +946,7 @@ class EditDescriptionDialog { clearDescription.addEventListener("click", () => { descriptionInput.value = ""; clearDescription.disabled = true; + updateButton.disabled = this.#previousDescription === ""; }); descriptionInput.addEventListener( "input", From ea7c6baee32885573cba37cd56de1588f14e028d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 17 Feb 2025 13:40:09 +0100 Subject: [PATCH 274/338] Remove a few `eslint-disable` statements in the `web/` folder These cases could be easily re-written to avoid having to disable ESLint rules. --- web/generic_scripting.js | 10 ++-------- web/pdf_find_controller.js | 9 ++++----- web/pdf_print_service.js | 38 ++++++++++++++++++-------------------- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/web/generic_scripting.js b/web/generic_scripting.js index 7883c5c5024d1..b29554dad3210 100644 --- a/web/generic_scripting.js +++ b/web/generic_scripting.js @@ -18,19 +18,13 @@ import { getPdfFilenameFromUrl } from "pdfjs-lib"; async function docProperties(pdfDocument) { const url = "", baseUrl = url.split("#", 1)[0]; - // eslint-disable-next-line prefer-const - let { info, metadata, contentDispositionFilename, contentLength } = + const { info, metadata, contentDispositionFilename, contentLength } = await pdfDocument.getMetadata(); - if (!contentLength) { - const { length } = await pdfDocument.getDownloadInfo(); - contentLength = length; - } - return { ...info, baseURL: baseUrl, - filesize: contentLength, + filesize: contentLength || (await pdfDocument.getDownloadInfo()).length, filename: contentDispositionFilename || getPdfFilenameFromUrl(url), metadata: metadata?.getRaw(), authors: metadata?.get("dc:creator"), diff --git a/web/pdf_find_controller.js b/web/pdf_find_controller.js index a9fa441a13728..6e87c3149c21a 100644 --- a/web/pdf_find_controller.js +++ b/web/pdf_find_controller.js @@ -886,9 +886,8 @@ class PDFFindController { const { promise, resolve } = Promise.withResolvers(); this._extractTextPromises[i] = promise; - // eslint-disable-next-line arrow-body-style - deferred = deferred.then(() => { - return this._pdfDocument + deferred = deferred.then(() => + this._pdfDocument .getPage(i + 1) .then(pdfPage => pdfPage.getTextContent(textOptions)) .then( @@ -921,8 +920,8 @@ class PDFFindController { this._hasDiacritics[i] = false; resolve(); } - ); - }); + ) + ); } } diff --git a/web/pdf_print_service.js b/web/pdf_print_service.js index 05cae4acb8b94..370b491d1dbed 100644 --- a/web/pdf_print_service.js +++ b/web/pdf_print_service.js @@ -260,27 +260,25 @@ window.print = function () { ensureOverlay().then(function () { overlayManager.closeIfActive(dialog); }); - return; // eslint-disable-line no-unsafe-finally + } else { + const activeServiceOnEntry = activeService; + activeService + .renderPages() + .then(() => activeServiceOnEntry.performPrint()) + .catch(() => { + // Ignore any error messages. + }) + .then(() => { + // aborts acts on the "active" print request, so we need to check + // whether the print request (activeServiceOnEntry) is still active. + // Without the check, an unrelated print request (created after + // aborting this print request while the pages were being generated) + // would be aborted. + if (activeServiceOnEntry.active) { + abort(); + } + }); } - const activeServiceOnEntry = activeService; - activeService - .renderPages() - .then(function () { - return activeServiceOnEntry.performPrint(); - }) - .catch(function () { - // Ignore any error messages. - }) - .then(function () { - // aborts acts on the "active" print request, so we need to check - // whether the print request (activeServiceOnEntry) is still active. - // Without the check, an unrelated print request (created after aborting - // this print request while the pages were being generated) would be - // aborted. - if (activeServiceOnEntry.active) { - abort(); - } - }); } }; From c2bba2706fc36e60c26fbe45bad063f602d53b0f Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 17 Feb 2025 21:09:56 +0100 Subject: [PATCH 275/338] [Editor] Add a scrollbar to the signature doorhanger when it's overflowing (bug 1948771) --- web/signature_manager.css | 1 - 1 file changed, 1 deletion(-) diff --git a/web/signature_manager.css b/web/signature_manager.css index b053546098314..57a2871c00afc 100644 --- a/web/signature_manager.css +++ b/web/signature_manager.css @@ -686,7 +686,6 @@ #addSignatureDoorHanger { gap: 8px; - overflow-y: unset; .toolbarAddSignatureButtonContainer { height: 32px; From d42ebc8ec28184972406b9cd344880f1dc4a95a3 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 17 Feb 2025 20:20:26 +0100 Subject: [PATCH 276/338] [Editor] Scale the signature editor when it's too large (bug 1948741) --- src/display/editor/signature.js | 5 +++ test/integration/signature_editor_spec.mjs | 43 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index bdcbf45235193..8aceb8b3da9b5 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -248,6 +248,11 @@ class SignatureEditor extends DrawingEditor { newHeight = newHeight >= 1 ? 0.5 : newHeight; this.width *= newHeight / this.height; + if (this.width >= 1) { + newHeight *= 0.9 / this.width; + this.width = 0.9; + } + this.height = newHeight; this.setDims(parentWidth * this.width, parentHeight * this.height); this.x = savedX; diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index 60ac12c803b7c..8586572a8b0dc 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -16,6 +16,7 @@ import { closePages, getEditorSelector, + getRect, loadAndWait, switchToEditor, waitForTimeout, @@ -207,4 +208,46 @@ describe("Signature Editor", () => { ); }); }); + + describe("Bug 1948741", () => { + let pages; + + beforeEach(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that the editor isn't too large", async () => { + await Promise.all( + pages.map(async ([_, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + await page.type( + "#addSignatureTypeInput", + "[18:50:03] asset pdf.scripting.mjs 105 KiB [emitted] [javascript module] (name: main)" + ); + await page.waitForSelector(`${addButtonSelector}:not(:disabled)`); + await page.click("#addSignatureAddButton"); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_0"]`, + { visible: true } + ); + + const { width } = await getRect(page, editorSelector); + const { width: pageWidth } = await getRect(page, ".page"); + expect(width).toBeLessThanOrEqual(pageWidth); + }) + ); + }); + }); }); From 4008278aa4cffe7aa20533b478b4bed314effada Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 17 Feb 2025 21:53:22 +0100 Subject: [PATCH 277/338] [JS] Skip throwing actions It fixes #19505. We were invaliding throwing actions (in setting event.rc to false) and all the event process was stopped. Now we're just dumping the exception in the console: the action is skipped and event.rc is not set else the input fields aren't updated wit KeyStroke actions. --- src/scripting_api/doc.js | 11 +++++++++-- src/scripting_api/event.js | 19 +++--------------- src/scripting_api/field.js | 12 +++++++----- test/integration/scripting_spec.mjs | 29 ++++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19505.pdf | Bin 0 -> 6528 bytes 6 files changed, 49 insertions(+), 23 deletions(-) create mode 100755 test/pdfs/issue19505.pdf diff --git a/src/scripting_api/doc.js b/src/scripting_api/doc.js index a9cbe90d8d7a8..0481f02e5f089 100644 --- a/src/scripting_api/doc.js +++ b/src/scripting_api/doc.js @@ -175,9 +175,16 @@ class Doc extends PDFObject { _runActions(name) { const actions = this._actions.get(name); - if (actions) { - for (const action of actions) { + if (!actions) { + return; + } + for (const action of actions) { + try { this._globalEval(action); + } catch (error) { + const serializedError = serializeError(error); + serializedError.value = `Error when executing "${name}" for document\n${serializedError.value}`; + this._send(serializedError); } } } diff --git a/src/scripting_api/event.js b/src/scripting_api/event.js index 4683f9b8f36d6..f84d76688934a 100644 --- a/src/scripting_api/event.js +++ b/src/scripting_api/event.js @@ -14,7 +14,6 @@ */ import { - serializeError, USERACTIVATION_CALLBACKID, USERACTIVATION_MAXTIME_VALIDITY, } from "./app_utils.js"; @@ -311,12 +310,7 @@ class EventDispatcher { const source = this._objects[first]; globalThis.event = new Event({}); - try { - this.runCalculate(source, globalThis.event); - } catch (error) { - this._isCalculating = false; - throw error; - } + this.runCalculate(source, globalThis.event); this._isCalculating = false; } @@ -345,15 +339,8 @@ class EventDispatcher { event.value = null; const target = this._objects[targetId]; let savedValue = target.obj._getValue(); - try { - this.runActions(source, target, event, "Calculate"); - } catch (error) { - const fieldId = target.obj._id; - const serializedError = serializeError(error); - serializedError.value = `Error when calculating value for field "${fieldId}"\n${serializedError.value}`; - this._externalCall("send", [serializedError]); - continue; - } + this.runActions(source, target, event, "Calculate"); + if (!event.rc) { continue; } diff --git a/src/scripting_api/field.js b/src/scripting_api/field.js index 0188d484492f6..e484150aada73 100644 --- a/src/scripting_api/field.js +++ b/src/scripting_api/field.js @@ -16,6 +16,7 @@ import { createActionsMap, FieldType, getFieldType } from "./common.js"; import { Color } from "./color.js"; import { PDFObject } from "./pdf_object.js"; +import { serializeError } from "./app_utils.js"; class Field extends PDFObject { constructor(data) { @@ -552,14 +553,15 @@ class Field extends PDFObject { } const actions = this._actions.get(eventName); - try { - for (const action of actions) { + for (const action of actions) { + try { // Action evaluation must happen in the global scope this._globalEval(action); + } catch (error) { + const serializedError = serializeError(error); + serializedError.value = `Error when executing "${eventName}" for field "${this._id}"\n${serializedError.value}`; + this._send(serializedError); } - } catch (error) { - event.rc = false; - throw error; } return true; diff --git a/test/integration/scripting_spec.mjs b/test/integration/scripting_spec.mjs index c8d3f0b144a0a..9ada96fb50b95 100644 --- a/test/integration/scripting_spec.mjs +++ b/test/integration/scripting_spec.mjs @@ -2528,4 +2528,33 @@ describe("Interaction", () => { ); }); }); + + describe("Skip throwing actions (issue 19505)", () => { + let pages; + + beforeAll(async () => { + pages = await loadAndWait("issue19505.pdf", "[data-annotation-id='24R']"); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must check that date entered are in the input", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await waitForScripting(page); + + const fieldSelector = getSelector("24R"); + for (const c of "Hello World") { + await page.type(fieldSelector, c); + await waitForSandboxTrip(page); + } + + const value = await page.$eval(fieldSelector, el => el.value); + expect(value).withContext(`In ${browserName}`).toEqual("Hello World"); + }) + ); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 71bd8946479c6..d3f822e834eb4 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -704,3 +704,4 @@ !issue19360.pdf !bug1019475_1.pdf !bug1019475_2.pdf +!issue19505.pdf diff --git a/test/pdfs/issue19505.pdf b/test/pdfs/issue19505.pdf new file mode 100755 index 0000000000000000000000000000000000000000..67f1628941dc7818eb9b2c5d2524360220dc89b6 GIT binary patch literal 6528 zcmeHLdsGuw8V`y{(@+(yimp0F1zeNNGm}gV5lBb@i9tkBDVmT>Ad+NaGDv(-@ljvZ zO0Cw4uBEos%CCpnp! z@A>kwa zs0>bmP(nt)srwRIt`+V`&$xwHaC3rvj&FvXxp{f|`(P)N(0FVJM+Z zkjqJwLS#v}CNUu~5mza(qy(9k(jp{*%B2J$OF$CUat)$EwFH%*p)geroZ>Lko@|gf zig6bf24n{U%z)EqM;@CGNl`AESzMwNoWU?G$kO|K0)Pg>WN_weCk;=|pe=A#HVOd{ z00eH9rAjKezx-E*yW&f&m4gh^##s znGBSWl*1DsTn)(g-G>sNi!A}jJWHzQmG9}}s;oJ`edp4xSF`sd zy_Tmg9_HkI^8Tq!Jw82h_mds1uUstJILJUerA@i?a$Q!pY-H~H%%D?^eP~>}VaGe& z+D2`!8S<+>?BK|$Ur-}94J7-$&=UVk+vJ*FE4MAZ^?YgB^hLIu>!apLKl^3F+2_`X zQoiq<)_2%h_r2n_F)>G&oF>JIXyiug#4jwvn+^=wf66&!{er!-`d$01bnLV{e^`KsCPP}J_9tA4(5 zZ|J>Qvv?t4yo$at2|+UBwgx{EkIqcqo*9Wt|0uJ0YwH|m5W$h@HG1T5O2gLpUQl+N z=ukbcU~c}>LHWxoU#y)}vD((sw7PHa)7x^cmEQj?c}4E?k`+ngU#qFBh+Uub@ziIF zirS*O78j})Gv?KORwce0_T8SSugC9=ec@2o+iO2>d;N+>(Np=uTgUbNTk0&EFF)I( zF7AT#Fm!FyxzoSVH+4;=+Y-j#{doVvubW$m7X zt?5&>*HJEOdp>f@?y?mp#rtFWjofuCW9Hn5_m2$wVfLx?n1YcD4_A(u|H41N?lPs| znX1t8X{O61OYYBj??QFGC$qsh+K!Ri_BL1dIJU9!rTUFSyU9ye|7~nYcd_01bJ! z?iITHe%;P3`=`aP+kat5R{5GCJI_}imQG(V_pLXzCr%C6T3tJ6T;rx&pA1#)it_A` zjor25yMOFn^itdMA!P&Fn#&F?9U2i=akl5)&Ee0G-8M|Te?75vLDZ$8v;MMClsPi; zr|q$)M}47+n^yeg*5rW&z3!fiiM!KeNnn?Z=p9ZU}{aU3U!j!k;9F3q<-+fT*L^{*V` zaT-kpGz;a@c~(c9@aDdQLda^46J|+uh|Z~|^R3BqT=axF<1$Ti3QUw)I7Y=+dK4bJ z(+Bfuj_|VT6QHRE$yz3{`-$-Tx7)xW+{3GFucG8m-?SxQY|zv#e7A!$n0!k|JEf zxbk2WoU<^3!5Ah65@Ppk2W#|*9qwU1BkguHwAYTBZph!O;TcF?6Ak^gu!VE2U9YeI&_?cE}J(rvk9hcw4G}lfF2rD4`8a(b*Kh) zXSWB{bOzw@fF5`N+~Gl$jOKjCRMZLN1BzTjm1|@ZIGHTQRba6(MZSc+_3#x(2_jbL z7_-$fTLT&t6)2-rj9_9^mI-P|pbCr}g`f%qQNq8I?1b8DLk*f+(1<^510xj#7HA_t z@^?1c$sNSX!;$#gL$B=b?07veu1topseIh^V*!CC2#O^Majume31NgpD!~w(qI}5( zss&gyn-mt%BN?tBy=@8y6(!7H(?2w+!iY&=M6$b~=u5b6)Oe)%&X;K;UnYs}{IHrUOEdeveWm;Gt=syZ zX$b+Zf0qiLJ{KgKfD!v6=NcW+pcwYY;f(i%BT3bXjvhbZP7#6G%WjNo?GcQSVFZSw zjU4WaqbXEo*L);3-{7FH(UxgQOKOh5o;o>OVZlmp(kcN2UI8=%dH? zye`q&Q))q)VC6?8p|^BURd#sm?FGxO#<%o4Qz8lr)Ap~r+vCM!p{*Fk14SSAQ+RX` ObOJ{BC`xt=@&66>8wOnf literal 0 HcmV?d00001 From 0397f15954151e2857babd37e75239d8ab353419 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 18 Feb 2025 10:53:27 +0100 Subject: [PATCH 278/338] [Editor] Wait for switching to stamp mode before adding a new editor when dnd'ing an image When dnd'ing an image with the FreeText mode enabled, the image wasn't correctly added. --- src/display/editor/annotation_editor_layer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/display/editor/annotation_editor_layer.js b/src/display/editor/annotation_editor_layer.js index 2dbcfa13b1b40..b15d64cc13fdb 100644 --- a/src/display/editor/annotation_editor_layer.js +++ b/src/display/editor/annotation_editor_layer.js @@ -621,9 +621,9 @@ class AnnotationEditorLayer { * @param {number} mode * @param {Object} params */ - pasteEditor(mode, params) { + async pasteEditor(mode, params) { this.#uiManager.updateToolbar(mode); - this.#uiManager.updateMode(mode); + await this.#uiManager.updateMode(mode); const { offsetX, offsetY } = this.#getCenterPoint(); const id = this.getNextId(); From 8a45cb8a3ee184a00067bbc2ceaaabee74bc8839 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 17 Feb 2025 15:45:44 +0100 Subject: [PATCH 279/338] Fix all outstanding ESLint `arrow-body-style` warnings Currently this rule is disabled in a number of spots across the code-base, and unless absolutely necessary we probably shouldn't disable linting, so let's just update the code to fix all the outstanding cases. --- src/core/annotation.js | 19 +++++++-------- src/core/document.js | 36 ++++++++++++++--------------- src/core/evaluator.js | 6 ++--- test/driver.js | 52 +++++++++++++++++++++--------------------- test/unit/api_spec.js | 46 ++++++++++++++++--------------------- 5 files changed, 74 insertions(+), 85 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 0693a04dc9792..23d383e937ba2 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -84,17 +84,14 @@ class AnnotationFactory { // with "GoToE" actions, from throwing and thus breaking parsing: pdfManager.ensureCatalog("attachments"), ]).then( - // eslint-disable-next-line arrow-body-style - ([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => { - return { - pdfManager, - acroForm: acroForm instanceof Dict ? acroForm : Dict.empty, - xfaDatasets, - structTreeRoot, - baseUrl, - attachments, - }; - }, + ([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => ({ + pdfManager, + acroForm: acroForm instanceof Dict ? acroForm : Dict.empty, + xfaDatasets, + structTreeRoot, + baseUrl, + attachments, + }), reason => { warn(`createGlobals: "${reason}".`); return null; diff --git a/src/core/document.js b/src/core/document.js index ffaeeb73804ed..b3a550c4eaa58 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -1620,24 +1620,24 @@ class PDFDocument { } else { promise = catalog.getPageDict(pageIndex); } - // eslint-disable-next-line arrow-body-style - promise = promise.then(([pageDict, ref]) => { - return new Page({ - pdfManager: this.pdfManager, - xref: this.xref, - pageIndex, - pageDict, - ref, - globalIdFactory: this._globalIdFactory, - fontCache: catalog.fontCache, - builtInCMapCache: catalog.builtInCMapCache, - standardFontDataCache: catalog.standardFontDataCache, - globalImageCache: catalog.globalImageCache, - systemFontCache: catalog.systemFontCache, - nonBlendModesSet: catalog.nonBlendModesSet, - xfaFactory, - }); - }); + promise = promise.then( + ([pageDict, ref]) => + new Page({ + pdfManager: this.pdfManager, + xref: this.xref, + pageIndex, + pageDict, + ref, + globalIdFactory: this._globalIdFactory, + fontCache: catalog.fontCache, + builtInCMapCache: catalog.builtInCMapCache, + standardFontDataCache: catalog.standardFontDataCache, + globalImageCache: catalog.globalImageCache, + systemFontCache: catalog.systemFontCache, + nonBlendModesSet: catalog.nonBlendModesSet, + xfaFactory, + }) + ); this._pagePromises.set(pageIndex, promise); return promise; diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 46026836cb99f..484e167c09978 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1231,15 +1231,13 @@ class PartialEvaluator { fallbackFontDict = null, cssFontInfo = null ) { - // eslint-disable-next-line arrow-body-style - const errorFont = async () => { - return new TranslatedFont({ + const errorFont = async () => + new TranslatedFont({ loadedName: "g_font_error", font: new ErrorFont(`Font "${fontName}" is not available.`), dict: font, evaluatorOptions: this.options, }); - }; let fontRef; if (font) { diff --git a/test/driver.js b/test/driver.js index 67fb667d6eb82..f9fbee52e8306 100644 --- a/test/driver.js +++ b/test/driver.js @@ -106,33 +106,33 @@ async function inlineImages(node, silentErrors = false) { } return response.blob(); }) - // eslint-disable-next-line arrow-body-style - .then(blob => { - return new Promise((resolve, reject) => { - const reader = new FileReader(); - reader.onload = () => { - resolve(reader.result); - }; - reader.onerror = reject; - - reader.readAsDataURL(blob); - }); - }) - // eslint-disable-next-line arrow-body-style - .then(dataUrl => { - return new Promise((resolve, reject) => { - image.onload = resolve; - image.onerror = evt => { - if (silentErrors) { - resolve(); - return; - } - reject(evt); - }; + .then( + blob => + new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = () => { + resolve(reader.result); + }; + reader.onerror = reject; + + reader.readAsDataURL(blob); + }) + ) + .then( + dataUrl => + new Promise((resolve, reject) => { + image.onload = resolve; + image.onerror = evt => { + if (silentErrors) { + resolve(); + return; + } + reject(evt); + }; - image.src = dataUrl; - }); - }) + image.src = dataUrl; + }) + ) .catch(reason => { throw new Error(`Error inlining image (${url}): ${reason}`); }) diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index bc0e8bb946008..5e2c2550fbdec 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -4110,34 +4110,28 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) }) ); - // eslint-disable-next-line arrow-body-style - const result1 = loadingTask1.promise.then(pdfDoc => { - // eslint-disable-next-line arrow-body-style - return pdfDoc.getPage(1).then(pdfPage => { - return pdfPage.getOperatorList().then(opList => { - expect(opList.fnArray.length).toBeGreaterThan(100); - expect(opList.argsArray.length).toBeGreaterThan(100); - expect(opList.lastChunk).toEqual(true); - expect(opList.separateAnnots).toEqual(null); - - return loadingTask1.destroy(); - }); - }); + const result1 = loadingTask1.promise.then(async pdfDoc => { + const pdfPage = await pdfDoc.getPage(1); + const opList = await pdfPage.getOperatorList(); + + expect(opList.fnArray.length).toBeGreaterThan(100); + expect(opList.argsArray.length).toBeGreaterThan(100); + expect(opList.lastChunk).toEqual(true); + expect(opList.separateAnnots).toEqual(null); + + await loadingTask1.destroy(); }); - // eslint-disable-next-line arrow-body-style - const result2 = loadingTask2.promise.then(pdfDoc => { - // eslint-disable-next-line arrow-body-style - return pdfDoc.getPage(1).then(pdfPage => { - return pdfPage.getOperatorList().then(opList => { - expect(opList.fnArray.length).toEqual(0); - expect(opList.argsArray.length).toEqual(0); - expect(opList.lastChunk).toEqual(true); - expect(opList.separateAnnots).toEqual(null); - - return loadingTask2.destroy(); - }); - }); + const result2 = loadingTask2.promise.then(async pdfDoc => { + const pdfPage = await pdfDoc.getPage(1); + const opList = await pdfPage.getOperatorList(); + + expect(opList.fnArray.length).toEqual(0); + expect(opList.argsArray.length).toEqual(0); + expect(opList.lastChunk).toEqual(true); + expect(opList.separateAnnots).toEqual(null); + + await loadingTask2.destroy(); }); await Promise.all([result1, result2]); From 06345d8e0ac764b5e68b1c7245699f5231031bc1 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 18 Feb 2025 15:24:01 +0100 Subject: [PATCH 280/338] [Editor] Add two integration tests for the signature feature - one test about adding a drawn signature - an other one about adding a signature extracted from an image. --- test/integration/ink_editor_spec.mjs | 7 +- test/integration/signature_editor_spec.mjs | 123 +++++++++++++++++++++ test/integration/test_utils.mjs | 7 ++ 3 files changed, 131 insertions(+), 6 deletions(-) diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 8e8270dec7754..4abc08a7b2835 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -16,7 +16,6 @@ import { awaitPromise, closePages, - createPromise, dragAndDrop, getAnnotationSelector, getEditors, @@ -33,17 +32,13 @@ import { switchToEditor, waitForAnnotationModeChanged, waitForNoElement, + waitForPointerUp, waitForSelectedEditor, waitForSerialized, waitForStorageEntries, waitForTimeout, } from "./test_utils.mjs"; -const waitForPointerUp = page => - createPromise(page, resolve => { - window.addEventListener("pointerup", resolve, { once: true }); - }); - const selectAll = async page => { await kbSelectAll(page); await page.waitForFunction( diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index 8586572a8b0dc..3057610661fd7 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -14,14 +14,21 @@ */ import { + awaitPromise, closePages, getEditorSelector, getRect, loadAndWait, switchToEditor, + waitForPointerUp, waitForTimeout, } from "./test_utils.mjs"; +import { fileURLToPath } from "url"; +import path from "path"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); + const switchToSignature = switchToEditor.bind(null, "Signature"); describe("Signature Editor", () => { @@ -207,6 +214,122 @@ describe("Signature Editor", () => { }) ); }); + + it("must check drawing with the mouse", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + + await page.click("#addSignatureDrawButton"); + const drawSelector = "#addSignatureDraw"; + await page.waitForSelector(drawSelector, { visible: true }); + + let description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual(""); + await page.waitForSelector(`${addButtonSelector}:disabled`); + + const { x, y, width, height } = await getRect(page, drawSelector); + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x + 0.1 * width, y + 0.1 * height); + await page.mouse.down(); + await page.mouse.move(x + 0.3 * width, y + 0.3 * height); + await page.mouse.up(); + await awaitPromise(clickHandle); + await page.waitForSelector(`${addButtonSelector}:not(:disabled)`); + + // The save button should be enabled now. + await page.waitForSelector( + "#addSignatureSaveContainer:not([disabled])" + ); + await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]"); + + // The description has been filled in automatically. + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value !== ""` + ); + description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual("Signature"); + + await page.click("#addSignatureAddButton"); + await page.waitForSelector("#addSignatureDialog", { + visible: false, + }); + + await page.waitForSelector( + ".canvasWrapper > svg use[href='#path_p1_0']" + ); + }) + ); + }); + + it("must check adding an image", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + + await page.click("#addSignatureImageButton"); + await page.waitForSelector("#addSignatureImagePlaceholder", { + visible: true, + }); + + let description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description).withContext(browserName).toEqual(""); + await page.waitForSelector(`${addButtonSelector}:disabled`); + + const input = await page.$("#addSignatureFilePicker"); + await input.uploadFile( + `${path.join(__dirname, "../images/firefox_logo.png")}` + ); + await page.waitForSelector(`#addSignatureImage > path:not([d=""])`); + + // The save button should be enabled now. + await page.waitForSelector( + "#addSignatureSaveContainer:not([disabled])" + ); + await page.waitForSelector("#addSignatureSaveCheckbox[checked=true]"); + + // The description has been filled in automatically. + await page.waitForFunction( + `document.querySelector("${descriptionInputSelector}").value !== ""` + ); + description = await page.$eval( + descriptionInputSelector, + el => el.value + ); + expect(description) + .withContext(browserName) + .toEqual("firefox_logo.png"); + + await page.click("#addSignatureAddButton"); + await page.waitForSelector("#addSignatureDialog", { + visible: false, + }); + + await page.waitForSelector( + ".canvasWrapper > svg use[href='#path_p1_0']" + ); + }) + ); + }); }); describe("Bug 1948741", () => { diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index e414b2a4380e9..d41035ab4ca2e 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -199,6 +199,12 @@ async function waitAndClick(page, selector, clickOptions = {}) { await page.click(selector, clickOptions); } +function waitForPointerUp(page) { + return createPromise(page, resolve => { + window.addEventListener("pointerup", resolve, { once: true }); + }); +} + function getSelector(id) { return `[data-element-id="${id}"]`; } @@ -895,6 +901,7 @@ export { waitForEvent, waitForNoElement, waitForPageRendered, + waitForPointerUp, waitForSandboxTrip, waitForSelectedEditor, waitForSerialized, From e5c22cf8e7c7df3d3c262447edac9d8e2183758a Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 18 Feb 2025 17:53:36 +0100 Subject: [PATCH 281/338] Don't cache free/missing XRef entries (issue 19510) During the XRef stream parsing we're attempting to lookup an entry that hasn't yet been found, since parsing is currently running, and given that we'd also cache free/missing XRef entries we'd then return an incorrect value during normal PDF parsing. The simplest solution here is to just not cache free/missing XRef entries, since a properly generated PDF document shouldn't be trying to access objects it doesn't contain. Furthermore, the amount of "extra" parsing now needed for such XRef entries shouldn't be significant enough to be an issue. --- src/core/xref.js | 1 - test/pdfs/issue19510.pdf.link | 1 + test/test_manifest.json | 8 ++++++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19510.pdf.link diff --git a/src/core/xref.js b/src/core/xref.js index 669af0ed82f03..4a02f5ed8fedd 100644 --- a/src/core/xref.js +++ b/src/core/xref.js @@ -842,7 +842,6 @@ class XRef { if (xrefEntry === null) { // The referenced entry can be free. - this._cacheMap.set(num, xrefEntry); return xrefEntry; } // Prevent circular references, in corrupt PDF documents, from hanging the diff --git a/test/pdfs/issue19510.pdf.link b/test/pdfs/issue19510.pdf.link new file mode 100644 index 0000000000000..91015fdd23240 --- /dev/null +++ b/test/pdfs/issue19510.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18841919/geht_nicht_02.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index d4deda4079f5f..6549e49e11455 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -5626,6 +5626,14 @@ "type": "eq", "lastPage": 1 }, + { + "id": "issue19510", + "file": "pdfs/issue19510.pdf", + "md5": "3ff133f633cea3e2f13f08f8c3414cc6", + "link": true, + "rounds": 1, + "type": "eq" + }, { "id": "issue11768", "file": "pdfs/issue11768_reduced.pdf", From 6314be8c6fa623239009d651aeb5f8dd6abab083 Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Mon, 10 Feb 2025 16:29:43 +0100 Subject: [PATCH 282/338] Fix autolinking errors due to regex and email validation Fix some edge cases in the autolinking logic with the regex as well as validating email domains and add unit tests for them. Fixes: https://github.com/mozilla/pdf.js/issues/19462 --- test/unit/autolinker_spec.js | 4 ++++ web/autolinker.js | 32 +++++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/test/unit/autolinker_spec.js b/test/unit/autolinker_spec.js index 23a30446c54b3..2d2e4d6731cf1 100644 --- a/test/unit/autolinker_spec.js +++ b/test/unit/autolinker_spec.js @@ -87,6 +87,9 @@ describe("autolinker", function () { "CAP.cap@Gmail.Com", // Keep the original case. "mailto:CAP.cap@Gmail.Com", ], + ["partl@mail.boku.ac.at", "mailto:partl@mail.boku.ac.at"], + ["Irene.Hyna@bmwf.ac.at", "mailto:Irene.Hyna@bmwf.ac.at"], + ["", "mailto:hi@foo.bar.baz"], ]); }); @@ -140,6 +143,7 @@ describe("autolinker", function () { "http//[00:00:00:00:00:00", // Invalid IPv6 address. "http//[]", // Empty IPv6 address. "abc.example.com", // URL without scheme. + "JD?M$0QP)lKn06l1apKDC@\\qJ4B!!(5m+j.7F790m", // Not a valid email. ].join("\n") ); expect(matches.length).toEqual(0); diff --git a/web/autolinker.js b/web/autolinker.js index 098acb2739320..d3ee14c282265 100644 --- a/web/autolinker.js +++ b/web/autolinker.js @@ -96,31 +96,37 @@ class Autolinker { static #regex; static findLinks(text) { - // Regex can be tested and verified at https://regex101.com/r/zgDwPE/1. + // Regex can be tested and verified at https://regex101.com/r/rXoLiT/2. this.#regex ??= - /\b(?:https?:\/\/|mailto:|www\.)(?:[[\S--\[]--\p{P}]|\/|[\p{P}--\[]+[[\S--\[]--\p{P}])+|\b[[\S--@]--\{]+@[\S--.]+\.[[\S--\[]--\p{P}]{2,}/gmv; + /\b(?:https?:\/\/|mailto:|www\.)(?:[\S--[\p{P}<>]]|\/|[\S--[\[\]]]+[\S--[\p{P}<>]])+|\b[\S--[@\p{Ps}\p{Pe}<>]]+@([\S--[\p{P}<>]]+(?:\.[\S--[\p{P}<>]]+)+)/gmv; const [normalizedText, diffs] = normalize(text); const matches = normalizedText.matchAll(this.#regex); const links = []; for (const match of matches) { - const raw = - match[0].startsWith("www.") || - match[0].startsWith("mailto:") || - match[0].startsWith("http://") || - match[0].startsWith("https://") - ? match[0] - : `mailto:${match[0]}`; - const url = createValidAbsoluteUrl(raw, null, { + const [url, emailDomain] = match; + let raw; + if ( + url.startsWith("www.") || + url.startsWith("http://") || + url.startsWith("https://") + ) { + raw = url; + } else if (URL.canParse(`http://${emailDomain}`)) { + raw = url.startsWith("mailto:") ? url : `mailto:${url}`; + } else { + continue; + } + const absoluteURL = createValidAbsoluteUrl(raw, null, { addDefaultProtocol: true, }); - if (url) { + if (absoluteURL) { const [index, length] = getOriginalIndex( diffs, match.index, - match[0].length + url.length ); - links.push({ url: url.href, index, length }); + links.push({ url: absoluteURL.href, index, length }); } } return links; From 8247186fdf7974a08486fb27b74ddbbbb6f2472b Mon Sep 17 00:00:00 2001 From: Ujjwal Sharma Date: Wed, 12 Feb 2025 01:30:38 +0100 Subject: [PATCH 283/338] Fix autolinking error due to redundant annotations on zooming Fix an issue where redundant links were being added to the annotation layer on zooming on the page with the links. --- test/integration/autolinker_spec.mjs | 59 +++++++++++++++++++++++++++- web/annotation_layer_builder.js | 5 ++- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/test/integration/autolinker_spec.mjs b/test/integration/autolinker_spec.mjs index 4492fa556ff9d..5a8321924a8f4 100644 --- a/test/integration/autolinker_spec.mjs +++ b/test/integration/autolinker_spec.mjs @@ -13,7 +13,15 @@ * limitations under the License. */ -import { closePages, loadAndWait } from "./test_utils.mjs"; +import { closePages, createPromise, loadAndWait } from "./test_utils.mjs"; + +function waitForLinkAnnotations(page) { + return createPromise(page, resolve => { + window.PDFViewerApplication.eventBus.on("linkannotationsadded", resolve, { + once: true, + }); + }); +} describe("autolinker", function () { describe("bug1019475_2.pdf", function () { @@ -38,6 +46,7 @@ describe("autolinker", function () { it("must appropriately add link annotations when relevant", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + await waitForLinkAnnotations(page); const url = await page.$$eval( ".annotationLayer > .linkAnnotation > a", annotations => annotations.map(a => a.href) @@ -73,6 +82,7 @@ describe("autolinker", function () { it("must not add links when unnecessary", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + await waitForLinkAnnotations(page); const linkIds = await page.$$eval( ".annotationLayer > .linkAnnotation > a", annotations => @@ -106,6 +116,7 @@ describe("autolinker", function () { it("must not add links that overlap even if the URLs are different", async () => { await Promise.all( pages.map(async ([browserName, page]) => { + await waitForLinkAnnotations(page); const linkIds = await page.$$eval( ".annotationLayer > .linkAnnotation > a", annotations => @@ -121,4 +132,50 @@ describe("autolinker", function () { ); }); }); + + describe("PR 19470", function () { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "bug1019475_2.pdf", + ".annotationLayer", + null, + null, + { + enableAutoLinking: true, + } + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must not repeatedly add link annotations redundantly", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await waitForLinkAnnotations(page); + let url = await page.$$eval( + ".annotationLayer > .linkAnnotation > a", + annotations => annotations.map(a => a.href) + ); + expect(url.length).withContext(`In ${browserName}`).toEqual(1); + + await page.evaluate(() => + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 2, + }) + ); + await waitForLinkAnnotations(page); + url = await page.$$eval( + ".annotationLayer > .linkAnnotation > a", + annotations => annotations.map(a => a.href) + ); + expect(url.length).withContext(`In ${browserName}`).toEqual(1); + }) + ); + }); + }); }); diff --git a/web/annotation_layer_builder.js b/web/annotation_layer_builder.js index 24c4668c25148..ba6ad0f9b822e 100644 --- a/web/annotation_layer_builder.js +++ b/web/annotation_layer_builder.js @@ -77,6 +77,8 @@ class AnnotationLayerBuilder { #eventAbortController = null; + #linksInjected = false; + /** * @param {AnnotationLayerBuilderOptions} options */ @@ -235,9 +237,10 @@ class AnnotationLayerBuilder { "`render` method must be called before `injectLinkAnnotations`." ); } - if (this._cancelled) { + if (this._cancelled || this.#linksInjected) { return; } + this.#linksInjected = true; const newLinks = this.#annotations.length ? this.#checkInferredLinks(inferredLinks) From 78f25817c3b442a406fdb31abc19609662ae2325 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Wed, 19 Feb 2025 18:36:21 +0100 Subject: [PATCH 284/338] [Editor] Remove the error panel when the user click on an other tab (bug 1949201) --- test/integration/signature_editor_spec.mjs | 48 ++++++++++++++++++++++ web/signature_manager.js | 1 + 2 files changed, 49 insertions(+) diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index 3057610661fd7..a7fca3e6f396f 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -373,4 +373,52 @@ describe("Signature Editor", () => { ); }); }); + + describe("Bug 1949201", () => { + let pages; + + beforeEach(async () => { + pages = await loadAndWait("empty.pdf", ".annotationEditorLayer"); + }); + + afterEach(async () => { + await closePages(pages); + }); + + it("must check that the error panel is correctly removed", async () => { + await Promise.all( + pages.map(async ([_, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + await page.click("#addSignatureImageButton"); + await page.waitForSelector("#addSignatureImagePlaceholder", { + visible: true, + }); + const input = await page.$("#addSignatureFilePicker"); + await input.uploadFile( + `${path.join(__dirname, "./signature_editor_spec.mjs")}` + ); + await page.waitForSelector("#addSignatureError", { visible: true }); + await page.click("#addSignatureErrorCloseButton"); + await page.waitForSelector("#addSignatureError", { visible: false }); + + await input.uploadFile( + `${path.join(__dirname, "./stamp_editor_spec.mjs")}` + ); + await page.waitForSelector("#addSignatureError", { visible: true }); + + await page.click("#addSignatureTypeButton"); + await page.waitForSelector( + "#addSignatureTypeButton[aria-selected=true]" + ); + await page.waitForSelector("#addSignatureError", { visible: false }); + await page.click("#addSignatureCancelButton"); + }) + ); + }); + }); }); diff --git a/web/signature_manager.js b/web/signature_manager.js index add12bc7f855f..a7f732b11e0b2 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -289,6 +289,7 @@ class SignatureManager { this.#currentTab = name; } + this.#errorBar.hidden = true; const reset = !name; if (reset) { this.#resetCommon(); From 8b7d0dd0fc1707fae092b32da76bff836a23908a Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 20 Feb 2025 15:01:52 +0100 Subject: [PATCH 285/338] [Editor] Make the editing toolbar buttons text visible when hovered in HCM with Desert theme (bug 1949417) --- web/viewer.css | 1 - 1 file changed, 1 deletion(-) diff --git a/web/viewer.css b/web/viewer.css index 2439813f469ec..6afd750f9e255 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -1130,7 +1130,6 @@ dialog :link { font-style: normal; font-weight: 400; line-height: 150%; - color: var(--main-color); width: fit-content; inset-inline-start: 0; } From eb643a4a79606b6df31e797cef586ace417899e0 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 20 Feb 2025 18:16:41 +0100 Subject: [PATCH 286/338] [Editor] Fix the outline of a focused button in the doorhanger while navigating with the keyboard It's a follow-up of #19507. Without this patch the outline is partially hidden. --- web/signature_manager.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/web/signature_manager.css b/web/signature_manager.css index 57a2871c00afc..85a6543972a27 100644 --- a/web/signature_manager.css +++ b/web/signature_manager.css @@ -682,10 +682,11 @@ } #editorSignatureParamsToolbar { - padding: 10px; + padding: 8px; #addSignatureDoorHanger { gap: 8px; + padding: 2px; .toolbarAddSignatureButtonContainer { height: 32px; From 081d72a1b92aef56984d8239e77bdf46913711e4 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 20 Feb 2025 19:31:52 +0100 Subject: [PATCH 287/338] [Editor] Fix the color of the labels in the editing doorhangers The fix in #19522 wasn't correct. This one should be better. --- web/viewer.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/web/viewer.css b/web/viewer.css index 6afd750f9e255..2560e46f62e99 100644 --- a/web/viewer.css +++ b/web/viewer.css @@ -1132,6 +1132,11 @@ dialog :link { line-height: 150%; width: fit-content; inset-inline-start: 0; + color: var(--main-color); + } + + button:is(:hover, :focus-visible) .editorParamsLabel { + color: var(--doorhanger-hover-color); } .editorParamsToolbarContainer { From f55dc76c30d209b4661150a558ff8a997640260d Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 20 Feb 2025 12:36:25 +0100 Subject: [PATCH 288/338] Move the EXIF-block replacement into `JpegStream` (PR 19356 follow-up) Currently we modify the EXIF-block in place, which may end up "breaking" the JPEG-data of the original PDF document since e.g. saving it from the viewer no longer contains the real EXIF-block. Hence the EXIF-block replacement is moved into the `JpegStream` class, such that we can copy the data before doing the replacement. --- src/core/jpeg_stream.js | 17 +++++++++++++++-- src/core/jpg.js | 26 ++++++++++++++++---------- test/unit/api_spec.js | 23 +++++++++++++++++++++++ 3 files changed, 54 insertions(+), 12 deletions(-) diff --git a/src/core/jpeg_stream.js b/src/core/jpeg_stream.js index 70789d543307a..4af24eeb8e733 100644 --- a/src/core/jpeg_stream.js +++ b/src/core/jpeg_stream.js @@ -163,10 +163,23 @@ class JpegStream extends DecodeStream { if (!bytes) { return null; } - const data = this.#skipUselessBytes(bytes); - if (!JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform)) { + let data = this.#skipUselessBytes(bytes); + const useImageDecoder = JpegImage.canUseImageDecoder( + data, + jpegOptions.colorTransform + ); + if (!useImageDecoder) { return null; } + if (useImageDecoder.exifStart) { + // Replace the entire EXIF-block with dummy data, to ensure that a + // non-default EXIF orientation won't cause the image to be rotated + // when using `ImageDecoder` (fixes bug1942064.pdf). + // + // Copy the data first, to avoid modifying the original PDF document. + data = data.slice(); + data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd); + } decoder = new ImageDecoder({ data, type: "image/jpeg", diff --git a/src/core/jpg.js b/src/core/jpg.js index 93d703ab9ee52..26ff546e0ca49 100644 --- a/src/core/jpg.js +++ b/src/core/jpg.js @@ -782,8 +782,11 @@ function readDataBlock(data, offset) { } const array = data.subarray(offset, endOffset); - offset += array.length; - return { appData: array, newOffset: offset }; + return { + appData: array, + oldOffset: offset, + newOffset: offset + array.length, + }; } function skipData(data, offset) { @@ -805,6 +808,7 @@ class JpegImage { } static canUseImageDecoder(data, colorTransform = -1) { + let exifOffsets = null; let offset = 0; let numComponents = null; let fileMarker = readUint16(data, offset); @@ -820,7 +824,7 @@ class JpegImage { case 0xffe1: // APP1 - Exif // TODO: Remove this once https://github.com/w3c/webcodecs/issues/870 // is fixed. - const { appData, newOffset } = readDataBlock(data, offset); + const { appData, oldOffset, newOffset } = readDataBlock(data, offset); offset = newOffset; // 'Exif\x00\x00' @@ -832,10 +836,12 @@ class JpegImage { appData[4] === 0 && appData[5] === 0 ) { - // Replace the entire EXIF-block with dummy data, to ensure that a - // non-default EXIF orientation won't cause the image to be rotated - // when using `ImageDecoder` (fixes bug1942064.pdf). - appData.fill(0x00, 6); + if (exifOffsets) { + throw new JpegError("Duplicate EXIF-blocks found."); + } + // Don't do the EXIF-block replacement here, see `JpegStream`, + // since that can modify the original PDF document. + exifOffsets = { exifStart: oldOffset + 6, exifEnd: newOffset }; } fileMarker = readUint16(data, offset); offset += 2; @@ -861,12 +867,12 @@ class JpegImage { offset += 2; } if (numComponents === 4) { - return false; + return null; } if (numComponents === 3 && colorTransform === 0) { - return false; + return null; } - return true; + return exifOffsets || {}; } parse(data, { dnlScanLines = null } = {}) { diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 5e2c2550fbdec..5532cf7a5d988 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -2235,6 +2235,29 @@ describe("api", function () { expect(data.length).toEqual(basicApiFileLength); }); + it("gets data from PDF document with JPEG image containing EXIF-data (bug 1942064)", async function () { + const typedArrayPdf = await DefaultFileReaderFactory.fetch({ + path: TEST_PDFS_PATH + "bug1942064.pdf", + }); + + // Sanity check to make sure that we fetched the entire PDF file. + expect(typedArrayPdf instanceof Uint8Array).toEqual(true); + expect(typedArrayPdf.length).toEqual(10719); + + const loadingTask = getDocument(typedArrayPdf.slice()); + const pdfDoc = await loadingTask.promise; + const page = await pdfDoc.getPage(1); + // Trigger parsing of the JPEG image. + await page.getOperatorList(); + + const data = await pdfDoc.getData(); + expect(data instanceof Uint8Array).toEqual(true); + // Ensure that the EXIF-block wasn't modified. + expect(typedArrayPdf).toEqual(data); + + await loadingTask.destroy(); + }); + it("gets download info", async function () { const downloadInfo = await pdfDocument.getDownloadInfo(); expect(downloadInfo).toEqual({ length: basicApiFileLength }); From 1d7b53736fe5e8a12b3f68a69bd69011905c0e33 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 15 Feb 2025 10:49:30 +0100 Subject: [PATCH 289/338] Introduce some `URL.parse()` usage in the code-base This (fairly new) static method allows parsing URLs without having to wrap `new URL(...)` calls within `try...catch` blocks, thus simplifying the code; see https://developer.mozilla.org/en-US/docs/Web/API/URL/parse_static For older browsers/environments the functionality will be polyfilled, but *only* in `legacy` builds, via `core-js`; see https://github.com/zloirock/core-js?tab=readme-ov-file#url-and-urlsearchparams *Please note:* This is currently limited to the `src/`- and `web/`-folders, such that we don't break development/testing, since the functionality is not available in all Node.js versions that we support; see https://developer.mozilla.org/en-US/docs/Web/API/URL/parse_static#browser_compatibility --- src/display/api.js | 27 +++++++++++------------- src/display/display_utils.js | 10 +++------ src/display/network_utils.js | 7 +----- src/shared/util.js | 41 +++++++++++++++--------------------- 4 files changed, 33 insertions(+), 52 deletions(-) diff --git a/src/display/api.js b/src/display/api.js index 944a9b7729a59..b55b1282f8ee7 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -525,18 +525,20 @@ function getUrlProp(val) { if (val instanceof URL) { return val.href; } - try { - // The full path is required in the 'url' field. - return new URL(val, window.location).href; - } catch { + if (typeof val === "string") { if ( typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && - isNodeJS && - typeof val === "string" + isNodeJS ) { return val; // Use the url as-is in Node.js environments. } + + // The full path is required in the 'url' field. + const url = URL.parse(val, window.location); + if (url) { + return url.href; + } } throw new Error( "Invalid PDF url data: " + @@ -2082,14 +2084,9 @@ class PDFWorker { // Check if URLs have the same origin. For non-HTTP based URLs, returns // false. this._isSameOrigin = (baseUrl, otherUrl) => { - let base; - try { - base = new URL(baseUrl); - if (!base.origin || base.origin === "null") { - return false; // non-HTTP url - } - } catch { - return false; + const base = URL.parse(baseUrl); + if (!base?.origin || base.origin === "null") { + return false; // non-HTTP url } const other = new URL(otherUrl, base); return base.origin === other.origin; @@ -2202,7 +2199,7 @@ class PDFWorker { if ( typeof PDFJSDev !== "undefined" && PDFJSDev.test("GENERIC") && - !PDFWorker._isSameOrigin(window.location.href, workerSrc) + !PDFWorker._isSameOrigin(window.location, workerSrc) ) { workerSrc = PDFWorker._createCDNWrapper( new URL(workerSrc, window.location).href diff --git a/src/display/display_utils.js b/src/display/display_utils.js index 6e625d8673fdc..fae0abce35a2d 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -402,13 +402,9 @@ function isValidFetchUrl(url, baseUrl) { if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { throw new Error("Not implemented: isValidFetchUrl"); } - try { - const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url); - // The Fetch API only supports the http/https protocols, and not file/ftp. - return protocol === "http:" || protocol === "https:"; - } catch { - return false; // `new URL()` will throw on incorrect data. - } + const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url); + // The Fetch API only supports the http/https protocols, and not file/ftp. + return res?.protocol === "http:" || res?.protocol === "https:"; } /** diff --git a/src/display/network_utils.js b/src/display/network_utils.js index f7b2df6143430..5af942a9f32a5 100644 --- a/src/display/network_utils.js +++ b/src/display/network_utils.js @@ -33,13 +33,8 @@ function createHeaders(isHttp, httpHeaders) { } function getResponseOrigin(url) { - try { - return new URL(url).origin; - } catch { - // `new URL()` will throw on incorrect data. - } // Notably, null is distinct from "null" string (e.g. from file:-URLs). - return null; + return URL.parse(url)?.origin ?? null; } function validateRangeRequestCapabilities({ diff --git a/src/shared/util.js b/src/shared/util.js index 30c1d4f5ec144..baf53a1b0ff14 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -412,35 +412,28 @@ function createValidAbsoluteUrl(url, baseUrl = null, options = null) { if (!url) { return null; } - try { - if (options && typeof url === "string") { - // Let URLs beginning with "www." default to using the "http://" protocol. - if (options.addDefaultProtocol && url.startsWith("www.")) { - const dots = url.match(/\./g); - // Avoid accidentally matching a *relative* URL pointing to a file named - // e.g. "www.pdf" or similar. - if (dots?.length >= 2) { - url = `http://${url}`; - } - } - - // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded - // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280. - if (options.tryConvertEncoding) { - try { - url = stringToUTF8String(url); - } catch {} + if (options && typeof url === "string") { + // Let URLs beginning with "www." default to using the "http://" protocol. + if (options.addDefaultProtocol && url.startsWith("www.")) { + const dots = url.match(/\./g); + // Avoid accidentally matching a *relative* URL pointing to a file named + // e.g. "www.pdf" or similar. + if (dots?.length >= 2) { + url = `http://${url}`; } } - const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url); - if (_isValidProtocol(absoluteUrl)) { - return absoluteUrl; + // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded + // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280. + if (options.tryConvertEncoding) { + try { + url = stringToUTF8String(url); + } catch {} } - } catch { - /* `new URL()` will throw on incorrect data. */ } - return null; + + const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url); + return _isValidProtocol(absoluteUrl) ? absoluteUrl : null; } function shadow(obj, prop, value, nonSerializable = false) { From 04a0e1e53ff2c098c295da73da3990e7e1b265e6 Mon Sep 17 00:00:00 2001 From: Xiphoseer Date: Fri, 21 Feb 2025 20:51:27 +0100 Subject: [PATCH 290/338] Consider textRise when showing type3 font glyphs Add test case for issue 19532 --- src/display/canvas.js | 2 +- test/pdfs/.gitignore | 1 + test/pdfs/issue19532.pdf | Bin 0 -> 10160 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19532.pdf diff --git a/src/display/canvas.js b/src/display/canvas.js index 3b56fb0d832ab..ff63e0da12a12 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -2362,7 +2362,7 @@ class CanvasGraphics { ctx.save(); ctx.transform(...current.textMatrix); - ctx.translate(current.x, current.y); + ctx.translate(current.x, current.y + current.textRise); ctx.scale(textHScale, fontDirection); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index d3f822e834eb4..27fc194afcd19 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -122,6 +122,7 @@ !issue10542_reduced.pdf !issue10665_reduced.pdf !issue11016_reduced.pdf +!issue19532.pdf !issue15516_reduced.pdf !issue11045.pdf !bug1057544.pdf diff --git a/test/pdfs/issue19532.pdf b/test/pdfs/issue19532.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1ddf578b7b21edec8e567fade07d399b2e085028 GIT binary patch literal 10160 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 g94$=A8T^>zZzT?&%E1pNTptu!0DPfPsa5v Date: Wed, 11 Dec 2024 13:54:50 +0100 Subject: [PATCH 291/338] Extract `PDFPageViewBase` class out of `PDFPageView` This base class contains the generic logic for: - Creating a canvas and showing when appropriate - Rendering in the canvas - Keeping track of the rendering state --- web/base_pdf_page_view.js | 228 ++++++++++++++++++++++++++++++ web/pdf_page_view.js | 287 +++++++++----------------------------- 2 files changed, 293 insertions(+), 222 deletions(-) create mode 100644 web/base_pdf_page_view.js diff --git a/web/base_pdf_page_view.js b/web/base_pdf_page_view.js new file mode 100644 index 0000000000000..4768a9176dced --- /dev/null +++ b/web/base_pdf_page_view.js @@ -0,0 +1,228 @@ +/* Copyright 2012 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. + */ + +import { RenderingCancelledException } from "pdfjs-lib"; +import { RenderingStates } from "./ui_utils.js"; + +class BasePDFPageView { + #enableHWA = false; + + #loadingId = null; + + #renderError = null; + + #renderingState = RenderingStates.INITIAL; + + #showCanvas = null; + + canvas = null; + + /** @type {null | HTMLDivElement} */ + div = null; + + eventBus = null; + + id = null; + + pageColors = null; + + renderingQueue = null; + + renderTask = null; + + resume = null; + + constructor(options) { + this.#enableHWA = + #enableHWA in options ? options.#enableHWA : options.enableHWA || false; + this.eventBus = options.eventBus; + this.id = options.id; + this.pageColors = options.pageColors || null; + this.renderingQueue = options.renderingQueue; + } + + get renderingState() { + return this.#renderingState; + } + + set renderingState(state) { + if (state === this.#renderingState) { + return; + } + this.#renderingState = state; + + if (this.#loadingId) { + clearTimeout(this.#loadingId); + this.#loadingId = null; + } + + switch (state) { + case RenderingStates.PAUSED: + this.div.classList.remove("loading"); + break; + case RenderingStates.RUNNING: + this.div.classList.add("loadingIcon"); + this.#loadingId = setTimeout(() => { + // Adding the loading class is slightly postponed in order to not have + // it with loadingIcon. + // If we don't do that the visibility of the background is changed but + // the transition isn't triggered. + this.div.classList.add("loading"); + this.#loadingId = null; + }, 0); + break; + case RenderingStates.INITIAL: + case RenderingStates.FINISHED: + this.div.classList.remove("loadingIcon", "loading"); + break; + } + } + + _createCanvas(onShow) { + const { pageColors } = this; + const hasHCM = !!(pageColors?.background && pageColors?.foreground); + const prevCanvas = this.canvas; + + // In HCM, a final filter is applied on the canvas which means that + // before it's applied we've normal colors. Consequently, to avoid to + // have a final flash we just display it once all the drawing is done. + const updateOnFirstShow = !prevCanvas && !hasHCM; + + const canvas = (this.canvas = document.createElement("canvas")); + + this.#showCanvas = isLastShow => { + if (updateOnFirstShow) { + // Don't add the canvas until the first draw callback, or until + // drawing is complete when `!this.renderingQueue`, to prevent black + // flickering. + onShow(canvas); + this.#showCanvas = null; + return; + } + if (!isLastShow) { + return; + } + + if (prevCanvas) { + prevCanvas.replaceWith(canvas); + prevCanvas.width = prevCanvas.height = 0; + } else { + onShow(canvas); + } + }; + + const ctx = canvas.getContext("2d", { + alpha: false, + willReadFrequently: !this.#enableHWA, + }); + + return { canvas, prevCanvas, ctx }; + } + + #renderContinueCallback = cont => { + this.#showCanvas?.(false); + if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) { + this.renderingState = RenderingStates.PAUSED; + this.resume = () => { + this.renderingState = RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + + _resetCanvas() { + const { canvas } = this; + if (!canvas) { + return; + } + canvas.remove(); + canvas.width = canvas.height = 0; + this.canvas = null; + } + + async _drawCanvas(options, prevCanvas, onFinish) { + const renderTask = (this.renderTask = this.pdfPage.render(options)); + renderTask.onContinue = this.#renderContinueCallback; + + try { + await renderTask.promise; + this.#showCanvas?.(true); + this.#finishRenderTask(renderTask, null, onFinish); + } catch (error) { + // When zooming with a `drawingDelay` set, avoid temporarily showing + // a black canvas if rendering was cancelled before the `onContinue`- + // callback had been invoked at least once. + if (!(error instanceof RenderingCancelledException)) { + this.#showCanvas?.(true); + } else { + prevCanvas?.remove(); + this._resetCanvas(); + } + this.#finishRenderTask(renderTask, error, onFinish); + } + } + + async #finishRenderTask(renderTask, error, onFinish) { + // The renderTask may have been replaced by a new one, so only remove + // the reference to the renderTask if it matches the one that is + // triggering this callback. + if (renderTask === this.renderTask) { + this.renderTask = null; + } + + if (error instanceof RenderingCancelledException) { + this.#renderError = null; + return; + } + this.#renderError = error; + + this.renderingState = RenderingStates.FINISHED; + + onFinish(renderTask); + + if (error) { + throw error; + } + } + + cancelRendering({ cancelExtraDelay = 0 } = {}) { + if (this.renderTask) { + this.renderTask.cancel(cancelExtraDelay); + this.renderTask = null; + } + this.resume = null; + } + + dispatchPageRender() { + this.eventBus.dispatch("pagerender", { + source: this, + pageNumber: this.id, + }); + } + + dispatchPageRendered(cssTransform) { + this.eventBus.dispatch("pagerendered", { + source: this, + pageNumber: this.id, + cssTransform, + timestamp: performance.now(), + error: this.#renderError, + }); + } +} + +export { BasePDFPageView }; diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 602ddc189c0c2..2006d623db429 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -28,7 +28,6 @@ import { AnnotationMode, OutputScale, PixelsPerInch, - RenderingCancelledException, setLayerDimensions, shadow, } from "pdfjs-lib"; @@ -44,6 +43,7 @@ import { AnnotationEditorLayerBuilder } from "./annotation_editor_layer_builder. import { AnnotationLayerBuilder } from "./annotation_layer_builder.js"; import { AppOptions } from "./app_options.js"; import { Autolinker } from "./autolinker.js"; +import { BasePDFPageView } from "./base_pdf_page_view.js"; import { DrawLayerBuilder } from "./draw_layer_builder.js"; import { GenericL10n } from "web-null_l10n"; import { SimpleLinkService } from "./pdf_link_service.js"; @@ -116,13 +116,11 @@ const LAYERS_ORDER = new Map([ /** * @implements {IRenderableView} */ -class PDFPageView { +class PDFPageView extends BasePDFPageView { #annotationMode = AnnotationMode.ENABLE_FORMS; #canvasWrapper = null; - #enableHWA = false; - #enableAutoLinking = false; #hasRestrictedScaling = false; @@ -131,8 +129,6 @@ class PDFPageView { #layerProperties = null; - #loadingId = null; - #originalViewport = null; #previousRotation = null; @@ -141,10 +137,6 @@ class PDFPageView { #scaleRoundY = 1; - #renderError = null; - - #renderingState = RenderingStates.INITIAL; - #textLayerMode = TextLayerMode.ENABLE; #userUnit = 1; @@ -161,10 +153,11 @@ class PDFPageView { * @param {PDFPageViewOptions} options */ constructor(options) { + super(options); + const container = options.container; const defaultViewport = options.defaultViewport; - this.id = options.id; this.renderingId = "page" + this.id; this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES; @@ -182,19 +175,13 @@ class PDFPageView { this.imageResourcesPath = options.imageResourcesPath || ""; this.maxCanvasPixels = options.maxCanvasPixels ?? AppOptions.get("maxCanvasPixels"); - this.pageColors = options.pageColors || null; - this.#enableHWA = options.enableHWA || false; this.#enableAutoLinking = options.enableAutoLinking || false; - this.eventBus = options.eventBus; - this.renderingQueue = options.renderingQueue; this.l10n = options.l10n; if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { this.l10n ||= new GenericL10n(); } - this.renderTask = null; - this.resume = null; if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { this._isStandalone = !this.renderingQueue?.hasViewer(); this._container = container; @@ -278,43 +265,6 @@ class PDFPageView { this.div.prepend(div); } - get renderingState() { - return this.#renderingState; - } - - set renderingState(state) { - if (state === this.#renderingState) { - return; - } - this.#renderingState = state; - - if (this.#loadingId) { - clearTimeout(this.#loadingId); - this.#loadingId = null; - } - - switch (state) { - case RenderingStates.PAUSED: - this.div.classList.remove("loading"); - break; - case RenderingStates.RUNNING: - this.div.classList.add("loadingIcon"); - this.#loadingId = setTimeout(() => { - // Adding the loading class is slightly postponed in order to not have - // it with loadingIcon. - // If we don't do that the visibility of the background is changed but - // the transition isn't triggered. - this.div.classList.add("loading"); - this.#loadingId = null; - }, 0); - break; - case RenderingStates.INITIAL: - case RenderingStates.FINISHED: - this.div.classList.remove("loadingIcon", "loading"); - break; - } - } - #setDimensions() { const { div, viewport } = this; @@ -558,14 +508,8 @@ class PDFPageView { } } - #resetCanvas() { - const { canvas } = this; - if (!canvas) { - return; - } - canvas.remove(); - canvas.width = canvas.height = 0; - this.canvas = null; + _resetCanvas() { + super._resetCanvas(); this.#originalViewport = null; } @@ -632,7 +576,7 @@ class PDFPageView { if (!keepCanvasWrapper && this.#canvasWrapper) { this.#canvasWrapper = null; - this.#resetCanvas(); + this._resetCanvas(); } } @@ -758,18 +702,11 @@ class PDFPageView { hideTextLayer: postponeDrawing, }); - if (postponeDrawing) { - // The "pagerendered"-event will be dispatched once the actual - // rendering is done, hence don't dispatch it here as well. - return; + // The "pagerendered"-event will be dispatched once the actual + // rendering is done, hence don't dispatch it here as well. + if (!postponeDrawing) { + this.dispatchPageRendered(true); } - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: true, - timestamp: performance.now(), - error: this.#renderError, - }); return; } } @@ -794,11 +731,7 @@ class PDFPageView { keepTextLayer = false, cancelExtraDelay = 0, } = {}) { - if (this.renderTask) { - this.renderTask.cancel(cancelExtraDelay); - this.renderTask = null; - } - this.resume = null; + super.cancelRendering({ cancelExtraDelay }); if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) { this.textLayer.cancel(); @@ -897,39 +830,6 @@ class PDFPageView { return this.viewport.convertToPdfPoint(x, y); } - async #finishRenderTask(renderTask, error = null) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === this.renderTask) { - this.renderTask = null; - } - - if (error instanceof RenderingCancelledException) { - this.#renderError = null; - return; - } - this.#renderError = error; - - this.renderingState = RenderingStates.FINISHED; - - // Ensure that the thumbnails won't become partially (or fully) blank, - // for documents that contain interactive form elements. - this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots; - - this.eventBus.dispatch("pagerendered", { - source: this, - pageNumber: this.id, - cssTransform: false, - timestamp: performance.now(), - error: this.#renderError, - }); - - if (error) { - throw error; - } - } - async draw() { if (this.renderingState !== RenderingStates.INITIAL) { console.error("Must be in new state before drawing"); @@ -1009,61 +909,15 @@ class PDFPageView { }); } - const renderContinueCallback = cont => { - showCanvas?.(false); - if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) { - this.renderingState = RenderingStates.PAUSED; - this.resume = () => { - this.renderingState = RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - const { width, height } = viewport; - const canvas = document.createElement("canvas"); - canvas.setAttribute("role", "presentation"); - - const hasHCM = !!(pageColors?.background && pageColors?.foreground); - const prevCanvas = this.canvas; - - // In HCM, a final filter is applied on the canvas which means that - // before it's applied we've normal colors. Consequently, to avoid to - // have a final flash we just display it once all the drawing is done. - const updateOnFirstShow = !prevCanvas && !hasHCM; - this.canvas = canvas; this.#originalViewport = viewport; - let showCanvas = isLastShow => { - if (updateOnFirstShow) { - // Don't add the canvas until the first draw callback, or until - // drawing is complete when `!this.renderingQueue`, to prevent black - // flickering. - // In whatever case, the canvas must be the first child. - canvasWrapper.prepend(canvas); - showCanvas = null; - return; - } - if (!isLastShow) { - return; - } - - if (prevCanvas) { - prevCanvas.replaceWith(canvas); - prevCanvas.width = prevCanvas.height = 0; - } else { - canvasWrapper.prepend(canvas); - } - - showCanvas = null; - }; - - const ctx = canvas.getContext("2d", { - alpha: false, - willReadFrequently: !this.#enableHWA, + const { canvas, prevCanvas, ctx } = this._createCanvas(newCanvas => { + // Always inject the canvas as the first element in the wrapper. + canvasWrapper.prepend(newCanvas); }); + canvas.setAttribute("role", "presentation"); + const outputScale = (this.outputScale = new OutputScale()); if ( @@ -1126,68 +980,59 @@ class PDFPageView { pageColors, isEditing: this.#isEditing, }; - const renderTask = (this.renderTask = pdfPage.render(renderContext)); - renderTask.onContinue = renderContinueCallback; - - const resultPromise = renderTask.promise.then( - async () => { - showCanvas?.(true); - await this.#finishRenderTask(renderTask); - - this.structTreeLayer ||= new StructTreeLayerBuilder( - pdfPage, - viewport.rawDims - ); + const resultPromise = this._drawCanvas( + renderContext, + prevCanvas, + renderTask => { + // Ensure that the thumbnails won't become partially (or fully) blank, + // for documents that contain interactive form elements. + this.#useThumbnailCanvas.regularAnnotations = + !renderTask.separateAnnots; + + this.dispatchPageRendered(false); + } + ).then(async () => { + this.structTreeLayer ||= new StructTreeLayerBuilder( + pdfPage, + viewport.rawDims + ); - const textLayerPromise = this.#renderTextLayer(); + const textLayerPromise = this.#renderTextLayer(); - if (this.annotationLayer) { - await this.#renderAnnotationLayer(); + if (this.annotationLayer) { + await this.#renderAnnotationLayer(); - if (this.#enableAutoLinking && this.annotationLayer) { - await this.#injectLinkAnnotations(textLayerPromise); - } + if (this.#enableAutoLinking && this.annotationLayer) { + await this.#injectLinkAnnotations(textLayerPromise); } + } - const { annotationEditorUIManager } = this.#layerProperties; + const { annotationEditorUIManager } = this.#layerProperties; - if (!annotationEditorUIManager) { - return; - } - this.drawLayer ||= new DrawLayerBuilder({ - pageIndex: this.id, - }); - await this.#renderDrawLayer(); - this.drawLayer.setParent(canvasWrapper); - - this.annotationEditorLayer ||= new AnnotationEditorLayerBuilder({ - uiManager: annotationEditorUIManager, - pdfPage, - l10n, - structTreeLayer: this.structTreeLayer, - accessibilityManager: this._accessibilityManager, - annotationLayer: this.annotationLayer?.annotationLayer, - textLayer: this.textLayer, - drawLayer: this.drawLayer.getDrawLayer(), - onAppend: annotationEditorLayerDiv => { - this.#addLayer(annotationEditorLayerDiv, "annotationEditorLayer"); - }, - }); - this.#renderAnnotationEditorLayer(); - }, - error => { - // When zooming with a `drawingDelay` set, avoid temporarily showing - // a black canvas if rendering was cancelled before the `onContinue`- - // callback had been invoked at least once. - if (!(error instanceof RenderingCancelledException)) { - showCanvas?.(true); - } else { - prevCanvas?.remove(); - this.#resetCanvas(); - } - return this.#finishRenderTask(renderTask, error); + if (!annotationEditorUIManager) { + return; } - ); + this.drawLayer ||= new DrawLayerBuilder({ + pageIndex: this.id, + }); + await this.#renderDrawLayer(); + this.drawLayer.setParent(canvasWrapper); + + this.annotationEditorLayer ||= new AnnotationEditorLayerBuilder({ + uiManager: annotationEditorUIManager, + pdfPage, + l10n, + structTreeLayer: this.structTreeLayer, + accessibilityManager: this._accessibilityManager, + annotationLayer: this.annotationLayer?.annotationLayer, + textLayer: this.textLayer, + drawLayer: this.drawLayer.getDrawLayer(), + onAppend: annotationEditorLayerDiv => { + this.#addLayer(annotationEditorLayerDiv, "annotationEditorLayer"); + }, + }); + this.#renderAnnotationEditorLayer(); + }); if (pdfPage.isPureXfa) { if (!this.xfaLayer) { @@ -1204,10 +1049,8 @@ class PDFPageView { div.setAttribute("data-loaded", true); - this.eventBus.dispatch("pagerender", { - source: this, - pageNumber: this.id, - }); + this.dispatchPageRender(); + return resultPromise; } From a939d549382c1e0761acffca3f3c8b015a981435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Wed, 11 Dec 2024 13:58:52 +0100 Subject: [PATCH 292/338] [api-minor] Render high-res partial page views when falling back to CSS zoom (bug 1492303) When rendering big PDF pages at high zoom levels, we currently fall back to CSS zoom to avoid rendering canvases with too many pixels. This causes zoomed in PDF to look blurry, and the text to be potentially unreadable. This commit adds support for rendering _part_ of a page (called `PDFPageDetailView` in the code), so that we can render portion of a page in a smaller canvas without hiting the maximun canvas size limit. Specifically, we render an area of that page that is slightly larger than the area that is visible on the screen (100% larger in each direction, unless we have to limit it due to the maximum canvas size). As the user scrolls around the page, we re-render a new area centered around what is currently visible. --- src/display/api.js | 38 +- test/integration/test_utils.mjs | 14 +- test/integration/viewer_spec.mjs | 642 +++++++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/colors.pdf | Bin 0 -> 2591 bytes test/unit/ui_utils_spec.js | 22 +- web/app.js | 5 +- web/app_options.js | 5 + web/base_pdf_page_view.js | 49 ++- web/pdf_page_detail_view.js | 250 ++++++++++++ web/pdf_page_view.js | 182 ++++++--- web/pdf_rendering_queue.js | 11 +- web/pdf_viewer.js | 18 +- web/ui_utils.js | 21 +- 14 files changed, 1142 insertions(+), 116 deletions(-) create mode 100644 test/pdfs/colors.pdf create mode 100644 web/pdf_page_detail_view.js diff --git a/src/display/api.js b/src/display/api.js index b55b1282f8ee7..63b01b5e60e43 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -3232,17 +3232,27 @@ class PDFObjects { class RenderTask { #internalRenderTask = null; + /** + * Callback for incremental rendering -- a function that will be called + * each time the rendering is paused. To continue rendering call the + * function that is the first argument to the callback. + * @type {function} + */ + onContinue = null; + + /** + * A function that will be synchronously called when the rendering tasks + * finishes with an error (either because of an actual error, or because the + * rendering is cancelled). + * + * @type {function} + * @param {Error} error + */ + onError = null; + constructor(internalRenderTask) { this.#internalRenderTask = internalRenderTask; - /** - * Callback for incremental rendering -- a function that will be called - * each time the rendering is paused. To continue rendering call the - * function that is the first argument to the callback. - * @type {function} - */ - this.onContinue = null; - if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { // For testing purposes. Object.defineProperty(this, "getOperatorList", { @@ -3399,13 +3409,13 @@ class InternalRenderTask { } InternalRenderTask.#canvasInUse.delete(this._canvas); - this.callback( - error || - new RenderingCancelledException( - `Rendering cancelled, page ${this._pageIndex + 1}`, - extraDelay - ) + error ||= new RenderingCancelledException( + `Rendering cancelled, page ${this._pageIndex + 1}`, + extraDelay ); + this.callback(error); + + this.task.onError?.(error); } operatorListChanged() { diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index d41035ab4ca2e..5d4396d305efe 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -17,11 +17,15 @@ import os from "os"; const isMac = os.platform() === "darwin"; -function loadAndWait(filename, selector, zoom, setups, options) { +function loadAndWait(filename, selector, zoom, setups, options, viewport) { return Promise.all( global.integrationSessions.map(async session => { const page = await session.browser.newPage(); + if (viewport) { + await page.setViewport(viewport); + } + // In order to avoid errors because of checks which depend on // a locale. await page.evaluateOnNewDocument(() => { @@ -566,8 +570,12 @@ function waitForAnnotationModeChanged(page) { function waitForPageRendered(page) { return createPromise(page, resolve => { - window.PDFViewerApplication.eventBus.on("pagerendered", resolve, { - once: true, + const { eventBus } = window.PDFViewerApplication; + eventBus.on("pagerendered", function handler(e) { + if (!e.isDetailView) { + resolve(); + eventBus.off("pagerendered", handler); + } }); }); } diff --git a/test/integration/viewer_spec.mjs b/test/integration/viewer_spec.mjs index ac9af95693cda..e5988d27265bd 100644 --- a/test/integration/viewer_spec.mjs +++ b/test/integration/viewer_spec.mjs @@ -454,4 +454,646 @@ describe("PDF viewer", () => { ); }); }); + + describe("Detail view on zoom", () => { + const BASE_MAX_CANVAS_PIXELS = 1e6; + + function setupPages(zoom, devicePixelRatio, setups = {}) { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "colors.pdf", + null, + zoom, + { + // When running Firefox with Puppeteer, setting the + // devicePixelRatio Puppeteer option does not properly set + // the `window.devicePixelRatio` value. Set it manually. + earlySetup: `() => { + window.devicePixelRatio = ${devicePixelRatio}; + }`, + ...setups, + }, + { maxCanvasPixels: BASE_MAX_CANVAS_PIXELS * devicePixelRatio ** 2 }, + { height: 600, width: 800, devicePixelRatio } + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + return function forEachPage(fn) { + return Promise.all( + pages.map(([browserName, page]) => fn(browserName, page)) + ); + }; + } + + function extractCanvases(pageNumber) { + const pageOne = document.querySelector( + `.page[data-page-number='${pageNumber}']` + ); + return Array.from(pageOne.querySelectorAll("canvas"), canvas => { + const { width, height } = canvas; + const ctx = canvas.getContext("2d"); + const topLeft = ctx.getImageData(2, 2, 1, 1).data; + const bottomRight = ctx.getImageData(width - 3, height - 3, 1, 1).data; + return { + size: width * height, + topLeft: globalThis.pdfjsLib.Util.makeHexColor(...topLeft), + bottomRight: globalThis.pdfjsLib.Util.makeHexColor(...bottomRight), + }; + }); + } + + function waitForDetailRendered(page) { + return createPromise(page, resolve => { + const controller = new AbortController(); + window.PDFViewerApplication.eventBus.on( + "pagerendered", + ({ isDetailView }) => { + if (isDetailView) { + resolve(); + controller.abort(); + } + }, + { signal: controller.signal } + ); + }); + } + + for (const pixelRatio of [1, 2]) { + describe(`with pixel ratio ${pixelRatio}`, () => { + describe("setupPages()", () => { + const forEachPage = setupPages("100%", pixelRatio); + + it("sets the proper devicePixelRatio", async () => { + await forEachPage(async (browserName, page) => { + const devicePixelRatio = await page.evaluate( + () => window.devicePixelRatio + ); + + expect(devicePixelRatio) + .withContext(`In ${browserName}`) + .toBe(pixelRatio); + }); + }); + }); + + describe("when zooming in past max canvas size", () => { + const forEachPage = setupPages("100%", pixelRatio); + + it("must render the detail view", async () => { + await forEachPage(async (browserName, page) => { + await page.waitForSelector( + ".page[data-page-number='1'] .textLayer" + ); + + const before = await page.evaluate(extractCanvases, 1); + + expect(before.length) + .withContext(`In ${browserName}, before`) + .toBe(1); + expect(before[0].size) + .withContext(`In ${browserName}, before`) + .toBeLessThan(BASE_MAX_CANVAS_PIXELS * pixelRatio ** 2); + expect(before[0]) + .withContext(`In ${browserName}, before`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#85200c", // dark berry + bottomRight: "#b6d7a8", // light green + }) + ); + + const factor = 3; + // Check that we are going to trigger CSS zoom. + expect(before[0].size * factor ** 2) + .withContext(`In ${browserName}`) + .toBeGreaterThan(BASE_MAX_CANVAS_PIXELS * pixelRatio ** 2); + + const handle = await waitForDetailRendered(page); + await page.evaluate(scaleFactor => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: 0, + scaleFactor, + }); + }, factor); + await awaitPromise(handle); + + const after = await page.evaluate(extractCanvases, 1); + + expect(after.length) + .withContext(`In ${browserName}, after`) + .toBe(2); + expect(after[0].size) + .withContext(`In ${browserName}, after (first)`) + .toBeLessThan(4e6); + expect(after[0]) + .withContext(`In ${browserName}, after (first)`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#85200c", // dark berry + bottomRight: "#b6d7a8", // light green + }) + ); + expect(after[1].size) + .withContext(`In ${browserName}, after (second)`) + .toBeLessThan(4e6); + expect(after[1]) + .withContext(`In ${browserName}, after (second)`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#85200c", // dark berry + bottomRight: "#ff0000", // bright red + }) + ); + }); + }); + }); + + describe("when starting already zoomed in past max canvas size", () => { + const forEachPage = setupPages("300%", pixelRatio); + + it("must render the detail view", async () => { + await forEachPage(async (browserName, page) => { + await page.waitForSelector( + ".page[data-page-number='1'] canvas:nth-child(2)" + ); + + const canvases = await page.evaluate(extractCanvases, 1); + + expect(canvases.length).withContext(`In ${browserName}`).toBe(2); + expect(canvases[0].size) + .withContext(`In ${browserName} (first)`) + .toBeLessThan(4e6); + expect(canvases[0]) + .withContext(`In ${browserName} (first)`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#85200c", // dark berry + bottomRight: "#b6d7a8", // light green + }) + ); + expect(canvases[1].size) + .withContext(`In ${browserName} (second)`) + .toBeLessThan(4e6); + expect(canvases[1]) + .withContext(`In ${browserName} (second)`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#85200c", // dark berry + bottomRight: "#ff0000", // bright red + }) + ); + }); + }); + }); + + describe("when scrolling", () => { + const forEachPage = setupPages("300%", pixelRatio); + + it("must update the detail view", async () => { + await forEachPage(async (browserName, page) => { + await page.waitForSelector( + ".page[data-page-number='1'] canvas:nth-child(2)" + ); + + const handle = await waitForDetailRendered(page); + await page.evaluate(() => { + const container = document.getElementById("viewerContainer"); + container.scrollTop += 1600; + container.scrollLeft += 1100; + }); + await awaitPromise(handle); + + const canvases = await page.evaluate(extractCanvases, 1); + + expect(canvases.length).withContext(`In ${browserName}`).toBe(2); + expect(canvases[1].size) + .withContext(`In ${browserName}`) + .toBeLessThan(4e6); + expect(canvases[1]) + .withContext(`In ${browserName}`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#ff9900", // bright orange + bottomRight: "#ffe599", // light yellow + }) + ); + }); + }); + }); + + describe("when scrolling little enough that the existing detail covers the new viewport", () => { + const forEachPage = setupPages("300%", pixelRatio); + + it("must not re-create the detail canvas", async () => { + await forEachPage(async (browserName, page) => { + const detailCanvasSelector = + ".page[data-page-number='1'] canvas:nth-child(2)"; + + await page.waitForSelector(detailCanvasSelector); + + const detailCanvasHandle = await page.$(detailCanvasSelector); + + let rendered = false; + const handle = await waitForDetailRendered(page); + await page.evaluate(() => { + const container = document.getElementById("viewerContainer"); + container.scrollTop += 10; + container.scrollLeft += 10; + }); + awaitPromise(handle) + .then(() => { + rendered = true; + }) + .catch(() => {}); + + // Give some time to the page to re-render. If it re-renders it's + // a bug, but without waiting we would never catch it. + await new Promise(resolve => { + setTimeout(resolve, 100); + }); + + const isSame = await page.evaluate( + (prev, selector) => prev === document.querySelector(selector), + detailCanvasHandle, + detailCanvasSelector + ); + + expect(isSame).withContext(`In ${browserName}`).toBe(true); + expect(rendered).withContext(`In ${browserName}`).toBe(false); + }); + }); + }); + + describe("when scrolling to have two visible pages", () => { + const forEachPage = setupPages("300%", pixelRatio); + + it("must update the detail view", async () => { + await forEachPage(async (browserName, page) => { + await page.waitForSelector( + ".page[data-page-number='1'] canvas:nth-child(2)" + ); + + const handle = await createPromise(page, resolve => { + // wait for two 'pagerendered' events for detail views + let second = false; + const { eventBus } = window.PDFViewerApplication; + eventBus.on( + "pagerendered", + function onPageRendered({ isDetailView }) { + if (!isDetailView) { + return; + } + if (!second) { + second = true; + return; + } + eventBus.off("pagerendered", onPageRendered); + resolve(); + } + ); + }); + await page.evaluate(() => { + const container = document.getElementById("viewerContainer"); + container.scrollLeft += 600; + container.scrollTop += 3000; + }); + await awaitPromise(handle); + + const [canvases1, canvases2] = await Promise.all([ + page.evaluate(extractCanvases, 1), + page.evaluate(extractCanvases, 2), + ]); + + expect(canvases1.length) + .withContext(`In ${browserName}, first page`) + .toBe(2); + expect(canvases1[1].size) + .withContext(`In ${browserName}, first page`) + .toBeLessThan(4e6); + expect(canvases1[1]) + .withContext(`In ${browserName}, first page`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#38761d", // dark green + bottomRight: "#b6d7a8", // light green + }) + ); + + expect(canvases2.length) + .withContext(`In ${browserName}, second page`) + .toBe(2); + expect(canvases2[1].size) + .withContext(`In ${browserName}, second page`) + .toBeLessThan(4e6); + expect(canvases2[1]) + .withContext(`In ${browserName}, second page`) + .toEqual( + jasmine.objectContaining({ + topLeft: "#134f5c", // dark cyan + bottomRight: "#a2c4c9", // light cyan + }) + ); + }); + }); + }); + + describe("pagerendered event", () => { + const forEachPage = setupPages("100%", pixelRatio, { + eventBusSetup: eventBus => { + globalThis.__pageRenderedEvents = []; + + eventBus.on( + "pagerendered", + ({ pageNumber, isDetailView, cssTransform }) => { + globalThis.__pageRenderedEvents.push({ + pageNumber, + isDetailView, + cssTransform, + }); + } + ); + }, + }); + + it("is dispatched properly", async () => { + await forEachPage(async (browserName, page) => { + const getPageRenderedEvents = () => + page.evaluate(() => { + const events = globalThis.__pageRenderedEvents; + globalThis.__pageRenderedEvents = []; + return events; + }); + const waitForPageRenderedEvent = filter => + page.waitForFunction( + filterStr => + // eslint-disable-next-line no-eval + globalThis.__pageRenderedEvents.some(eval(filterStr)), + { polling: 50 }, + String(filter) + ); + + // Initial render + await waitForPageRenderedEvent(e => e.pageNumber === 2); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, initial render`) + .toEqual([ + { pageNumber: 1, isDetailView: false, cssTransform: false }, + { pageNumber: 2, isDetailView: false, cssTransform: false }, + ]); + + // Zoom-in without triggering the detail view + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 1.05, + }); + }); + await waitForPageRenderedEvent(e => e.pageNumber === 2); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, first zoom`) + .toEqual([ + { pageNumber: 1, isDetailView: false, cssTransform: false }, + { pageNumber: 2, isDetailView: false, cssTransform: false }, + ]); + + // Zoom-in on the first page, triggering the detail view + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 2, + }); + }); + await Promise.all([ + waitForPageRenderedEvent( + e => e.isDetailView && e.pageNumber === 1 + ), + waitForPageRenderedEvent(e => e.pageNumber === 2), + ]); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, second zoom`) + .toEqual([ + { pageNumber: 1, isDetailView: false, cssTransform: false }, + { pageNumber: 1, isDetailView: true, cssTransform: false }, + { pageNumber: 2, isDetailView: false, cssTransform: false }, + ]); + + // Zoom-in more + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 2, + }); + }); + await Promise.all([ + waitForPageRenderedEvent( + e => e.isDetailView && e.pageNumber === 1 + ), + waitForPageRenderedEvent(e => e.pageNumber === 2), + ]); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, third zoom`) + .toEqual([ + { pageNumber: 1, isDetailView: false, cssTransform: true }, + { pageNumber: 2, isDetailView: false, cssTransform: true }, + { pageNumber: 1, isDetailView: true, cssTransform: false }, + ]); + + // Scroll to another area of the first page + await page.evaluate(() => { + const container = document.getElementById("viewerContainer"); + container.scrollTop += 1600; + container.scrollLeft += 1100; + }); + await waitForPageRenderedEvent(e => e.isDetailView); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, first scroll`) + .toEqual([ + { pageNumber: 1, isDetailView: true, cssTransform: false }, + ]); + + // Scroll to the second page + await page.evaluate(() => { + const container = document.getElementById("viewerContainer"); + const pageElement = document.querySelector(".page"); + container.scrollTop += + pageElement.getBoundingClientRect().height; + }); + await waitForPageRenderedEvent(e => e.isDetailView); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, second scroll`) + .toEqual([ + { pageNumber: 2, isDetailView: true, cssTransform: false }, + ]); + + // Zoom-out, to not have the detail view anymore + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 0.25, + }); + }); + await Promise.all([ + waitForPageRenderedEvent(e => e.pageNumber === 1), + waitForPageRenderedEvent(e => e.pageNumber === 2), + ]); + expect(await getPageRenderedEvents()) + .withContext(`In ${browserName}, second zoom`) + .toEqual([ + { pageNumber: 2, isDetailView: false, cssTransform: false }, + { pageNumber: 1, isDetailView: false, cssTransform: false }, + ]); + + const canvasesPerPage = await page.evaluate(() => + Array.from( + document.querySelectorAll(".canvasWrapper"), + wrapper => wrapper.childElementCount + ) + ); + expect(canvasesPerPage) + .withContext(`In ${browserName}, number of canvases`) + .toEqual([1, 1]); + }); + }); + }); + }); + } + + describe("when immediately cancelled and re-rendered", () => { + const forEachPage = setupPages("100%", 1, { + eventBusSetup: eventBus => { + globalThis.__pageRenderedEvents = []; + eventBus.on("pagerendered", ({ pageNumber, isDetailView }) => { + globalThis.__pageRenderedEvents.push({ pageNumber, isDetailView }); + }); + }, + }); + + it("propely cleans up old canvases from the dom", async () => { + await forEachPage(async (browserName, page) => { + const waitForPageRenderedEvent = filter => + page.waitForFunction( + filterStr => { + // eslint-disable-next-line no-eval + if (globalThis.__pageRenderedEvents.some(eval(filterStr))) { + globalThis.__pageRenderedEvents = []; + return true; + } + return false; + }, + { polling: 50 }, + String(filter) + ); + const getCanvasCount = () => + page.evaluate( + () => + document.querySelector("[data-page-number='1'] .canvasWrapper") + .childElementCount + ); + + await waitForPageRenderedEvent(e => e.pageNumber === 1); + + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 4, + }); + }); + await waitForPageRenderedEvent( + e => e.pageNumber === 1 && e.isDetailView + ); + expect(await getCanvasCount()) + .withContext(`In ${browserName}, after the first zoom-in`) + .toBe(2); + + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 0.75, + }); + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 0.25, + }); + }); + await waitForPageRenderedEvent(e => e.pageNumber === 1); + expect(await getCanvasCount()) + .withContext(`In ${browserName}, after the two zoom-out`) + .toBe(1); + }); + }); + }); + + describe("when cancelled and re-rendered after 1 microtick", () => { + const forEachPage = setupPages("100%", 1, { + eventBusSetup: eventBus => { + globalThis.__pageRenderedEvents = []; + eventBus.on("pagerendered", ({ pageNumber, isDetailView }) => { + globalThis.__pageRenderedEvents.push({ pageNumber, isDetailView }); + }); + }, + }); + + it("propely cleans up old canvases from the dom", async () => { + await forEachPage(async (browserName, page) => { + const waitForPageRenderedEvent = filter => + page.waitForFunction( + filterStr => { + // eslint-disable-next-line no-eval + if (globalThis.__pageRenderedEvents.some(eval(filterStr))) { + globalThis.__pageRenderedEvents = []; + return true; + } + return false; + }, + { polling: 50 }, + String(filter) + ); + const getCanvasCount = () => + page.evaluate( + () => + document.querySelector("[data-page-number='1'] .canvasWrapper") + .childElementCount + ); + + await waitForPageRenderedEvent(e => e.pageNumber === 1); + + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 4, + }); + }); + await waitForPageRenderedEvent( + e => e.pageNumber === 1 && e.isDetailView + ); + expect(await getCanvasCount()) + .withContext(`In ${browserName}, after the first zoom-in`) + .toBe(2); + + await page.evaluate(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 0.75, + }); + Promise.resolve().then(() => { + window.PDFViewerApplication.pdfViewer.updateScale({ + drawingDelay: -1, + scaleFactor: 0.25, + }); + }); + }); + await waitForPageRenderedEvent(e => e.pageNumber === 1); + expect(await getCanvasCount()) + .withContext(`In ${browserName}, after the two zoom-out`) + .toBe(1); + }); + }); + }); + }); }); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 27fc194afcd19..c3ff64116501a 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -706,3 +706,4 @@ !bug1019475_1.pdf !bug1019475_2.pdf !issue19505.pdf +!colors.pdf diff --git a/test/pdfs/colors.pdf b/test/pdfs/colors.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4a6a8d663b710516f5457fac494601080caba4a8 GIT binary patch literal 2591 zcmY!laB)>cm@68n7o;zkOWy@ZmT(z@l*WS9`u^Cj&)u zfVhaESQE(@QzT;`o&Y%)WNA@q9>`f>C-|nOWF|W0SAgAZz-4M_%4K0<2z0N$bADb4 zP+>8b8AN4JYH@yPQ8Li=<`4nLyu5s%v?YY+UX)*20P}fBQDR50%Abp_>zeRrMM(vLisv3Bw} zd0NA#_)DYF87sv)K0D!GS|y$?!C%5&*=C&j+9l7QyFFTMU+eF&@Vz7e`n5n@ta^(oG0Z|0}n6MC`bF2|MyN2NAdiQh?nyDO)& zc1gn~=QZ;kr|wf(#Cg+eKfCYQ)#XzY>aA1_1nxchdUZ{OZiZl+iXPkADH0)dvr6M_ z++!1_t;lU&dRcqlCCgtwERPpk9ZY_3#EYq$@udYr?!J&;2lk$pw+VZDVLjXa_xb|a z_kW&zwsZTB=DF`yvY&XK5j5-1BEOjyt7dd-`ImmH+PSm5@||qmaVdkW54-*`dK65$ z1j-xGsE6hfP>KNO7E3c&#sQ^7kWe%*`9f708XzSwXGbnWJp(TNfN2$+>K$_mG7=5Az!rjYvwlEPesXYX3D7zE z!14u{V^b?ixb!`9fw|BLN;^YoPe=g)b2KP#!rVhq)-{9{G>E)w2rAovMGrLd8iGm* zAeX${3pO6+P<+|f5LBjtLj{q4Ll3UIqrkK0v*y&etOIOCZ`8kBDGptk&+mCP_kaAV z+)YP5c<}jdk^Zo0-p3wJ|L5WbMfarg2;rU%zUI0C|ZisMxJ@49kuEU3SK zj>_57k?Le*X9Wr~Vb#+wWXo!@u(9^&Xb& zk2XDjT6VZes-0j>UQvyGB>B%QoYn36o_GJpUndUCboyZY;z6sySko#r_M{ zpZ1w}sB4~XRKye!BQ?osLQ1ZRhE7tg(w$DE!(FZEeWM| z&CBjNaB^gAm>=uh9y%)|W|_kdrw13K{=U=Mpc9ol&6PXqj^6 zU3iZB^s>(Un_CvJ&I{U8=z8-*)W)Tq&Pu)(W)7y)E8itwFU*m?a+-UQRdV`u>4%Ta z3^JUnHKW#_n^^Dl@L1!5-;TN`qKe;0KT`f+w{8EVm$8-w%X#vvf~y_AFI&%Zgkec> zahP^tY{kWU<3X345wR^2!BW=`tll(SPRW zNy}LTppOpaV%yA6W;i#7WebLo3$rhpmYZ7HzK zF+!>qD~eLnxC|5wfz=}n7%7;Uni`ubq$xnfj0}y;6~M9zc`z{$7b*ruJYdP^nU|IiZgN43r^KQXaOfKuS{iey Ks=E5SaRC6tI)9b` literal 0 HcmV?d00001 diff --git a/test/unit/ui_utils_spec.js b/test/unit/ui_utils_spec.js index 0ead190432d90..41af41e542030 100644 --- a/test/unit/ui_utils_spec.js +++ b/test/unit/ui_utils_spec.js @@ -279,12 +279,11 @@ describe("ui_utils", function () { viewTop < scrollBottom && viewBottom > scrollTop ) { - const hiddenHeight = - Math.max(0, scrollTop - viewTop) + - Math.max(0, viewBottom - scrollBottom); - const hiddenWidth = - Math.max(0, scrollLeft - viewLeft) + - Math.max(0, viewRight - scrollRight); + const minY = Math.max(0, scrollTop - viewTop); + const minX = Math.max(0, scrollLeft - viewLeft); + + const hiddenHeight = minY + Math.max(0, viewBottom - scrollBottom); + const hiddenWidth = minX + Math.max(0, viewRight - scrollRight); const fractionHeight = (div.clientHeight - hiddenHeight) / div.clientHeight; @@ -292,12 +291,23 @@ describe("ui_utils", function () { (div.clientWidth - hiddenWidth) / div.clientWidth; const percent = (fractionHeight * fractionWidth * 100) | 0; + let visibleArea = null; + if (percent < 100) { + visibleArea = { + minX, + minY, + maxX: Math.min(viewRight, scrollRight) - viewLeft, + maxY: Math.min(viewBottom, scrollBottom) - viewTop, + }; + } + views.push({ id: view.id, x: viewLeft, y: viewTop, view, percent, + visibleArea, widthPercent: (fractionWidth * 100) | 0, }); ids.add(view.id); diff --git a/web/app.js b/web/app.js index a959b699a146a..958b55cc21830 100644 --- a/web/app.js +++ b/web/app.js @@ -507,6 +507,7 @@ const PDFViewerApplication = { imageResourcesPath: AppOptions.get("imageResourcesPath"), enablePrintAutoRotate: AppOptions.get("enablePrintAutoRotate"), maxCanvasPixels: AppOptions.get("maxCanvasPixels"), + enableDetailCanvas: AppOptions.get("enableDetailCanvas"), enablePermissions: AppOptions.get("enablePermissions"), pageColors, mlManager: this.mlManager, @@ -2347,7 +2348,7 @@ function onPageRender({ pageNumber }) { } } -function onPageRendered({ pageNumber, error }) { +function onPageRendered({ pageNumber, isDetailView, error }) { // If the page is still visible when it has finished rendering, // ensure that the page number input loading indicator is hidden. if (pageNumber === this.page) { @@ -2355,7 +2356,7 @@ function onPageRendered({ pageNumber, error }) { } // Use the rendered page to set the corresponding thumbnail image. - if (this.pdfSidebar?.visibleView === SidebarView.THUMBS) { + if (!isDetailView && this.pdfSidebar?.visibleView === SidebarView.THUMBS) { const pageView = this.pdfViewer.getPageView(/* index = */ pageNumber - 1); const thumbnailView = this.pdfThumbnailViewer?.getThumbnail( /* index = */ pageNumber - 1 diff --git a/web/app_options.js b/web/app_options.js index 1470d220f7ada..0c238384e226b 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -200,6 +200,11 @@ const defaultOptions = { value: typeof PDFJSDev === "undefined" || PDFJSDev.test("MOZCENTRAL"), kind: OptionKind.VIEWER + OptionKind.PREFERENCE, }, + enableDetailCanvas: { + /** @type {boolean} */ + value: true, + kind: OptionKind.VIEWER, + }, enableGuessAltText: { /** @type {boolean} */ value: true, diff --git a/web/base_pdf_page_view.js b/web/base_pdf_page_view.js index 4768a9176dced..42546f83d997d 100644 --- a/web/base_pdf_page_view.js +++ b/web/base_pdf_page_view.js @@ -90,7 +90,7 @@ class BasePDFPageView { } } - _createCanvas(onShow) { + _createCanvas(onShow, hideUntilComplete = false) { const { pageColors } = this; const hasHCM = !!(pageColors?.background && pageColors?.foreground); const prevCanvas = this.canvas; @@ -98,7 +98,7 @@ class BasePDFPageView { // In HCM, a final filter is applied on the canvas which means that // before it's applied we've normal colors. Consequently, to avoid to // have a final flash we just display it once all the drawing is done. - const updateOnFirstShow = !prevCanvas && !hasHCM; + const updateOnFirstShow = !prevCanvas && !hasHCM && !hideUntilComplete; const canvas = (this.canvas = document.createElement("canvas")); @@ -154,39 +154,37 @@ class BasePDFPageView { this.canvas = null; } - async _drawCanvas(options, prevCanvas, onFinish) { + async _drawCanvas(options, onCancel, onFinish) { const renderTask = (this.renderTask = this.pdfPage.render(options)); renderTask.onContinue = this.#renderContinueCallback; + renderTask.onError = error => { + if (error instanceof RenderingCancelledException) { + onCancel(); + this.#renderError = null; + } + }; + let error = null; try { await renderTask.promise; this.#showCanvas?.(true); - this.#finishRenderTask(renderTask, null, onFinish); - } catch (error) { + } catch (e) { + error = e; // When zooming with a `drawingDelay` set, avoid temporarily showing // a black canvas if rendering was cancelled before the `onContinue`- // callback had been invoked at least once. - if (!(error instanceof RenderingCancelledException)) { - this.#showCanvas?.(true); - } else { - prevCanvas?.remove(); - this._resetCanvas(); + if (error instanceof RenderingCancelledException) { + return; } - this.#finishRenderTask(renderTask, error, onFinish); - } - } - async #finishRenderTask(renderTask, error, onFinish) { - // The renderTask may have been replaced by a new one, so only remove - // the reference to the renderTask if it matches the one that is - // triggering this callback. - if (renderTask === this.renderTask) { - this.renderTask = null; - } - - if (error instanceof RenderingCancelledException) { - this.#renderError = null; - return; + this.#showCanvas?.(true); + } finally { + // The renderTask may have been replaced by a new one, so only remove + // the reference to the renderTask if it matches the one that is + // triggering this callback. + if (renderTask === this.renderTask) { + this.renderTask = null; + } } this.#renderError = error; @@ -214,11 +212,12 @@ class BasePDFPageView { }); } - dispatchPageRendered(cssTransform) { + dispatchPageRendered(cssTransform, isDetailView) { this.eventBus.dispatch("pagerendered", { source: this, pageNumber: this.id, cssTransform, + isDetailView, timestamp: performance.now(), error: this.#renderError, }); diff --git a/web/pdf_page_detail_view.js b/web/pdf_page_detail_view.js new file mode 100644 index 0000000000000..34585d5222d1c --- /dev/null +++ b/web/pdf_page_detail_view.js @@ -0,0 +1,250 @@ +/* Copyright 2012 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. + */ + +import { BasePDFPageView } from "./base_pdf_page_view.js"; +import { RenderingStates } from "./ui_utils.js"; + +/** @typedef {import("./interfaces").IRenderableView} IRenderableView */ + +/** + * @implements {IRenderableView} + */ +class PDFPageDetailView extends BasePDFPageView { + #detailArea = null; + + constructor({ pageView }) { + super(pageView); + + this.pageView = pageView; + this.renderingId = "detail" + this.id; + + this.div = pageView.div; + } + + setPdfPage(pdfPage) { + this.pageView.setPdfPage(pdfPage); + } + + get pdfPage() { + return this.pageView.pdfPage; + } + + reset({ keepCanvas = false } = {}) { + this.cancelRendering(); + this.renderingState = RenderingStates.INITIAL; + + if (!keepCanvas) { + this._resetCanvas(); + } + } + + #shouldRenderDifferentArea(visibleArea) { + if (!this.#detailArea) { + return true; + } + + const minDetailX = this.#detailArea.minX; + const minDetailY = this.#detailArea.minY; + const maxDetailX = this.#detailArea.width + minDetailX; + const maxDetailY = this.#detailArea.height + minDetailY; + + if ( + visibleArea.minX < minDetailX || + visibleArea.minY < minDetailY || + visibleArea.maxX > maxDetailX || + visibleArea.maxY > maxDetailY + ) { + return true; + } + + const { + width: maxWidth, + height: maxHeight, + scale, + } = this.pageView.viewport; + + if (this.#detailArea.scale !== scale) { + return true; + } + + const paddingLeftSize = visibleArea.minX - minDetailX; + const paddingRightSize = maxDetailX - visibleArea.maxX; + const paddingTopSize = visibleArea.minY - minDetailY; + const paddingBottomSize = maxDetailY - visibleArea.maxY; + + // If the user is moving in any direction such that the remaining area + // rendered outside of the screen is less than MOVEMENT_THRESHOLD of the + // padding we render on each side, trigger a re-render. This is so that if + // the user then keeps scrolling in that direction, we have a chance of + // finishing rendering the new detail before they get past the rendered + // area. + + const MOVEMENT_THRESHOLD = 0.5; + const ratio = (1 + MOVEMENT_THRESHOLD) / MOVEMENT_THRESHOLD; + + if ( + (minDetailX > 0 && paddingRightSize / paddingLeftSize > ratio) || + (maxDetailX < maxWidth && paddingLeftSize / paddingRightSize > ratio) || + (minDetailY > 0 && paddingBottomSize / paddingTopSize > ratio) || + (maxDetailY < maxHeight && paddingTopSize / paddingBottomSize > ratio) + ) { + return true; + } + + return false; + } + + update({ visibleArea = null, underlyingViewUpdated = false } = {}) { + if (underlyingViewUpdated) { + this.cancelRendering(); + this.renderingState = RenderingStates.INITIAL; + return; + } + + if (!this.#shouldRenderDifferentArea(visibleArea)) { + return; + } + + const { viewport, maxCanvasPixels } = this.pageView; + + const visibleWidth = visibleArea.maxX - visibleArea.minX; + const visibleHeight = visibleArea.maxY - visibleArea.minY; + + // "overflowScale" represents which percentage of the width and of the + // height the detail area extends outside of the visible area. We want to + // draw a larger area so that we don't have to constantly re-draw while + // scrolling. The detail area's dimensions thus become + // visibleLength * (2 * overflowScale + 1). + // We default to adding a whole height/length of detail area on each side, + // but we can reduce it to make sure that we stay within the maxCanvasPixels + // limit. + const visiblePixels = + visibleWidth * visibleHeight * (window.devicePixelRatio || 1) ** 2; + const maxDetailToVisibleLinearRatio = Math.sqrt( + maxCanvasPixels / visiblePixels + ); + const maxOverflowScale = (maxDetailToVisibleLinearRatio - 1) / 2; + let overflowScale = Math.min(1, maxOverflowScale); + if (overflowScale < 0) { + overflowScale = 0; + // In this case, we render a detail view that is exactly as big as the + // visible area, but we ignore the .maxCanvasPixels limit. + // TODO: We should probably instead give up and not render the detail view + // in this case. It's quite rare to hit it though, because usually + // .maxCanvasPixels will at least have enough pixels to cover the visible + // screen. + } + + const overflowWidth = visibleWidth * overflowScale; + const overflowHeight = visibleHeight * overflowScale; + + const minX = Math.max(0, visibleArea.minX - overflowWidth); + const maxX = Math.min(viewport.width, visibleArea.maxX + overflowWidth); + const minY = Math.max(0, visibleArea.minY - overflowHeight); + const maxY = Math.min(viewport.height, visibleArea.maxY + overflowHeight); + const width = maxX - minX; + const height = maxY - minY; + + this.#detailArea = { minX, minY, width, height, scale: viewport.scale }; + + this.reset({ keepCanvas: true }); + } + + async draw() { + // The PDFPageView might have already dropped this PDFPageDetailView. In + // that case, simply do nothing. + if (this.pageView.detailView !== this) { + return undefined; + } + + // If there is already the lower resolution canvas behind, + // we don't show the new one until when it's fully ready. + const hideUntilComplete = + this.pageView.renderingState === RenderingStates.FINISHED || + this.renderingState === RenderingStates.FINISHED; + + if (this.renderingState !== RenderingStates.INITIAL) { + console.error("Must be in new state before drawing"); + this.reset(); // Ensure that we reset all state to prevent issues. + } + const { div, pdfPage, viewport } = this.pageView; + + if (!pdfPage) { + this.renderingState = RenderingStates.FINISHED; + throw new Error("pdfPage is not loaded"); + } + + this.renderingState = RenderingStates.RUNNING; + + const canvasWrapper = this.pageView._ensureCanvasWrapper(); + + const { canvas, prevCanvas, ctx } = this._createCanvas(newCanvas => { + // If there is already the background canvas, inject this new canvas + // after it. We cannot simply use .append because all canvases must + // be before the SVG elements used for drawings. + if (canvasWrapper.firstElementChild?.tagName === "CANVAS") { + canvasWrapper.firstElementChild.after(newCanvas); + } else { + canvasWrapper.prepend(newCanvas); + } + }, hideUntilComplete); + canvas.setAttribute("aria-hidden", "true"); + + const { width, height } = viewport; + + const area = this.#detailArea; + + const { devicePixelRatio = 1 } = window; + const transform = [ + devicePixelRatio, + 0, + 0, + devicePixelRatio, + -area.minX * devicePixelRatio, + -area.minY * devicePixelRatio, + ]; + + canvas.width = area.width * devicePixelRatio; + canvas.height = area.height * devicePixelRatio; + const { style } = canvas; + style.width = `${(area.width * 100) / width}%`; + style.height = `${(area.height * 100) / height}%`; + style.top = `${(area.minY * 100) / height}%`; + style.left = `${(area.minX * 100) / width}%`; + + const renderingPromise = this._drawCanvas( + this.pageView._getRenderingContext(ctx, transform), + () => { + // If the rendering is cancelled, keep the old canvas visible. + this.canvas?.remove(); + this.canvas = prevCanvas; + }, + () => { + this.dispatchPageRendered( + /* cssTransform */ false, + /* isDetailView */ true + ); + } + ); + + div.setAttribute("data-loaded", true); + + this.dispatchPageRender(); + + return renderingPromise; + } +} + +export { PDFPageDetailView }; diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 2006d623db429..b0395530f3e31 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -46,6 +46,7 @@ import { Autolinker } from "./autolinker.js"; import { BasePDFPageView } from "./base_pdf_page_view.js"; import { DrawLayerBuilder } from "./draw_layer_builder.js"; import { GenericL10n } from "web-null_l10n"; +import { PDFPageDetailView } from "./pdf_page_detail_view.js"; import { SimpleLinkService } from "./pdf_link_service.js"; import { StructTreeLayerBuilder } from "./struct_tree_layer_builder.js"; import { TextAccessibilityManager } from "./text_accessibility.js"; @@ -77,6 +78,12 @@ import { XfaLayerBuilder } from "./xfa_layer_builder.js"; * @property {number} [maxCanvasPixels] - The maximum supported canvas size in * total pixels, i.e. width * height. Use `-1` for no limit, or `0` for * CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels). + * @property {boolean} [enableDetailCanvas] - When enabled, if the rendered + * pages would need a canvas that is larger than `maxCanvasPixels`, it will + * draw a second canvas on top of the CSS-zoomed one, that only renders the + * part of the page that is close to the viewport. The default value is + * `true`. + * @property {Object} [pageColors] - Overwrites background and foreground colors * with user defined ones in order to improve readability in high contrast * mode. @@ -129,6 +136,8 @@ class PDFPageView extends BasePDFPageView { #layerProperties = null; + #needsRestrictedScaling = false; + #originalViewport = null; #previousRotation = null; @@ -173,6 +182,7 @@ class PDFPageView extends BasePDFPageView { this.#annotationMode = options.annotationMode ?? AnnotationMode.ENABLE_FORMS; this.imageResourcesPath = options.imageResourcesPath || ""; + this.enableDetailCanvas = options.enableDetailCanvas ?? true; this.maxCanvasPixels = options.maxCanvasPixels ?? AppOptions.get("maxCanvasPixels"); this.#enableAutoLinking = options.enableAutoLinking || false; @@ -196,6 +206,8 @@ class PDFPageView extends BasePDFPageView { this.structTreeLayer = null; this.drawLayer = null; + this.detailView = null; + const div = document.createElement("div"); div.className = "page"; div.setAttribute("data-page-number", this.id); @@ -519,6 +531,7 @@ class PDFPageView extends BasePDFPageView { keepXfaLayer = false, keepTextLayer = false, keepCanvasWrapper = false, + preserveDetailViewState = false, } = {}) { this.cancelRendering({ keepAnnotationLayer, @@ -578,6 +591,17 @@ class PDFPageView extends BasePDFPageView { this.#canvasWrapper = null; this._resetCanvas(); } + + if (!preserveDetailViewState) { + this.detailView?.reset({ keepCanvas: keepCanvasWrapper }); + + // If we are keeping the canvas around we must also keep the `detailView` + // object, so that next time we need a detail view we'll update the + // existing canvas rather than creating a new one. + if (!keepCanvasWrapper) { + this.detailView = null; + } + } } toggleEditingMode(isEditing) { @@ -598,6 +622,22 @@ class PDFPageView extends BasePDFPageView { }); } + updateVisibleArea(visibleArea) { + if (this.enableDetailCanvas) { + if ( + this.#needsRestrictedScaling && + this.maxCanvasPixels > 0 && + visibleArea + ) { + this.detailView ??= new PDFPageDetailView({ pageView: this }); + this.detailView.update({ visibleArea }); + } else if (this.detailView) { + this.detailView.reset(); + this.detailView = null; + } + } + } + /** * @typedef {Object} PDFPageViewUpdateParameters * @property {number} [scale] The new scale, if specified. @@ -653,22 +693,11 @@ class PDFPageView extends BasePDFPageView { this._container?.style.setProperty("--scale-factor", this.viewport.scale); } + this.#computeScale(); + if (this.canvas) { - let onlyCssZoom = false; - if (this.#hasRestrictedScaling) { - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && - this.maxCanvasPixels === 0 - ) { - onlyCssZoom = true; - } else if (this.maxCanvasPixels > 0) { - const { width, height } = this.viewport; - const { sx, sy } = this.outputScale; - onlyCssZoom = - ((Math.floor(width) * sx) | 0) * ((Math.floor(height) * sy) | 0) > - this.maxCanvasPixels; - } - } + const onlyCssZoom = + this.#hasRestrictedScaling && this.#needsRestrictedScaling; const postponeDrawing = drawingDelay >= 0 && drawingDelay < 1000; if (postponeDrawing || onlyCssZoom) { @@ -705,7 +734,12 @@ class PDFPageView extends BasePDFPageView { // The "pagerendered"-event will be dispatched once the actual // rendering is done, hence don't dispatch it here as well. if (!postponeDrawing) { - this.dispatchPageRendered(true); + this.detailView?.update({ underlyingViewUpdated: true }); + + this.dispatchPageRendered( + /* cssTransform */ true, + /* isDetailView */ false + ); } return; } @@ -717,7 +751,38 @@ class PDFPageView extends BasePDFPageView { keepXfaLayer: true, keepTextLayer: true, keepCanvasWrapper: true, + // It will be reset by the .update call below + preserveDetailViewState: true, }); + + this.detailView?.update({ underlyingViewUpdated: true }); + } + + #computeScale() { + const { width, height } = this.viewport; + const outputScale = (this.outputScale = new OutputScale()); + + if ( + (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && + this.maxCanvasPixels === 0 + ) { + const invScale = 1 / this.scale; + // Use a scale that makes the canvas have the originally intended size + // of the page. + outputScale.sx *= invScale; + outputScale.sy *= invScale; + this.#needsRestrictedScaling = true; + } else if (this.maxCanvasPixels > 0) { + const pixelsInViewport = width * height; + const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + this.#needsRestrictedScaling = true; + } else { + this.#needsRestrictedScaling = false; + } + } } /** @@ -830,12 +895,37 @@ class PDFPageView extends BasePDFPageView { return this.viewport.convertToPdfPoint(x, y); } + // Wrap the canvas so that if it has a CSS transform for high DPI the + // overflow will be hidden in Firefox. + _ensureCanvasWrapper() { + let canvasWrapper = this.#canvasWrapper; + if (!canvasWrapper) { + canvasWrapper = this.#canvasWrapper = document.createElement("div"); + canvasWrapper.classList.add("canvasWrapper"); + this.#addLayer(canvasWrapper, "canvasWrapper"); + } + return canvasWrapper; + } + + _getRenderingContext(canvasContext, transform) { + return { + canvasContext, + transform, + viewport: this.viewport, + annotationMode: this.#annotationMode, + optionalContentConfigPromise: this._optionalContentConfigPromise, + annotationCanvasMap: this._annotationCanvasMap, + pageColors: this.pageColors, + isEditing: this.#isEditing, + }; + } + async draw() { if (this.renderingState !== RenderingStates.INITIAL) { console.error("Must be in new state before drawing"); this.reset(); // Ensure that we reset all state to prevent issues. } - const { div, l10n, pageColors, pdfPage, viewport } = this; + const { div, l10n, pdfPage, viewport } = this; if (!pdfPage) { this.renderingState = RenderingStates.FINISHED; @@ -844,14 +934,7 @@ class PDFPageView extends BasePDFPageView { this.renderingState = RenderingStates.RUNNING; - // Wrap the canvas so that if it has a CSS transform for high DPI the - // overflow will be hidden in Firefox. - let canvasWrapper = this.#canvasWrapper; - if (!canvasWrapper) { - canvasWrapper = this.#canvasWrapper = document.createElement("div"); - canvasWrapper.classList.add("canvasWrapper"); - this.#addLayer(canvasWrapper, "canvasWrapper"); - } + const canvasWrapper = this._ensureCanvasWrapper(); if ( !this.textLayer && @@ -918,29 +1001,12 @@ class PDFPageView extends BasePDFPageView { }); canvas.setAttribute("role", "presentation"); - const outputScale = (this.outputScale = new OutputScale()); - - if ( - (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) && - this.maxCanvasPixels === 0 - ) { - const invScale = 1 / this.scale; - // Use a scale that makes the canvas have the originally intended size - // of the page. - outputScale.sx *= invScale; - outputScale.sy *= invScale; - this.#hasRestrictedScaling = true; - } else if (this.maxCanvasPixels > 0) { - const pixelsInViewport = width * height; - const maxScale = Math.sqrt(this.maxCanvasPixels / pixelsInViewport); - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - this.#hasRestrictedScaling = true; - } else { - this.#hasRestrictedScaling = false; - } + if (!this.outputScale) { + this.#computeScale(); } + const { outputScale } = this; + this.#hasRestrictedScaling = this.#needsRestrictedScaling; + const sfx = approximateFraction(outputScale.sx); const sfy = approximateFraction(outputScale.sy); @@ -970,26 +1036,22 @@ class PDFPageView extends BasePDFPageView { const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null; - const renderContext = { - canvasContext: ctx, - transform, - viewport, - annotationMode: this.#annotationMode, - optionalContentConfigPromise: this._optionalContentConfigPromise, - annotationCanvasMap: this._annotationCanvasMap, - pageColors, - isEditing: this.#isEditing, - }; const resultPromise = this._drawCanvas( - renderContext, - prevCanvas, + this._getRenderingContext(ctx, transform), + () => { + prevCanvas?.remove(); + this._resetCanvas(); + }, renderTask => { // Ensure that the thumbnails won't become partially (or fully) blank, // for documents that contain interactive form elements. this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots; - this.dispatchPageRendered(false); + this.dispatchPageRendered( + /* cssTransform */ false, + /* isDetailView */ false + ); } ).then(async () => { this.structTreeLayer ||= new StructTreeLayerBuilder( diff --git a/web/pdf_rendering_queue.js b/web/pdf_rendering_queue.js index 620eae6c104da..0020518f98809 100644 --- a/web/pdf_rendering_queue.js +++ b/web/pdf_rendering_queue.js @@ -110,7 +110,8 @@ class PDFRenderingQueue { * * Priority: * 1. visible pages - * 2. if last scrolled down, the page after the visible pages, or + * 2. zoomed-in partial views of visible pages + * 3. if last scrolled down, the page after the visible pages, or * if last scrolled up, the page before the visible pages */ const visibleViews = visible.views, @@ -125,6 +126,14 @@ class PDFRenderingQueue { return view; } } + + for (let i = 0; i < numVisible; i++) { + const { detailView } = visibleViews[i].view; + if (detailView && !this.isViewFinished(detailView)) { + return detailView; + } + } + const firstId = visible.first.id, lastId = visible.last.id; diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index a52e81fda2310..9587c0d209fd2 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -118,6 +118,11 @@ function isValidAnnotationEditorMode(mode) { * @property {number} [maxCanvasPixels] - The maximum supported canvas size in * total pixels, i.e. width * height. Use `-1` for no limit, or `0` for * CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels). + * @property {boolean} [enableDetailCanvas] - When enabled, if the rendered + * pages would need a canvas that is larger than `maxCanvasPixels`, it will + * draw a second canvas on top of the CSS-zoomed one, that only renders the + * part of the page that is close to the viewport. The default value is + * `true`. * @property {IL10n} [l10n] - Localization service. * @property {boolean} [enablePermissions] - Enables PDF document permissions, * when they exist. The default value is `false`. @@ -319,6 +324,7 @@ class PDFViewer { this.removePageBorders = options.removePageBorders || false; } this.maxCanvasPixels = options.maxCanvasPixels; + this.enableDetailCanvas = options.enableDetailCanvas ?? true; this.l10n = options.l10n; if (typeof PDFJSDev === "undefined" || PDFJSDev.test("GENERIC")) { this.l10n ||= new GenericL10n(); @@ -873,7 +879,7 @@ class PDFViewer { eventBus._on("pagerender", onBeforeDraw, { signal }); const onAfterDraw = evt => { - if (evt.cssTransform) { + if (evt.cssTransform || evt.isDetailView) { return; } this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp }); @@ -993,6 +999,7 @@ class PDFViewer { annotationMode, imageResourcesPath: this.imageResourcesPath, maxCanvasPixels: this.maxCanvasPixels, + enableDetailCanvas: this.enableDetailCanvas, pageColors, l10n: this.l10n, layerProperties: this._layerProperties, @@ -1672,6 +1679,15 @@ class PDFViewer { const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1); this.#buffer.resize(newCacheSize, visible.ids); + for (const { view, visibleArea } of visiblePages) { + view.updateVisibleArea(visibleArea); + } + for (const view of this.#buffer) { + if (!visible.ids.has(view.id)) { + view.updateVisibleArea(null); + } + } + this.renderingQueue.renderHighestPriority(visible); const isSimpleLayout = diff --git a/web/ui_utils.js b/web/ui_utils.js index 07dc55c7a7221..dd2f250eae2f1 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -554,10 +554,11 @@ function getVisibleElements({ continue; } - const hiddenHeight = - Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom); - const hiddenWidth = - Math.max(0, left - currentWidth) + Math.max(0, viewRight - right); + const minY = Math.max(0, top - currentHeight); + const minX = Math.max(0, left - currentWidth); + + const hiddenHeight = minY + Math.max(0, viewBottom - bottom); + const hiddenWidth = minX + Math.max(0, viewRight - right); const fractionHeight = (viewHeight - hiddenHeight) / viewHeight, fractionWidth = (viewWidth - hiddenWidth) / viewWidth; @@ -567,6 +568,18 @@ function getVisibleElements({ id: view.id, x: currentWidth, y: currentHeight, + visibleArea: + // We only specify which part of the page is visible when it's not + // the full page, as there is no point in handling a partial page + // rendering otherwise. + percent === 100 + ? null + : { + minX, + minY, + maxX: Math.min(viewRight, right) - currentWidth, + maxY: Math.min(viewBottom, bottom) - currentHeight, + }, view, percent, widthPercent: (fractionWidth * 100) | 0, From d35230738b1aca5ec69859842b8b513552029f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Thu, 16 Jan 2025 11:26:19 +0100 Subject: [PATCH 293/338] Avoid degrading scroll performance due to the detail view When scrolling quickly, the constant re-rendering of the detail view significantly affects rendering performance, causing Firefox to not render even the _background canvas_, which is just a static canvas not being re-drawn by JavaScript. This commit changes the viewer to only render the detail view while scrolling if its rendering hasn't just been cancelled. This means that: - when the user is scrolling slowly, we have enough time to render the detail view before that we need to change its area, so the user always sees the full screen as high resolution. - when the user is scrolling quickly, as soon as we have to cancel a rendering we just give up, and the user will see the lower resolution canvas. When then the user stops scrolling, we render the detail view for the new visible area. --- web/pdf_page_detail_view.js | 22 ++++++++++++++++++++++ web/pdf_rendering_queue.js | 21 +++++++++++++++------ web/pdf_thumbnail_viewer.js | 4 +++- web/pdf_viewer.js | 27 ++++++++++++++++++++++++++- 4 files changed, 66 insertions(+), 8 deletions(-) diff --git a/web/pdf_page_detail_view.js b/web/pdf_page_detail_view.js index 34585d5222d1c..72d3eba60d95b 100644 --- a/web/pdf_page_detail_view.js +++ b/web/pdf_page_detail_view.js @@ -24,6 +24,14 @@ import { RenderingStates } from "./ui_utils.js"; class PDFPageDetailView extends BasePDFPageView { #detailArea = null; + /** + * @type {boolean} True when the last rendering attempt of the view was + * cancelled due to a `.reset()` call. This will happen when + * the visible area changes so much during the rendering that + * we need to cancel the rendering and start over. + */ + renderingCancelled = false; + constructor({ pageView }) { super(pageView); @@ -41,9 +49,23 @@ class PDFPageDetailView extends BasePDFPageView { return this.pageView.pdfPage; } + get renderingState() { + return super.renderingState; + } + + set renderingState(value) { + this.renderingCancelled = false; + super.renderingState = value; + } + reset({ keepCanvas = false } = {}) { + const renderingCancelled = + this.renderingCancelled || + this.renderingState === RenderingStates.RUNNING || + this.renderingState === RenderingStates.PAUSED; this.cancelRendering(); this.renderingState = RenderingStates.INITIAL; + this.renderingCancelled = renderingCancelled; if (!keepCanvas) { this._resetCanvas(); diff --git a/web/pdf_rendering_queue.js b/web/pdf_rendering_queue.js index 0020518f98809..bbcb51fc3ee7a 100644 --- a/web/pdf_rendering_queue.js +++ b/web/pdf_rendering_queue.js @@ -102,15 +102,22 @@ class PDFRenderingQueue { * @param {Array} views * @param {boolean} scrolledDown * @param {boolean} [preRenderExtra] + * @param {boolean} [ignoreDetailViews] */ - getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) { + getHighestPriority( + visible, + views, + scrolledDown, + preRenderExtra = false, + ignoreDetailViews = false + ) { /** * The state has changed. Figure out which page has the highest priority to * render next (if any). * * Priority: * 1. visible pages - * 2. zoomed-in partial views of visible pages + * 2. zoomed-in partial views of visible pages, unless `ignoreDetailViews` * 3. if last scrolled down, the page after the visible pages, or * if last scrolled up, the page before the visible pages */ @@ -127,10 +134,12 @@ class PDFRenderingQueue { } } - for (let i = 0; i < numVisible; i++) { - const { detailView } = visibleViews[i].view; - if (detailView && !this.isViewFinished(detailView)) { - return detailView; + if (!ignoreDetailViews) { + for (let i = 0; i < numVisible; i++) { + const { detailView } = visibleViews[i].view; + if (detailView && !this.isViewFinished(detailView)) { + return detailView; + } } } diff --git a/web/pdf_thumbnail_viewer.js b/web/pdf_thumbnail_viewer.js index 7ec1b98376fcd..b6bdf36f39921 100644 --- a/web/pdf_thumbnail_viewer.js +++ b/web/pdf_thumbnail_viewer.js @@ -292,7 +292,9 @@ class PDFThumbnailViewer { const thumbView = this.renderingQueue.getHighestPriority( visibleThumbs, this._thumbnails, - scrollAhead + scrollAhead, + /* preRenderExtra */ false, + /* ignoreDetailViews */ true ); if (thumbView) { this.#ensurePdfPageLoaded(thumbView).then(() => { diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 9587c0d209fd2..5cd5485770fb3 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -241,6 +241,8 @@ class PDFViewer { #mlManager = null; + #scrollTimeoutId = null; + #switchAnnotationEditorModeAC = null; #switchAnnotationEditorModeTimeoutId = null; @@ -1241,6 +1243,15 @@ class PDFViewer { if (this.pagesCount === 0) { return; } + + if (this.#scrollTimeoutId) { + clearTimeout(this.#scrollTimeoutId); + } + this.#scrollTimeoutId = setTimeout(() => { + this.#scrollTimeoutId = null; + this.update(); + }, 100); + this.update(); } @@ -1851,11 +1862,21 @@ class PDFViewer { this._spreadMode !== SpreadMode.NONE && this._scrollMode !== ScrollMode.HORIZONTAL; + // If we are scrolling and the rendering of a detail view was just + // cancelled, it's because the user is scrolling too quickly and so + // we constantly need to re-render a different area. + // Don't attempt to re-render it: this will be done once the user + // stops scrolling. + const ignoreDetailViews = + this.#scrollTimeoutId !== null && + visiblePages.views.some(page => page.detailView?.renderingCancelled); + const pageView = this.renderingQueue.getHighestPriority( visiblePages, this._pages, scrollAhead, - preRenderExtra + preRenderExtra, + ignoreDetailViews ); if (pageView) { @@ -2449,6 +2470,10 @@ class PDFViewer { clearTimeout(this.#scaleTimeoutId); this.#scaleTimeoutId = null; } + if (this.#scrollTimeoutId !== null) { + clearTimeout(this.#scrollTimeoutId); + this.#scrollTimeoutId = null; + } if (!noUpdate) { this.update(); } From e1a4471ba11a4a8c7aa76a1bac85247b7e0ca807 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 21 Feb 2025 21:43:16 +0100 Subject: [PATCH 294/338] [Editor] Add a test for copy & paste a signature editor This patch fixes an issue when pasting: an exception was thrown when pasting. And while writing the test and comparing the paths in the svg, I found a difference which is fixed thanks to call to the right constructor (to take into account the inheritance) in inkdraw.js --- src/display/editor/drawers/inkdraw.js | 2 +- src/display/editor/signature.js | 2 +- test/integration/signature_editor_spec.mjs | 56 ++++++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/display/editor/drawers/inkdraw.js b/src/display/editor/drawers/inkdraw.js index f725a6924f530..2af5a48f17c1b 100644 --- a/src/display/editor/drawers/inkdraw.js +++ b/src/display/editor/drawers/inkdraw.js @@ -552,7 +552,7 @@ class InkDrawOutline extends Outline { }); } - const outlines = new InkDrawOutline(); + const outlines = new this.prototype.constructor(); outlines.build( newLines, pageWidth, diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index 8aceb8b3da9b5..c6f7c4eb7ecf9 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -391,7 +391,7 @@ class SignatureEditor extends DrawingEditor { static async deserialize(data, parent, uiManager) { const editor = await super.deserialize(data, parent, uiManager); editor.#isExtracted = data.areContours; - editor.description = data.accessibilityData?.alt || ""; + editor.#description = data.accessibilityData?.alt || ""; editor.#signatureUUID = data.uuid; return editor; } diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index a7fca3e6f396f..708baf81fe616 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -16,9 +16,11 @@ import { awaitPromise, closePages, + copy, getEditorSelector, getRect, loadAndWait, + paste, switchToEditor, waitForPointerUp, waitForTimeout, @@ -330,6 +332,60 @@ describe("Signature Editor", () => { }) ); }); + + it("must check copy and paste", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToSignature(page); + await page.click("#editorSignatureAddSignature"); + + await page.waitForSelector("#addSignatureDialog", { + visible: true, + }); + await page.type("#addSignatureTypeInput", "Hello"); + await page.waitForSelector(`${addButtonSelector}:not(:disabled)`); + await page.click("#addSignatureAddButton"); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_0"]`, + { visible: true } + ); + const originalPath = await page.$eval("#path_p1_0", el => + el.getAttribute("d") + ); + const originalDescription = await page.$eval( + `${editorSelector} .altText.editDescription`, + el => el.title + ); + + await copy(page); + await paste(page); + + const pastedEditorSelector = getEditorSelector(1); + await page.waitForSelector(pastedEditorSelector, { visible: true }); + await page.waitForSelector( + `.canvasWrapper > svg use[href="#path_p1_1"]`, + { visible: true } + ); + const pastedPath = await page.$eval("#path_p1_1", el => + el.getAttribute("d") + ); + const pastedDescription = await page.$eval( + `${pastedEditorSelector} .altText.editDescription`, + el => el.title + ); + + expect(pastedPath) + .withContext(`In ${browserName}`) + .toEqual(originalPath); + expect(pastedDescription) + .withContext(`In ${browserName}`) + .toEqual(originalDescription); + }) + ); + }); }); describe("Bug 1948741", () => { From 8b67223548463071e7675ca38de727c8f41662b3 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 20 Feb 2025 22:34:46 +0100 Subject: [PATCH 295/338] Provide a js fallback when the wasm version of openjpeg is failing to load (bug 1935076) --- eslint.config.mjs | 1 + external/openjpeg/openjpeg.js | 2 +- external/openjpeg/openjpeg.wasm | Bin 254794 -> 243150 bytes external/openjpeg/openjpeg_nowasm_fallback.js | 29 ++++++++ gulpfile.mjs | 15 ++-- src/core/jpx.js | 68 ++++++++++++++---- test/driver.js | 2 +- test/test_manifest.json | 8 +++ 8 files changed, 107 insertions(+), 18 deletions(-) create mode 100644 external/openjpeg/openjpeg_nowasm_fallback.js diff --git a/eslint.config.mjs b/eslint.config.mjs index 887e013bbdb02..27893feeaaaaf 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -39,6 +39,7 @@ export default [ "test/tmp/", "test/pdfs/", "web/locale/", + "web/wasm/", "**/*~/", ], }, diff --git a/external/openjpeg/openjpeg.js b/external/openjpeg/openjpeg.js index cfdedd431de20..940a250f051c5 100644 --- a/external/openjpeg/openjpeg.js +++ b/external/openjpeg/openjpeg.js @@ -5,7 +5,7 @@ var OpenJPEG = (() => { async function(moduleArg = {}) { var moduleRtn; -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){var f="openjpeg.wasm";if(!isDataURI(f)){return locateFile(f)}return f}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["s"];updateMemoryViews();addOnInit(wasmExports["t"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=Module.HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=Module.HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=Module.HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=Module.HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["t"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("openjpeg.wasm")}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["s"];updateMemoryViews();removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>numINT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=readyPromise; return moduleRtn; diff --git a/external/openjpeg/openjpeg.wasm b/external/openjpeg/openjpeg.wasm index c4bdd4dda9cbc5ed08140a8876e0797c3e13194b..4540ce20ffb48e1d239d696268b82400e7bebdd6 100644 GIT binary patch literal 243150 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π=@Jy_Zt#P^)}V_ z{UNy5cP0ihjyL_HxS9yqlTaqq?7F1w^&0X*CUNyJc~#3>+dQEm)g%u9|6(+oy!#Q9 zTweAA3SAI9(${RVH0p_(au;^FvSjCVG=geB&P3b*Vd%H!Lx5zBM4hV|A!2Em8@1~i z+>A=wYk}X2mldlG6d$AuhO{mCC^#lPMnB z9=?kh(VA=e#E~bnPd@C17C$U1xEPYC`eZz;MEHaw3o6lxctDAUNd#6t3Vs1iTTPOC zKK2=g@t6xaw@+#WNm7SW)+(89@A)eMN?wMV^K^uRTs0b6hKg(pi|Sb8DzhAys$-D? zJv(eCuFA9HneFHsK$5hnw{jb}n%-?7m9>nuQ=`_Z9eGyVfkf$XH>gq=^qC>N#loMv zW&Asn_)|($!^&A(Q3nF*H7UPvo!!b}n@Kr&hGYOI`(k4BF6GlUxM!9oXAGHY&tA7A z8#cZy+jE_=J-RXS^Vx3zU{EIOnp3R5dK;Q~_h@;b%%l)9>Rb-iNS&Ik;?)ISf4qXx zkjO_AfKav|<1#y2`4G-?V!ASsvN_X0mWeNgOeQo4CCw=)HN(&vJN_wa0XXbD^=oN> zrhlUWQfq1C&xgj_)diTolsFBCrV4G(H`b&Bz&f>-X#BJQ`4 zMH;|nrgt0Sk@s#t_dSF+8FDq{a1-xJ&(nU`jXZX%hz!9HN0rg7$UeE1{v%{cbdDAZ znhc3qr+_bZBas^9xOD&C$WYcIeOrs>0r;XGY9659C8N^9-KaP zO1(I7WYeujjvbskeP}wke&Ohe>yMw9J~ne=`l0Jj%^$q}fg{JRKY0A;(c`+z9iM;A z!64bYcmIxkZ+%OkX5aJHyZ7IB$D4O0JKqxAliU;Bd*{CWJMZ0p&%O8U-?`^4`}QW^ zx&OXBdw1>MbI;CQZ`;3T_x}6#-W}|@XLs?zf8Lg z@7Q?w+Be$!Qw!54^zM|~aCGA|FW++SeeURi`Pu1t4X)GRxb>$snsW!{Np|%3{ItE@ z1jrYF*5Ly}gVV%%48E;J&+k$|Z^RXc(#f!Q;x(Ph%fEaC&aRH=Z}^ zPxU($fBe|=u?4sOkfrjkvL|<+I(p>Tq3N?X`9kjYK$tsnYQf&@0Gnyo^ns&3nR{^l z_)$7buYH4-rlLJ<6TQV3Gd({Kgx_&kHEV7hIrfmdbKmRS9X37O1INz}1iKBg2i(yk zr%ucrILIWsX8l3`?;53W$4@h+ho;@kiPs(WS?)eCr)f!2751P?_tW$y9_CLiShl05 zbu&$pUAMc}ZQi`uojUT+u>%XI8C|RR0;QZ{W;5KXJuAj)S$OA(H1j(Ey2|EXN;o>tC~#Ea2GDg9~q5Z?_Ed19P*d7T)>B^;c&v3QtUohy0g4 z#}=j^0_%^TnVx@e?)W=|NDGI~zH$BOja;AVo3{8fM(-V+R+G9A`r11T`m`>7;~Q9|emCf~Antd_8!2eqKnf z`3?nJ0Phb?KLE*}b<=axKIbmOyA0#rvJcF5`aRe&$(s%W-g)h1M0GGxFN_}_Iy{07&o~ib92)V9hmde{rH0q!h;$EkpZF|z#2&T z0JxdLY~d8ME(d?gEZ~~%^eM2e(MX0IwABcsq1y5so#{OJ>#5Bv6Iq?gz2 zk;7_+h##LjEi6;^3s(hun`5^5v>BV+w_~pj-)r2Pr%!;zr-)5>;=tVW0zw5DP9Igl z{{#WxxH|?NICc7jQn@$ZyGOk-fQr)Hai0Os;MQnKN+d*EfGk{P`oSZ|=$-MXPVFr; z(+NAEiSE>aqtou#>7x&5N zfOl>yIJ~el-P`sWK2uL4>1(&-X>-hZ=b^VF_q$%xJmst${!S zBx2b911C<*y>tJu2fQF>QUS~yGUQ2FntI>-aj3#k8y|OS_Q;77p55)bJ!1wN#rDNs z+vUipmH1Vs44F{sDP;#x9XNyxI+xOp3#2&;>oN(TLz)(#Ht11Crm`0A+m}t(4kale zv$v7TlesK^Lm(Rnb|R%}PCYaYf6W+SF+p?IeS13<+Mpp9YE*|*r%oVcZ!@e9` zyBZBEylmn*ckj5jk-X{4n{U6T!%wz^V26! zADM>$6;n1ByyMNc=VfFlcw+weLlD|i;^oXIXb=-^$Gtn3Bzz0Z!xNv@6fKn$@-}~Y z(~d@|JDOm*V|(LEbDn+o?#Nrx{AEYSFK>d^XEUNX&)tPD1t2ygKf~~1svN3~X=8Yu z>k$R9dLa1!Tf5fasE#Y$Bk|G*c_9|wwReLr0wrQ23q6dTC<~G-$q88=0!e;s*62Ax z6HA(5W`xZCK-6M(`LS!`A9?V{5NhpZ{lj3p5|Y#wBDL6|HeQ3P?BG_kdg48^GHs?G4NJ116nG=sCqcm;8Dsyj&M4omH@t`uF z!B{SJtVuyfV`vq>d&v)Bf(~83E#U67t`+H|5*-6c?Vd?fW;V$D22KnD0Kc5phy-fH zqQY+5XPC9XyMU_>i&1PE(bF5_@%{|S6)T3)Bui7HDV)Z~q~wcrrgvmIJ{vlq!StM9 zpN8x2j^CQ%zP@NUvqXgEv>9KGx2_HiIjA}s_3*6es>nhyTfYw2gjEaX7)B+y=r>~j z-I{FX(Q}7gtRCq0fdQ-y*rS#~oxJfda% z5f9NjHlUErwDilVOe>u`3}5eHPfs5jV&=zn{5ghbvV=;gSbc-DNAPq26C2CiAZz+Dgk2%86~q+$2P3c2wI-G&FitfDFP#A=?1qRSc6;tae+0U! zEgnymtb`z-7k#W_C(0sX&;?QP7w#O4_I0Uf9+ry`Qj?j zft0NC4VC9@zh#c7ovd}NW7D~-Mti#xbok1gM zmc}g`;Oa*Zs9~G2ZmSuaOzs?jAad<@Bkum_qs9c|{zn!J?aH>ZrgCes5AOBB+Y$9; z_zURbq{E0-cd5gGmMNczMU%bJ9t6zH3+(vY5P?aW7qkHSI(A|e$_vzi7u>-#EN)=D z(ztx5&0q%KgDME4gi;+q5~)+1}sN z8Py3~PxVL}%Slu<>ZGxn^ate3`-zcP;n zDnnpI*P(4owwNkUV{}-{M9h;?3GIshj)9#HoCp2J1^_6Eb`?g=S&EFPsmtGlS>MZs zua_TVnVDtFoNvL7W2arOlNHanSys=~4GxhF6+W<5`gF7PFEP|8jH%9>cPlQm2iBSm zNY2ds(aV1%JcwbhDE1hPGKd&p!;sc0}riUUA6itiezPPa%Wf9?G>H9WH6HLn-u8N zFwO@h1`MH>ecNvF4)lA=`ev*VOr^2xFe_fr%x4EVUo*PSS=Rsp9UAJ6VV|QtPXkjd zjK)p%?o9cjb`mdidZXK1W4Ur`Ri)l_;?cH&$TK({OmxM$b6A<>@)(Gf^K1{#ip;`^ zzB?$~6;JftcFpmwJ1Crpcipu5qf+ z-fsBBpNc?`5N>@%=s#} zZ#hgWqn!YwBZiYioNJ?}4DB1&q@@Wb%4^oNY{UZv?|=t`*`BcbeIL|A_aZBDi|fzA zDCkOI#L;sEmSFA~7mz9&n?SUGu;1tXay*D}6+Rf%L#p)wXg?yhRQJh9q(A8l(F=m< zlh`R+0D{Rnb_)`#;BRGhL4s(xVJxwi(5qv>jIyI65@?KfE)1@6fR*&s@83XpI40YS zN0O~*mp;63y$P6t;K{21DcFZSG1AfXg69t>g6AkkkZ`0Ro<9qC=bZini89A-z?1-O zew$g69hsCjA93ijaeC%elpKy{yd#-}%EA!ft)Ig;ot9oqrdxedh7cpEDQ0O|120zS z?b=^~SOBS5JRa%BY(nkf2o4D~$_jx&2j_l3w*@a<7@Th5HU}IUc>miX8~_{aG)kKy zAVzyPMq7?(d8oE6GJr!49#F}0BsYv`7v0kxIJXv^K~bfwVXqjB+bbMy42B(}%I^@1 zsvo9YGKrO-m3?B?3PrF?(84`iy;XIYuAV1`;M4;7f(acP_^Mo_K^x#DvGsD=)E&k7 zDnq_yPBRWT1i=tG7DODx8$Fd~mm+Rm$Pp+7Bp4Ct;6dNaHPH>HQh{pgf|19W?$H{7 zOWxI3;&O51;C68&^!Y2gZ-)Yn$|nAg_rm*P&pabV#K_2yD?OYXR~2WLcgvI_HrJ<* ze!CE>8^8r23OSbf(-_Sp#tdgmoj9`_!qp&-D8$oSH#np6EfXW!+*7huYduY4sF4CS z;D{~BTO$5J>6S|sJ0XM}+d85H7!K_TQYFKlf$zD{UF zjHHchNU=nO1-XPXD&z)Zf_8LJsK3o=zE79>hMN;o%0a_m4)(LUC>#JbHG&8rLZTj- ztw4XOC>`f82Lu)w%7E_{%JY_~R0R^l&({m-#U{oSafl91(IYf^!sD~JenenQG zp3E6kAlg7*&ut|guxbe|wt4;?3_Wuz$T)m_VbQ38OOoz1=S;R}XU!TMNV6%jRST$_ zjQz<3Pwm!(-H&=wLMmkrOi2!3M_&?KP!xwZ*cbi#Cd88VCl|knDQ@NHofM_)R_Wi$ zJk=rk3v=LlE;LU;RflmETZ3cERZVhi?a5w@p9z(qJ$+6+4E@1`(`>H0=?EWG0M?JU z^yPLBB4shkgpRX77SJP1AV-RN$~}yr{;;=qC@|jDAY(i5(8ExPvbo*DJ@C?RBJf=q z%B((Ua)M(vmBg)FPL-Vvjq9x$f#>$Y$UqmH>RC9LDK2@;4%T*RC@Scgrl`3E25=P% z8z%tOY@)KF%v*a^3k9wOVP}V+dBTLykE^StjoGtpmf=JBt zxAhPiDf1)glO}l$t2Z`;>66une&7-WDE(1*cfU2m0{&Lz*=50igscp+FLRl*8WXfL zVG!!uRs3>mq!^-DV}Crg(-$B^{d#AwcElJiW}yZgkK#rFZZt65u$_WC$4|BdS5sr(??Bb9@MX=FxJ{cj;6)XT z1Di*g%`a(N_9qbFITFw!l62&XH!VK>~6&*U$=6!W=WrN-lA`403D| zXu(>aM2|ku&C}>=?2Pefq*Z@8-<YpBvsn(@ zFoRr}4ldnf7RCWwH;erVQ-YcGOPAJYdhVXYCdEFZ;yWDX+pF}>XMdJ@pYR%c$8&mn z)qcT)yUAjni|(~ zMN*{_Y~R{`zQamzsaGlyo03Zn=Opqg25s67#u506h-pE+s#}?q+d(uJ;L15W7#Zh^ z@xli->Y_Ixlqo^9O&6j?LN><0#Q~VN-|3St>qQvv*!afXa#NQ%D68!s;eVE7^vket~I9walK>iYJEF+sHAuh$AR*_BMC1U*L{8OEHMXJR)rI_$2>SD;e3M$U`q;(Y2xhzOQ&2jmQLBMd8EFNGs%#ElWfKHl_@ z@e+CCv6(=$K3z))tI{cnLkGaXl<$Om^WYGbQr5okN*f}{coeZo`hFObWos}6Fn?iD zN9FDy+}KrUB2PATWB|b%X|h&(l*jI9PY;|}n2T~Jh?D-^@~5i9`1O{207!+>Usfa; zv98G{<8@eZ^|%sj*AbKm?`5JWLQXm^1l2csCjn7NgZ&Q_*=UE}(WPDls_ zin3?QW;?(4I;5{$VJInY=H~(&QMn3E_Y1Ac<|b^y_F}fQ9$d+f;nq51N4Q*Lk3%@1 zxGGcaR62jN#%bzog5%4jrgkc=aPL-z-5`8eVo<|B`^pW4t-1mj5(RX zdc}1L)C*ULr-h`kj#3AlT6>$-@kYhJrE!@N_I_?v=19a3O_iynXQXpJsm(rx4Yv`s zZ*AKibhSj&S!XPXGtmmPH=CH;J`cY)7pz@$_amF0pgi@Oc%)gf9q8(|K@gkQR30|q zB!N{o>I8=!Q9x*jY>}%n^yBf2pT5=CH??iv*wWncr2QQdWI}%1#+$sD4(|rC)$MY_ z#Qee|IoQcx@pvJ1_na&yKPLT7<=^tBrH|BYY-kqc5352VWfF}LYtGX-=C@LC$8qQe zA%f`gmz_7&A=@Um8==R^M2h{QHn#zwYEh>=v!GcfKaqnasDJS!(H*KixnS&$aUdor zNKw-!tfMVS_W;HGstS5Ujt4#K81hMbMofT}XqHydV$o{-VNFwpC|b}Aum5PT{gIHi z==ymdOd5e^+L6Vam=Fxlyx5VMYY^21I&WiPP2mlQDfgIjfjCw@10e94&7HrpFczl# zuu}|EH#TLhaJ^?p^cT$!tL5q?Rj+!~9yNBPP>p`DT%A}{ucoi>QM;U0)wX%LS`GZh zhCS+?Q-$ix+sjq@BJc1Pt+LxnVRx8wpfX}xys50qCKl(u?|F+FJm?ho6^K5@5$}iUKf7P^q zR|VRSa&Mvi9FH-lK`lkQI6iDY>9@9^{|&l->C1Y2UIxCc74@Z_RcqM~XN4M0f&Zxn zH9eunhvV<(e*^XT`9F{G^z%P+I+K4az<=~z(EIpveEj@J0Fyt*k@HhinXAsfH+5}# zvJh=-RnPCsRVOO$-N2j`#iJ9b*jFXf-}PkJkVGJh}V`G56r zp*s2s#{XxK50pCr`ZK3M-+=kQ2Kg`2>&MT3`T)xN_#X$IpZ~c4|4mp|e*WVZLGR-~ z47{KJLDG}|4$Z%&g5$GSP5*Z4%C7G8<&gszzr)39yl3j#V`}Uo$Lqw88le}aCVEtQ z$3e))bNiNHeqX{GKL4Xl82=NmgMM=A%0ST%u--xcO0gP+Ogse1igg1%(x}Eio|@R& zF!s^#_FT2LatX%aB{lu|JNsPzLx%qwn*WDN^XL4L|M(@%pYlZh=g@2Nuc8s| zLZ|N9uH}C<`Vac5v5z=@e*PSP;eS!{*Xw65`mgzG`CpCx8~$7$;|KoZpJ@JE&p$x>DgWf()-rh+>-Y0>YI5QpH8nk)n!L7a`_$EuHzu!)f6Vqx zUVgP`F3L|%+)(MsAvJkz>*A^F!-JDoMn4$4SW`85`NZo}pP$(`IWhf5&?hIa4XCNB z#}(*%(toI_n7sU=0{t(5pGtqW4fJ18Q`ev02m0Tge{WTh=6~jt;h!-44}kuYv5&r` zH2;4``=)QCCm%Qbe~9`=-ygg9F!1F6E8^4O-=p~-Ju-RaLk0eohW~4m6XTcCpP|3P z|DQ>J;QV{{FTPtvRJ}T{_Naf|w;Vd_Zb()=bjTiz(sGRR-PoV%q3icRPcMf|+^xP3 zco*RGqUBisn*JS>C;d{?C;Kt*r2o*+pD^^(z>|J0;IZ1}(5JKWA4hv;n1*)+G7@k3pFy7VmcMPE<$uuN$MF>U%1r)84SpJY z$iEHA&wtq9NAV>6{oqf2 z|LS4gf1%&3>3?YO?B_#BHK5Dj|GJ^C)%@9ip-*V~gMeB8IVAG8<7xRHJ)-d(U-ECm zQ|QfjaQ;Yt^cBsY_FH;l1^S<(e#(8I2X+if(7vIbIC>;UeTEv=R?vQHR3mR-AA7wJ z_HhpM&92RDuzS*1R$yJgJ}iQs!G7}==()e`06q7g^R=MIKKml*xqqF&zB&DQ4)y6} z?q7cX6Pf%+UNiiYntx4|mX9$fgmo5z zUJj`SJf|U7OYr1)J&R`#QZW+ci}-QO8^@pHOZ-NRuh74(@i*{}^qfE9DPN@L{E>bX zDP8WZAD91W!yj@<`XMCJTmHkylb-WS{tqJ&Z}}fbp7;?Y($^pnZ~6ZadE(C@kw533 z_VjZY=ii_Q(^oN`lh`{%9$I0Caef-WA9kn%`G9@$dv#sx|Chmm_C)$h1IC*6FX&-c zq%YIQD(q2tpYY_YY#3Jrvn2(n0M!uGa|B=BTa^dGs``^!>cB`Mi*tdTE?`QHC z`S9@{MSXt$v=2TLdFL3sq(?7b|bMJuWKXWQq?JB~!y}JTqkiN$HePSSpFscozN=WDKf(H(f*mn-qz3#l_`j?9 zPyf;IZ^-07oY4Hoi!}dD#QXSVF4FO3k1X4Uv>2Z%e1`DBYx#s8)6b^OO0^>qW}VFQUFboLk0bx7 zfr;OZyxIc%UugV(z)c1w{t)1Hz`qP@{4v1C3{3ne z3ZG9~Q9lx4;-MZ?J7C-XMW{>KW7_WkmiD3!e#!|Wg#eSjmgSp~|2DC@?ScnPe7nVe zUC=6S=>ZeJ+v3YLem~$Q)(4pQLx9@}uh95ofa3-x{v_btg#Sw8&jLPXVB#+TK1ui< zgGam18d&gvFAzq5`B{X#GBEKD@}Hs(_LrY>A546$Est^LrwK6Y2mvO(9eLJa$0v?F z>mW@0Zsb`<$c)c^BwWP8Xggr?AWVEMVDhlz-vpRE2ov89m^`d}$B`!w z!o=@J-XUz}XFu}g1}6Rx^0kBu0pN2C`6dGse-in2!e0`!$bQ_w#9u&uH{rz^|0(kO z4NN=~lkl+XYZ2gMz!N6k0Zbmh%+vJcfX^D3_*%f^@#6&=&$UG!go)?cA`iPh6ge`Emmje+c77%c?G#Y1Q#dW?;T@0G|ZBSEE%q;IjrMz7{ZftTXr~z~n)g_;$e5F~tTS zN1i+g6TcgI2Wg4H??=Aez{DRyz81+0zdD9|lYxmpiF`W}hEqOgk&hdg_zTGIMq-{H z;`bZa;tvr<;^$L5nXLX+kK-j%C^t8hlbbtt-u(IVkb)w^K{!}G2+y6jV8J}3`SW!O!uEZ(Cu#lk zK{y+oeIIOZ5DvCC2($10{s-Y;`5+u@ZxFWa%=QeH55n2#?EBz)55mFq9)yGIB?t%Q zJqQQoH3$dgH3$dG2jO7(ARKIO5DvCC2nW}D5Du0P!ol_i;b41%aIkz34wetXDmOGI zcix=&p*cBo=gglwKM33RIdgO7&ILXQlXl*M`3p!pAI~6c-;`@}H-3V!eV^?atS<;>Yqx!$t=`*xpO+U7Gc89xUZ( zchfd!qK&_QTB(J2-ix#a`9eJJLuxkpzeIkk$_%Uqwop zJe)uEj487c`6iS9Yvi9a`L7{AXv&u&KVJRd){0C3myDeC1IHL==GA z`zw@LggWtD@@IHGhhHj>6DHFJ+z88j3H9N*RJ>97%F~W3zVVlWbl-jVsk(nW9m>DU zLQ+Yds(S-3;Rn}^;JM__`BuL2IJ+{(!2K`F+@tFLfM>TjRq~a0kCeeT{+3r%Rz0}- zp@+Zzjk-tb@oyjy6*p-+o--vs-sbhQZuftO^1p0pEY8-+=XODaPx#zy`ow=A900Ybbv(Ld07`zA&1VM;|NE`?N34$*@Ey+?!+p;C! z3sD+y1XB{ofkc{OTBc!a#g!YSrX4j<6T(&+#*te!p;OkDYdNA*JC+;$!6s_0e5(4x z=9A{*#u~BT-`eNix$^?)M-scA5S)AV+3&qxd+oK?-Y5EjM?UPLD02Us+wo9oadFWt zK9um#(=A31#f$tny(!V&`#B<_9$$2iKNJy7VDX`{3WmJ)uGq(m*yy3ErCNHu2--_? z@M5o(@Je+Nf5lrw;Ia~kiWe{Qo6xr2YW>pDa**hLV|4BEqPwg@QT*XC_XF++qL|+w zj1qo-D02LMz+!$l8X^26QI+2hMkRhfWZ@r;%7nX?rx(=;U$EZ~M_UL#Z1sF3+DiDN zQH9@m`@I;IO26TL-BsgqCEiY7&o^CQ5N!iMN%i zRc%*RpL%Eu|2LAcs z?k~Eh-DliW?#JDe?g{s4_bKpWUyy|Iz(@_lxfDxfk5ub^opVJMK&F7u?Ug=iT3Sf6G1i*0;asfxqnDd&l?v z=k8ti-uKQ!d;fd)-?^{2m)uv~|K$Fm`z7~3xPRb&#r>+g{G$71_mAAW|EBw|-CuV< z+Z?e#f!V5{Mn?JC9_d{(nn|7Ji2nIuDW}X)zIZIYm&fl#$Ku)W`XB|O{AXPE zSbV^OpH=W3YT~v?wZ*=ae>=+mWz>0ujL*3)ZCK)KC0Z|gw+SL8=Glal=F71wFZw7s zNnQX^QumY8`BEAaQ|swn4L&}fMR$>l*j^UT#YyHok6Knf7S~kku{fb|paM*2sGDi% zS&6t(mzsG|aUzq9j4H{PYAT|VG-xGbRirVv{PMiY2@e-7Dqd8B>Qe@&qWi4NrAwg6 z(D1>Ow(=dm)Vq`?j{t*sp_l)D)Ftw@nfuz&_WVwQJ1sp{x+DEpBl=17oexYkGnXd| zRQ>922%w2Zn*RY|8%XGCY#pKRo=}qi!EZbL?JY&8oOjordh%8v+x)fIC5v>M;YBe3 z6Bz)jZd%e?-Z`g^Lrkv8y8{4m_W@CgFWJLV=w7FnR+N~3bUrJK!b-l}OG~AbzTyFk zK)n=2(Nc?_75^=@M@QPNW}{xKR?0~!cF|HZ5(#v=K)!re8|=rve70>Ji1X5XRyjkT z%4tHM@+gfIq#Zy6L3npCGRjJF*G<8c9uC+DGQOhfn&3a~<(JR5qoUZL5NH5}2O}ri zEafG8iNlM?O=%^)0(@1Q@SvBmRogt|++uvv_|l7~a?y*skh#w8ERZa(olnAqDXbYc zH$~)4PUg{QQ&~H^n|r7MUhB{lY)}&3TB-xMM!7fyK#L82uk7j|ttbqsSv@ss-!1A= z0`-mOVtIPx^1B$UkK#qzaXA!zd7fwOzNxI5BM4l4GPa(Jry5xzRzM1L#W_({2mbYL zR$FEZDp9IB^8hUwe*sf*2|b3~JZy&O@HOaHQ8t!7i^K(sl<2n@SS%73ECPP}EE2;V z@dvYVV36{FLCD%?kQfG0It)@CFh~rrj6q^CNO`~@5M*GGGHnJafB>UsVh}>B7$go1 zf(#Oiw~(p~=X@Jf3`rA;Q8q{u2`j*4xl5ukSAZwfpo;nsFrg7ZsC+#uq`(_$l3>y14K#(L~ukQLmVwF%aCLUL;yiDL=>Q*nfTujM1>5= z9ni_C)0gjSyY28~Q$)CGyv)laLVs1b!Dbw|(pP<>pnwX3qI!O+b5MlqU0P}SO0#+M zfFYdb9+On9Zr&l&kEO7LCNMZ;s!XE>aG2wF(1Q@ZlG=x}vIK9;AFa(XDaGGyL}aBd zdqZ?GQCU`G!m;?UUiOxb`}o@BTlE+v@4@JFp3GB6dAXi)Q4ejTR4wtTvZ0lJt*Xd{ zipu$-FHen%8&%6XHK`Lmt6GOtE7MNDR_jqx^ayk^*@=3B?6uy9g4A9*Nek2zsr+2r zNh{&~WCmNFr)9xhh^=gjqO77`SMtTP$;nn(a<-x@mE~bphQPI=b5bt;1Yq^$t{}@W z;(lM4SPw&^))%;qc&Ldi%V0@F6zc*dKtp8&o3gKT(=s$ToEzX4xE59lV8XNNM=4M8 zfBFAXb7yR*{<#>mGnt=8a0q$Lt#syK6y<(i@>N}rI;Xccn@?2ZCTkFbHv-j5CW5ls zRYN!ZpG3YT_bV2}WYW2W9pn_^7D+iNKroX?&M>7dLe^xQo+4A6NB2@Lw&C#R=B*A% zY`uXu537jX;{1EBz4lslK5a0msXnO%Jn3*+w}`kad{ehdLhF+@)1`uO%)BQ#JqZF{ zWA0wa7ay7TbpjXjE8i>iBS^_>7Z)zlG0A>Zm{P_nE?IP`h^`mW zoe-@uXQzC%%M^AjMsgT#ByATUy?EiGZ}>XDm5bMW6``NCZY|Y(EuTSh#Bl0r%z<@9 z8UR<|ElNv6xPuJA9kVVo(-6{l3rLgpLRx{eI&iD3MVzsSzzcKGZ`HLDalpPHA*RIv z;-Kga5GQTh5GSR%qM9qdZiov=lh&lBl0MSj0a;Doy4vi9nc|AzVap?i zD)1-yl^2tF;eo=$p<3lv1coc|xy(&otecBpE`{QfErox)MwK zx(T!g_5R*Gx?60msynBJ(IVK)BG4Q}+{4>Va)jm~ImDB%=B~46d-G>qp?t&SQUk>X zEiGjvxurb2v>c!GB`I&fy0##0oEN9I3f71fb9O3269H7xz?>dQ(9wewkQ&O20ZK1g zQT4K9+Oi4(3-pP3qpeIlA@&CC8oW=MJ87CuX_T6d<^(AuS{~ga-~jegu^y9{bIL~F zvp7MDrLM?~G&*{rI~O0wN@OT8zbliJV0Dll$LG|T>IF;9&bWoAtvY9K{4{@Jvl~TA z1s-H}Pp-!z?e8MQmt*(+Z`SchG4@4W;52a5;%!<1w8zg;H2-t$%pmqH$Yth;a5NimFHP)a!l5E7cF{k***YBBviEF-bekyGtlf+dj^>j5m8dHL z!6e1>fe2}euYC&>3IZd}z4hJt5$7kdhtRE9zt^u_k{^oz!!C**?hT4|UcV?pW*}W! z0jR+3fvhc9t=lO9=ZEeb{u=_$x_!A`iKcJ*5p>DXfVmMcH=?L>Q|P5-VGi>GxHGFx z-8z+)uv{=Zl!veuFc@%msq%w&4*v~xFBAz_3m6Qz8_urqpa_|SH=2}fZKhUNiOSD zpC@zZd2 zg$G4IpWy`UAgvZ0734RwZ=avsFh4Pu27U^YvKV~B+L5fo{N(ZiD=HeWa^0dfX`{b& zQ5p(E`kljnLk(}lB*WPi9u(;_ z3A#$L+AP=vf?xsh#su7kwZFcAyKYeva9V8+)-t}voWFr+d!%yyqth&f@_WI=2H{BrK)itF%Ps}dHW_HX%E)?GrUz5|Py;VW2M$WG zvPt9pamS?A*LV}{PFPLF&O|LOi8sX94O<~%Q;;oFcEHYLRyre{Se8xne=|AAgsH@C z*tO8w$X0u~3oDPB+C3HB8VeLI|CK{Bh+tUz$t12U#*eEbNJAtDYlnF%H?uNrurTNE zd{&*pBo}rVvf4Vf=JhO?+6R#tbIm@;DjTNKSL}meln6G=(zU0v`l;w`2J^bFeinL8iZ|oJ!Z@{n>HGV z%-UGG^^hG{Aq>EPkzv$Nxu-$M@IDKjxb_#HV4p>aKi;%{g5?58X|2gFPwnGZd$!7} zJ*Y)sSYu#d80s}MWbM=y{!8A$uEM{NZZjB16q;ESE3?4?1NoFZ@SW)QfrjX~;y>yS!YqlMdOgFLU;xQtl#6s%TpHn1wyd6N0^cbEi)~tbw3otBnzMGYufbxj zd44Jz$H<;e`*D_a=~f<(&Zql%U^$!R0nnyssZK9^lb;@TxeIBkZk<)~+4=MUl{b5S z`-SudzX#Q3Czj)^aUrXB)7>P^b<=~;2yZv?U?F#bYP#tTzc6%d{D7_d5ktu%0YLO&K8)C%%KVOrTs{hY77<$9spcYx;s@q&8xDxj-P3_{BA$y{e^C^s@g)WDPh&S znO_jl;T1?uKoFBM9#g+q$_iVGG63T-np78jrD&A`TS#)O!p^1b5}o&>+AYIQ$)C3L z8eTIhfNIg%rWKRzA>y5tJ*K)tEtg84J?2o4AX$Ffi(P7UVWflX;m#-BY;aI7f{Hsc>sh? ztFB?ABLmT_Qw+VHmw>i90@Oi#007;(n6--}L-9~jym3-#{iM1eQum!O`Ot$0+I1ns z*L&HPe3YGNf1^=C*6z|1^$1E35J#a@^-LSYSWt^M-}VPZG-Ny{b4$^ENV>kXDeV5b zD2ihKO8hPTyi0GQ@D>|**C;>+?3TYNFD?CTmmOM~VpF^g=4fh(a@paf_fnc1B)P7) zR~KI6;x!JhrQ)^ZZ(3?4v^M+~S{^0{-|<_{wj094gs+1?0YS!}c7c#a0d?z30riH6 zrQs(;6%)Q4h((JX?Jw7DBqv7zDI?vi4Qe)l$0Du`eG}Jsy*OonIg}lCD5z)JhHcGlJ=3nOXiTk8px~c^skT}- zYfX4&Oo*kb(L5={hb%eF0Ug7Gy5BCh*!Y3fs%u6hidbrzWEdLLAa=#5UMKbqjI0_) zHmK-2W2-hxn#}8dV!+K99Q*7rK!kB~LxwAohUrSMg_}1@f}7V%D)2F3+zcBVKSzCj z-YoGR_4@#}w=jE6UVwua!B5?K(eaxsN*k)=y)M&k7SoQcWZLq-Kc+RwjBMI0-w}<{~y4X2bp(>z&_y$u3C0FPJt)LG`$QLuVG=h4Vn>Ckd7AJ8R*f)J3 z66e*?2kLKJA6P^C@VL<(Fj!6dA<3wDD9LDl{UoFPwMlP?_KmF;BcP}oMca?DtkuVrS~DT-W5kqKe2vFCc+M_ zKS>=zE|}KxM(KSmXxt)03DbB>@k7}p@S9b&`CUMIE~mWt5lbw^iB;e(0_92FQ_ zF}@lTo$s6p=44^B6I@2DNS%3wR)RhcJW(`5YF(hM6Z6MSl~}X>Pl!1t{6Gb1cvO&z z`h;G(xSm}A7? zrWrx*0X1gR{4*Kbz-5sE?$;nR?>GJInYK2|h4D2#)@m*ziw(InJmeL`0hC0nQ002W zYN^IIf2>pyD>b+J2wh36Zare9#eveif><3xkQ50k=5>g*PoxmY%4J0$)?)EY>UxXE zjZ;Oe>!)6ySU2d-y2QFt0}7<-#|_U|M4;}BHQBaqw#}E!VPHmaGfW*jyBThdruF8o zxy@ny!vRayKDj$*rFUW$D!ske{L-;x&*JFg?vw5^ZniJu8$LQKHRoCRvd>AcdeT&^ zEAB$NHJDz3HPN*U7hM!1xTMMU^Ih#^JH>w2ikT7iVDvtmDA1XxACzN3>96DCrR&@glSBgK+8*-{{<^ zEi*_Y|7-hlv)8t;=GuN~C&${>!Mvu0m2y0RN3blq%0aa<(9Cu7xHI8L=i)i_4OQB5 zzBE(h96>M5f6@}fJ9XUJvLg>BkDrRlw9f1C$C}tJu`9lafug1jiPveH8jH4P2W`*h zPJWu|;~(BQXjx>geqH&L9IV%G8^f<)G-$n#u1?-DFFh)lP0b%Qgw*zAHX9)(-H}-3tB&R?d?VPt{fcdogt5*VdvL&w?VY9-j_Ny zny>C2%I;gilS(kqKqiEx7HcQS0}v>B4UGu%M)-aD`r<$9!$&9#NR*P)+~nkb4x9v+ zW3jjP|M_>sSiWoYMgfru)T^daTd2I^vJUxKfB}tfxvZ7XUC2<@HftvZOKUgV;R)lx zAp~vq&AWgE zSaMnSGA&Fp!wNJ_f8?s4#Ms-*MxK}dU(-+D?jn{1JAf8MH7)Ld3JFp{C$K3YC_oWr z+h#&hwSMH9PFC26uiAiB@3jop-CH{ReIi$Xb zGz^r(Y&$AuL{|Ng7;TuzDQ*Ilfvih$#?0Uyj?%i?`iSsLjGGKo`7;MDK z3Y?ukF1Av>zkza4P#=TcHWz<$eE4 zvYcs`X$E;ihJL-`J#6Pip9HUh=U%c-iKNABoBd?h_|0=t#g8%D)(}$$^MJIjMhll9 zv`lJDLZRCsROo3Dsk_}EHQ*Lg4#!B={v_q5z)%f*8UB$3#~=enZ%k-YH<=DV7t!5f z(IAt&+>rDlS5kO$nr)yE@d7qyaRO3gF8;=Td|Jr$3clTa90H?6g>iP7i+^js1X`2% zJir@?BWOrD3A5;1RezYz35kFP(>asL>rAO(+j!mS91VcF2GhBy2cg3#>+@K8G!%ML zy9iCH{|qV&e8h&PfoX?mc<4q^M@}u$VQmNJnh&**{T0rpF;5l>2Wo_DNhjGM2-?NT zAU~ypq~jDA%E}8_PYjfS6L~|L)*s%Oj<@LVsF>$OzYTCH^c(w}xC^^fp_l!wnSO3M zLYd>Cy2AvIcJqWzNC#u@(-D+fb|3^t#D~W<`SCo;2u9Aa8Kx<})e}n}RbQ_S3FgsT z;-hahA5-fC4L~(_rR)V6`a~oLHnljLS@SIeuhG}%rA_FzEMP8%SonQ7uSafS?y0p%r zyW?5T#tIs%=YR88O#KK1Omm`2QR}dl3v`Ws>42^6 zhhg0otZ5sYPyi>G`mOy^TnKz)KM0emyRy|Gl^K(i8iR7eY--p?fDg%!rWOQ+_7{S- zeO+V0a2BG9c-k}|;r=Z%^&lA}`6WQTMEG?jKQje%DanZ)E&rY0mVVVizY+_pLSDmy zq~DVD_*+hW6l>!YaZ&*4FIDUf>eGI__(+tOjsc-DO_gx4M1$aAm5-55GQ1j$CQN-6 zZEMFFo!Srv$vFe=V0{ofjpi+(~ju|DPNpJ5r@;GFwGG2{G6Fy zTE-S5#ug9;3##T?8cuU^jnmyaGYhLDHbtk|DaM4*=moBMlLStkDOVN#M%04Ke|YQdk}mm3I#i{s4My5B?(}whmN46J$H0^y zS2=~Br+cBHWAT@Y@K;d#zdYAu)`rr)je;&MB4gGJ?8rW+hzlKVKi(B0deg$wU8W*v z6gxe+6a7e`#*0V6$*le`Mu+-^9*i-fHgy;k`_#Fq3^+x8C+D)Hs|{jJ7nip%=)lzj zfY%^3mOA$^Sx5Jq4y*a_|G8N(m-@C79R=qTYoAjAYPOR#X|JXBfT~KekaTAX)i^ks@lK@`n)paUmGP#yZUy+wz_LeTUsL3)<`h+Rh+ z^s!S81jp~6&by|)ln>@&v zF3M%io>4xtOqWXQX2J|jky8q&RQRd6;&5MRt%WDNU(smK|a*-ze{~x%JW+zyJADj;=p_ zHQnzI48jNU5+{eCr%AtEAfE91AuDh0PX`Fi5Sj)I&1>1MPo>8hCj20d_t2h)p>DXA zy;-A8?+9tw-TVw`Go6R(gw{@NW{s zP59fykrQEVp76K$+b{bQpSc5^Prz-*!V8mR+6L|nc*3kt{GinUi=6XYX}ftkFx9Jf zrl-iZ3-Jd@`+Xu54n1IXtZ{<0$n?r$dWwRtjmr6kXB9^`ECT&1NX?hF0=6cP2d47x zjVc`oH1khA%DJr~-$Ny<<;x${D!7^d8Z4q*MQRjL%c~!b~T6Oy>5Dlp801`2q8 z!lz*k4H$(~34l*+F`>vBAhixgJ~j3xFBGQnq^fPwx=;DS7Pef}+Cp|rNOnwUF)<+_ zM0qP`aHVFbUb3S(RC!Z9qk+&_PqWy5zfmdKGW@3Lp(*;?M~-(RFBgLK41LVZ{Zi=7{Ei~2HAq74N#{UWe*Ut*6PdBu z@BUae-t)T`6cA^Ve1~t7{AQ9n{)Ufbb3K2)XUr;15D)Gh7oFoZpbRavDGvdQ!izM7~kJ`9ARB( zr*DJ;y?h8ULsVc(lp!+Zv}3vl0@$PKI$7soHV4A6{2oCIhd?2J zFU1HPr;|JqI?3ZOn*lsd0DvuPl~`uaIh@~ECo{iBev3eKe1nXW8^qV}W!P(_H8CEh zX9mMI28IAlbc+I%I6WLw{o(>UfV?Gdq1^3Z9v{4Q}eG_E;pcW(dZTkck6Pw0fCD^_eezV@rQ!q++?+t!gq?i z(H{(v`*df?J~q>4HNzBMJh0`YZ3=Bi7wM+B@KTO_g>Hr#1?2>7b{EzF)Xq(|D}(xz zf0?SLa5g00O{SG8-?CozDbqnj*&^HL(7`)nsO|$1^$XLA$!+qql_$H1b|&?Tlj{4V zyC6o#k&p%iVy)bs`6eqj6dTL&ExQY(mfItSfNaV5ZAZ1=Z`Xo=JIAF6Y&gk%-_&bH zBSh#P0oBPx8&I1<9G=B;t5C%*#!#rL5DXM~{>iR;MHdv|d2S0(Mg@s$P&UBdEQZ5M zlie|$b^iTM+%n&P7514k0~Wy!I(_*b`dd%K-9V5X(Gyvmmj^c;=o*ofVd8Udw;OP* z0IzO4(Gznxo@LDN*o2`Z%e&2TQL5aJb z%xRcAAmr~}9HS?{0lajOd8|bjIEXPgMvvnYQ_+McQ3v+`SB^azr~e83&N)W!!u3Y^RF#i%1fDX`BbcSX2D(XW!RaWz-GLy1Ds7rRhAR;4Ks~2p=zWM# zy=SwkNQcmTRMe{FR?|(rMEeOsnc_i9nwm5@ z<f;6|)Db)GZ*xih*JP5+thy!HIGlTR>;Q&nB*H5fqr z=V<`N2u4NBG8>l*Hs%EA8)0L_ z>VS(n(eMbaCy16uPz+(;3OrPY@bG6?oDPk`$m!atn*t_kVcL?gmu4QB)Xmzb zs!vO5wXbr&**w=8y1{|UR{sJJA4xrCi^Wbwe%i(E@e=1E*&o%RxXwE?>DswDbaYjp zK_{mgSF-rjztOc!m#^lB*?XbEQzDO_aqseR8lmSg>xLCjd^Oy*63UkH#>3Fbzi}6I z8DuD0%IoK)U|1>F{PDzYfXT0D=f*C=f+CB{#pGPmzd(`LM>s;lDoEW8p`x!Gy&Lpf zQS=>mB_{cBzaTnnpBYrF&5Jj$C!HC^A|6p;iOo&)Rq2eJf6fw4;DuTW&5-&`Gvu6N zp&9BNBXOwztq?*p)D_q=hj0>VzI;59oGJ3mw)i zUKTp4%`*!f*P6pZC$y6{xcB5FcTVY+FFW??V^)nTdSBeJh|Z{MJ~U9XVU+SjR*!&i zK!D2z3f556YFN@Tdfsi3AV`So968dc5H~qWqtiudFs-#x^hTgI-%rc879+)3$mRn^ zts>6D;2d26FwH^;gzR;CQ^TI8(|~L>qZ`F?^Vs)JSImLF{FC#Fbj`1S-6bDgtbDTe zxO*(z19{T!GKvmHQrsZ}kr}mrE9~9cj;#yZS-CklY!OlAog-40$oC4H;yk|XSP=32 zK)5@T&_i~?o|LhwuV}G~|0=5kP9XAVv4SPf30>(q7oWr>lFDD%pVmU3j^Q)MVN4B` zRTrCA_p<8Qt|bgsRIM;i@E8@+x63AWln1)%VII;+wG$v>qUdQ|QAx{~U>QH9D=1#r zR9VWg!eCjdb(Yo#m9Q055#f(gM1;bM#b*d}&fzl*1;QeVD*_nLs&{ns73r;RP-8PePPEri8~8fBdq4>`MA+ z=R>xmmhG}Yr?nx!)b}-6CdAod(Mc9K`3w?*E?5nRRl`*rX-SkLWX|f8<9}1WatSKC zT%^EVt5V2bqtvI})%B8)+5S^XYEYk!0joY6q#@a`DcEJ1uL@}D@yP(7tsr%%|62$B zpSJ#Mi-9Bl`Da~^4vTE_XF^cu`dkP$2tFHvqYRYlPG=Am>*1}#0Eb3&U+pNjETs+d zRXsb?EYjHM@0-JgF;;_EA%h73@1F{1dFg=W9EtsPa@d_}3tCAYh)?RDdOn*~tp@}T z--mgh=bUVdWbSNJ-dQ>gg5`ZunUbVu4wGml18k!$qAJ#-kYiB7vYFsI2$E1BIHEK%u2B!bm(67*)||q z5H>=tWEOFu7Fb5LXeUm4bZi2iw$|lh=10%*Ap1n{;HzJQqr_e#7I@r`+7rHNSl|h~ ze6FQjPJ^6F8>gc5F^II`AET26J)Y9p(@~bK-D}z9r^L0Na`f@(J9J5Q1y;LKygsW} zl0RL%KU2IvQM^CxJnVfrd(1E5(uy$?<#yIR4Yv=u7EtR^|{(lRkx$-jfF9S0PPUoLxi4TBmRButIv*}uzGk8k+fguHShT{SaV*=a zBC}(&ILA5$0-I7;!%?MJP0`!|w(~b0i@yW$V`tWsz)bR0fPxbNQP%v-vG^rNM|C>1 z?PpAAGX~}2Rs$WDp|O|u^Y-N$5@bfRgK9#NY3b+y+u~l40&P_=uZDWtVh*9l<$`xoj#~B!x+;mC;#0LqWQ( z&RBZNO@mcgm#U1I-mrb5j)bbXP=M?4=o9(BDj8CAj_rrD?D)|+?d#D4t`Ethrpdm| zz)IZ#8C8%|l677I4sW)EIkhxWOsV7Ia;_CCHhMd8gncB64p;1`wjEP*`HN=yDtsvH z3LIE~GbLuq8|jQQV>3W@cC9iHhOJ8Xx6_Wg2xr;>6fF9wZV#9mCJgftFvQ|~hZy?nJWPhiG!HE=7;my1#12OzMw1h4qC!N4 z9Mu6^RG-%He82UUn2qEx-;*$y?}_gW&G)>rwM@3lh! zD>h~8OIJfU+XtWFseSNSM3t?GMxT%rydv2&^o~@#JoNfF;z{ERnLjNGm$T3e9Npj1 z7RmbAuBK;sTe0Osn}ACYVS`?TfV*Bd9Y;kXC&p*=1Z~JlFA2V_Y%C~2bd5=Z+d^ax)_pkW0Ge^sS-#nUJr+?kA-N|+ zInkG1tZE&~QhD2#7U=up+yo+S*u>e^1Ojo~1S05fWp;lFmEZ}nED*U4v?YPq>Wk;` zVS(6MS0Lh;eHLP4=$rjHq=3>04!j?rdgPmR(9kVF6QB-lcmSv-zr{e z+0Dn|Z|H@C6S|OOmm~;>{SY^~OJ^7`5aFbOhO5z;@W+$iytU-L9W;I6$ac`g1{Pw* zNk9RptYtdSrBDl~gfrMY*x9&Me5C2Z*uzArxqAr*7RPoE)0X0FQEwqz)LY0F^%k;4 zy@hO1U&UHaQ!PE@n#~r*xW6?lV`$%2nwA?pAil5HCaftE)MR8618lAHd4-IhVf4~OFRMaOL_wJ7xe@cU*RcGJ}v)Sp!=kr0Q-ub!2Y|=V2r=*mrH*v7&F%o zU`)5<^gH_>3dXemrw3zB-t3K&TjPH%2cwz00HaivQTgg{KF*YtKC1@RO)_-a+%fI+ z3HxlgG2-w0#gd3ZGQj{0Gn*EJt}=@efXQ2S9?tye3odXY0$b~Pp3E@5rFF>ZkbE>G zLy{*#2$F<|RWTWb-Ftbk_T(RTcxqKpWn~vgQk`!h@5k-NC8i5;unZd3&nWcIx~XRA zVwh(btgtx>$2e%M-yKO3x^v3iI^1`fRL>a6OS&zl=nx|IcqsS+u`2lmo+|oz<)YB@ zdXnvndQ$2udcu4!0UFv=@C7W?Um`kx1!zhz!&?Kx0wPJC%WtT2D>^l3M6ztuprMTXTe#S2G@X#z4InTGyh8|%{eDytq!G%w>CeThNp2KhuaEfP^3wSW zrmpNjLTYi$u&7~9o8v9H3iHA~Ft{TyU919;s!Brqp>GrmBjUtw75RZ_@@-pZwp%f) z1Pr(HS+p<29+%n5PC=Ek_?%gkv8t_>*-)hI&YhZ23YD0a*zK3Xsfp5hA_I>JE4(!j zA}od=ORrJj-8sQYuV)-i;XI$_S@Sn`-p@I4>j?9qYQWnAv(wWK;}_3o9If@MvRXFV zU^T>c7~(9QV8&Xcwh{Tnp%2QrU{)jE%!nZ%d<{p4&2~$O14)kh)bzvID$ctwD*YtI z%gXVa)uwYHn=7Q&WQs{8odTh#t+R4#)B#n$O;8~QBMKZs7N|Yf=IM*(T}g_89()m; z1J`mbWUm+?<0~yw3d3pXDS3#~2-lCvv!p&+tj&eko2j?o#=E{DWGX}O%%T@6u-Ay>HPUF;pQ=6O*T5>;-LGd^b zrYF<*j{-ZU>nOE~XPek-R1Z$pD1+pcN;$5{siE4tV)C{*IQy`7ZZEhgC=T0hsFrz~ zi>(;cESZUdwCKLhVJHP2;S7-h%4%d+BFE|7syIMDfKC@;2|x&TYa^V3jLcnZmh7Uu zx%fjOAg#x2qy!fvoDDRaB-+rCcwL0F- zgF4>9gE}7MK^^zt%sD!Ry}RePg)gyi43i_D$QRV2 zVAd4TiEM2luf@}>h%Cq$9m5=A*~Z5FinHZ9j4B3M#i8n4HXGQKb|h8#D}R zj)=1bI zcz?v>!mA^35HJ$SA4lRwNNhYCFIK-k9S-ZL>V6%^OEqZOoJ~RIz@Pk*W)N zguG!o1$D%@mGs0-Og)2$5fDET^jkGknrV^#*?4n1d81;@v^2DS!t_EWl9#Q z@>9b>%8oJQiN5QQR;BDwE}U65nj!z`uwFxd=)-}Y9Mc(gZOODKf}YI>9Rwe;AJ9dO zio)+ca1|%F!tvMu8=IT<*u_kY;=gw0iKPMUuFR zS>2QfzD^`2acs-#JB9p)%7(gc!LKyE!5w6ln?3b!ZN9F|&Wh&FTA11H^S`aI<*=AevF;;Op zZ8o}Dv7uREd?xBg4;1yoZnnIYNY@ku*@|yjt%>$fFJ=74?&*1G`r@+|Vxe|ELRW9{ z$7r8BxpeXhYBN9?kUDmUu!bPK0h$SrV4#=?pnyD1AcgQkXTa7$4D0|U4Rx4%x2l{# zR5ptXiHqf&@Qd^oezOTnQkbLnxaX<}fVF8sWRuc^LTI>Pga|#3jSh8IGBayM#!5xk zV~j$ERIwF%y%>s)8^s^!q{UE$ae*}u<7CEy9oJ)xP^(H(5EHiPrTT*Uh&fI)!0}HV zJSwIF#)^JtJD$(#TpaJuxG?z7a|!H&Hn zRMB2mHQPyWE0Bg$Y#-@@RE(BG+eaptmQyh>&;r{#aQ0EmE8M%eTv|u}1R?H+Wl%Q! z09Rf;lBj?{1{kn4N@z+-000hLSt<%G_Eg}7Wwt*qDYy{y@VHpLurSqrIAyVJNR+sA zC*^c}p}N+8IlUBi2M%csQXmQ2j=@qVhgrHKGcaR`EQ;y4*q~!eM@xksn9G={;;@X| ztVfGAj24$nGqz;hrU4$%Zfe49U^`_tY@=pX?c-+cus6(=sPksoY0I$Pu(sGFiEJ%+ ziA6%OE~(|;PSF4JmrMHna?CFW1)sCa*oJOoBkdK-_f^aHr6S+wR_9y#J8tQh9J#+^ zxqr)Yf2GL%h1I#q_bto!HOu!xk?-@X^MzW|OLQ956$RL4*-M^(>l{@4C6^URYYr;@ zlG8y&EZx3c98@$;e-3J!07O z-FKb`ZHEY#7qY3&E!t{Bo@;A{Tk<5!bT|?B@gAmN?rB81!9Kyo&km-AAZAf1x!o?D zcsS&p_ChCx@z0AVd49oBg6DJC)W}Kbb56HNd_)qJ0)9*bs4%ax*2Qx@zB}7?hOxqq zNUig7yAkPfccQtL9Kt@uWK{Fx7ew@(572X%igbZjVzYs3I)A_eGpm+#+@tkyic_?_ zit||(&NUrnJH*9k9k9bvPCceV$#!6-@z=nSZX^YCe)@uXTJbYyx${I=z*eYh>Zj5E zQSCf&f*ZCuw4Kn~3bTLebrpLZ^?=*sIynPE=wp90Dj=Cd8q_tyxRU^u&tqf&D4Mnb z086(p_L?yO{mN_MfcYT}Ut?z(SL+=0m8^!fSzCc&H3QPMJ2aF{bkOVA@hJyz_yag2 z0uC#EKk~5MWV{AA(K^7v)UpydV+C-g&$1#B!4<$6yTCGH88~Qmk*#utg|)z85;Wl0 zNn0f&g^gsfpPQgCl9fObJY(i;f+mz$XPA`8?%>hO{(_W`I||{Xss0YR8f5=Th2OB))#7g zD%^ycP4vS;jp!9Z4NgIVh(cfs`E|Gl5MDL5jp52o;h_3XslZ!2A2{aHc)mZxCdwuq zV|Wt}){)=OgGCgF5OWM7xAJK9QclWBmF9%0Hgopyp!gZR_0l_euorrR-+wK=>}Ri~ zkNI8K(ksr-UBeLp@;r-lgq}X{u$IIhN$=7Nau4<3BOF2Gg%Q#1-IAnx_5Pe>Am@Xp zdg%c_moY8+T^aXbc$VAgO@4n?vuj?U!wJkGXQi_6=$Sq)Z6C!XIeBW)bMWnQO+0Yeb9}5`}ru$bWTn-7GJc-hq_>;v^lga|B#|h}H zld}%UdEkpjD3cD zo%A51XWbqmYZl4Gf_DY6GmIM(3ZZGnJ;_1bMbiQhQ)YvqKFd2o4mkzY{9ZzP$-9H2 zx-vu7(}R9TdYhl*o!PMIfsP-WO3wkGZ9bjCL_5v-$n<^m2OfOC-%X)SXaKSfo`Svn zn>=Tc7qV(MyB}B_xI3#&r4ImiP|yPBGJRjj^lra-qsl)4PymImsork-9<2mW7`S2SJ{eHXYhPlUf8RNN-v5BT zXenT~BpmT~YZLF?S|UgO`|P3f)LY1Vi6pRd~X1xrDlOLYD|Sogr)97$&yGLK4wmV16Gb+-)H%}reYev2o(97mU~E#{Vg0bv4zAYt1pi~41LPr*QS3* zq4`1oU|I89PWez0&Dm#UMfyx*H-u)a5s9*Usdy@Mm_$AR){eG^NRIO3hmCA#(rfdk zi2O`9cOUaLEWsEi1TY#Fz+{{?7)66V2$(>L%hmuReGntQNzl>X-6kc}qni3-eXFT? zV@m*YzjATRZ@a+@fY4WiNo^S>gD%{nE&v7rA@V8k0E)D?x-YuEB=kCv0lZEZG$b=^ zSA1&7PgA<&tTLpSx-X;{f(wH35}F0nwDw1m**FZ%@)Q({TT6JdFd7zOLNoi`{(OKx zU(z)+7db^z!Ex2s=n~(P?stlQ2x`_~md)Q*cWry9c!gwybge>m2 z1x?`gVq1&_n6H?&u$$0sK8<+7??XFcU5!)4MW!(jvsbURE&_Y+-8c$!cSF_h!F<7_ zz&XtHExg{K*VFcTH?N!Ydd6Pw;TG~~&3(+9%zc~~2jA!u#4+;;SX?W<&EF-DNoJaT zBxw3XVa>QlgSUv2l*}}!v-eTyo^EK+_{fzdsT=fWsiF`+LpiFWfE;G z|J!(wUy~sD-ytoS=J=G5ge&ak4e}vyoa|~in8TXzn}9*(KN4#FV5sgxp`ITl1B-}W1}9jqUdVMJ zKNWri3>WFob?}a#PHcyZH_ml5^My`svOQQ6=EF5(|d4F36 zvQZT!7CtILfEYrcj=>NgF&2^GScW0y>5{*hq+3b)eqD*l{dF>n-ebJGJW+ekeg-O_ ze(qkCHX|Qg*h)WdS(T;6*nFu`$$_ zI+Ctw)l`r|`l7yRc^^JRW};D69N7!dMI^}^Wut} zYz!;swB;;a^pN%-=lqJC(;9>bhHKPnXp--eE`Ym0cj^6nwW1wyF`A5wolRro6Pvei z4nW|c+Eo0j@ariW1}LQW8GnX`ZJPA&SkZ;ZpZ2GVw8X!CRob2YPNfOU{%xz$-sIn; zXd&Idb!8fpAJPN~ZXZ<9HyJuv<=%F}1k@)50yYf~P-wVka|5N3pXY%?e}LHc!~wXh z2iQw47L%#}0lJo51Bw^bu(0~e33QF z>Jr*2qD0NVhZ4*HD@s%@GJmfwA?q3?TK?UX*te=g^`d|Cni6&;bzn2$2tGiX6eDnJ zMqnA4yNzt~GJRg1r_Y(n1HtCfGFImSa{+hcfmHJ<{aTY}fXE%D)vz;i1c|vDOXm5yE4Us!FxX_|MP{3l}PA-4~&!#@r zNDumlSB+7+O+U2&f&cKDJoKm-N&y0YVO5?21YUwba1OmgTrUVGeK-gwimLU&)nD2g zI*LyAyP>YFYQ-=z$Y#he(Xc98zcZ2nMUv=xpQaB87PBd_Nc&=4y;5Rw6}ohH3}G9Q zx(@`eRi%l`0kJbTQmaw3eanOex*exeg;4W86TxV@37W3;7a}hlbcLvi2?@IrUF9IC<)9v!;Pk5$mLY#80Mrw zS@O4R&QT24sj1$fHK|E&Et$ssyU;;TU{nJCS~6)VWfA~Sh|J4zGxe~6EQ*7!bXvd zVk7XFcECr%W>Lj-`Ua=kU%DOw?725%?ik8vmvHsOU-7%KlTndFq1o+lgSAOK-)9nSNncU(|o~v ziYF1;TG7^vcEH)>X0u4{f?BgP5ew>VktZ1Y%WqzHqM=LqSLqY z%pC#&#_l7^iVhsZ_+vf3ZyC#p?vmtI9^W^`hT#@{bG5vX9>MrIeSx`s3$B9c%{(S9 zu(h;>^)6G`mb`TV+qjI~n8(@mUPyPzq?~?2BsVL6C|YmGvuG#6nj^AvqA51j&7Fcx z^=*28&ZV~5{y7KD;o>3h+nqYSe>A)u=1qI;*>1Vk?PT%9ZhJ@TNjAMt5W!;>YM;s3 zcAq=Ls&87`?xX!}_cq29c^KC4(*|Ih`CVPlOA=mgx0hOYxy@c$dZ|mMQkw`y_0r&SoqU^isM<~_e5)0n z2roC=%Vc;-?PYp(wX&ogkyFIxd{o~)1GJ^ zIvVE$99#+x<5Gab1lMPIkq@_LME!&TklXgrxA?>69l_{8 zfpHyuk)ahI61)V4u%{TPA)ruqL6Rs>#2q*?mKWF-0FSgeEh`A5gihS+a+DZ2=`$;&?qbg)Gq*NN8aMiTH`7zvr??3!Ax&1M09;_Uz+JGe&YF z7`+SYI#Et^U{S&LPE34&+jAN#d1N+nP zJc#FJOpP%;#I~O3AC&Ufj!){J9~p^b7YRLL(h5>QMzB6yvc0zamT%3NSGXfvf@NhN zbh_9#F}i0LXnJ-hQKElR=~PK|y`Ox@a`81KtOc zN{2WTPz+>@0nVYPG6ER1=n>`mJvuO`Y_C^1j6hi#!CuRM0K&yO8%D4^$^$my6(fK} z1fWe}1UF~|{YLqy?Q)~bBj5|U{YIgk&MrWXYgE+7f}gXV4-J0IXid(h}|&xc_T1w%_(63Fc`uW}kidoDQ}?m_C#Qrj$2 zmrEk}uGkdQ91_taFpMJ!%(rw75|{~FyEl@+UJ}^%B`}kAkiZB-NnoZdNnoZm zNnqrEaPKl6;?<8J;o|^< zWNLbqk*8o6yia7&D7G=g^1_-vN!e$cwe^d<>eJ5X1+pD7F`@9GmPCf49_rjUuPJ_XBi~N)(m59{cwu$N$9Wo zRoA{r*Kbp2O+xCpmpVIgCL2>{m&sY2sQJr}1eo`ehxtZ?GMr~6%nQjc5vQm$6$*y{>16El%0XTFX%!YmNL9}2cwM!kD8dohYM{s5>Esj4a;VO^Nu=6sz9x^jE#?t7 zC672ieJy?5&s_N9PIGd?MXXM{0!V8ep1{FAg4cJ6Lr9-xH3>d&=*SX3S%q zbX{<5r+@%`$j4)yd@$7(ze7s`9_yszBgj|Wgakb5w)HY*U0!$KJ~k%GMX#rJUi@xC z?0ILY`H7Jqk2=i zVb5I*G6mdhrU2d0pgZN+)rX|=swwOpNz~i?E@}9ko;TegRg<$_e?&7daIgEco2ESG zv?hSd<@1UuuAA<`l{2jA@EJ%sC}wh-4+fl<;&Tzbtz!OXe7@iu<@baadD5!g9FwDl zF72-Nz*KsOI<(05V2Gu0m#bDF3~5|@v1)2fm+`GP0HvuyID}TvzCGW93y~;^G8ov6 z^R~KWy7z#k1B_S&Nyc*HJmyLB=fD(LbP~fxka%=QT!59~K8UPi1`tYX$Q-GpQyR6_ zomRU6a90?^k^WMFJsS+aIIwo1NIMZXr(S6w^#8COgw{{X)Pz(Z?sp%3h20QJ^QdLG zd{_nSpLKx)aZ$fqk39zIcnsY43mcqv`6EFSuMds9)<@Fv&@r9v)Im$ul~RW%d2n`E z$Lldqbc~6iG`6j99KjkHIE7<6zHa2JYf3n3!gkqh{&rDL9k&Q078xv{oQl2F1Fdih zOSICU8)%#CROt(K#(QEYeFADkut>L+P8zmY4M>m#ZwKf?pL&&E4R*QhOQ`20G$r*F zs}Li#PO+*Fw^CxU@XBQ;fjU9Egpx3fIw}Jow*xRq>HZ3?XS|$o=aOC1W}4NXsxsqe zgQ*a`M!`G^dK0e}#A3}Vf#aen%Y4i&GF9*73lf;BUE4lHu+qy(m;UG$v!2pZ~L&INXR#xOKVKc0`m}>(0ecIW8 z42B<~cb17?W#U05ewAr?5d8}YH_WQeufhfTNF&!56@>V2^9@8URY2fil!ONCRs--W zYc}{gX)3(FjLE^~62$d1b`;$p^c9$ck6q@kMl#p6bUd7!7s-d79nNE>I(ewGs9YLC z^RlAxXw^6SF!Df#nhE(#Im6W%bDkxv>C~$J*zO0%l8gR) zt?17cp6U-w@bA1oe4j&RD=tvA@j+Hxe++rq@m8@QtVdVXeeFO2?U(o44!2-m<&P4x z`uV7Sz5)$&enh)Ysz^UqjJUrR;@L)6zsL`3hhd!}Kdd&7>9BEes`TrTKL#tB2kuax zrJAqXXA>4;SVYG5crj3m9WIjs0!4^qbOX(H7{Jbq>((vU*-n?TZWJ+a5|y0u-~>t3 zOShQ$PZt34A(^}s4ycV9fymzxRY!Z&g%Na=X@%Y4y1XA($JaK9Z<*iZ%6ddcDM$50 zPF&X_e29v;8_{Osjhe?5LB)zQ&B1y=G0qnmS)-zX_H3Lw%{Bfl5&xx6qA?idZ`LMF za6+&72}T59TB4Jz&dX>0lkO+7C(XEQ$yn;y_oG+WYPT~x^R!4v^`Oc-GzgMWXYzEhST4;`z@-Zo$bd^j@acFiOQ;u z05X+dWNIqBHS*%jBefI;=8}WGBJ{| zdCs({B}10#!U|L>B)~-oY@22tmXD0>1=x{+N<%?x_|d!hP^jN>HwQtv3Q`n}KBJNd zLM)1OXLUKGEVGWv@$spm+;G*f!I~_(s1x#%V8Xmf<;Epc&8&!S$sN@a+|{t%q5+KR z%-)vgIj$#Inglb@Kv|cp!`s*2AKoU8YM4*DXTKXguZw=UU(!GJ z&MDnBdBwe5-zSfJrm+gtrmTg1qHNv%$P-StCooSNvq-El*VV*JQhT+i5qnA56OD<8 z$|z!=;U;c<@aY%=0;MsNy^HR9rzPE- zB%cXxmMC~upIM;TNllYVEqIapWX&|Gn$7V9UJM6+rQ5-aw#jb}DDYw8jNM#c+2zKh#Fu=WM|bHf1bn6GEH;4N2;YB5BJJl(I}%?o1}wA# zgRpElqKx=dQTF%8M2!vYY@_cyFE@}{o+O6qQ z+hh%n$|{=f8)x{C;zfD|EWPeHi8V87uyXsl z$p>fEW3HA`z}Go4*V9f2hA(Ro@fr<%9YfwzR3Iw}Q!#X}dC45iDC(QN{84CeML{y- zOruXhSg58?L0G7zPeE9yb6cd%8}d!u7L`M2^0r7`BE(JK7U|-7WCpLYSL$pD%LmXC zL1hZpTkPFzM z0-@~s2y#ieR_8nQF8o{iei!|55X9^|fb;DR3KC|tfJCyJIb72)f-hLTK`Kr<+-YpxYgWE~!3h_m7027$zAo$bUpg9Q_AH z2=Y2c77Y;cA0?K^``??yl9f}+1^Y`(4G(I{Qy)XZso4+l3pWdWly!JSsyOEmmUZ3bIfR`Uk9zTVwy{y;ck2N2( zY-k2AMrU;n+2vPaDHn-9nKy7I^5xFjI*~h>3cQfD?dLt zzQ&yie-iDSTAzKbWU5O3y9B5tqIxMjs5-~^u#U>D-!04gBAKKd#rZ$@<-T%+(0#A< z6$M%`&VLt6S@HU zphepSW2MeGmqDUnNlWA(6IuQ(Y$#-&L-_K}N1Heisyw`Kml&T#QXLZ^HxBcx)%Y@` zEsN9;3XqMNp(~uovTGH4G#u^Nfy!p{-^Sb-8q+DfJQ)K;tEi$i^}En0-Y71Q?dM&m(j|FgV#lC zRcNiQgI310K3Xe=R+AX7ht~lv<7Hg-;k*)?sMbORB)^>gC&4FMnj7LXG=;4ZnJH}Y zmEJxg>xM|K2@)b3*PimNfJ#iSSDU{&5l`^}H_@rSlEnkvw-!U+h1f?Q=UNLGB)XRe zu^cYblBkz4nO$NvjUmx?47H44DXe8$mayB0>nd#2l7Q8UL&mnGdw!lccnZ5{$bogI z%h&McFJc;^)^ixmW0s{C*}md=7Pc#&pU1*f%fA~qe4HSrBbhwV+1Y@RiIzk3xNPD$ zr>@BovduzBfXH6A2UF;j){&U`7E|Mm*zz2_V5T76lU*eVHmDoM-gF-ohu3AkrqVPq3(T zngakc&ou&$&0NBMu*a(19g5Pr4H*x#M|7d7Tsf-j6l2^*8RP$taj%g`fp=*tnht1& z?T5RptwtIJvz1zxzrEFEHRYF6OoCjcEZW$i_JMgItBh$G$r~ootwTC{hWA4edV_Kq{^tfq--wEP5h6+0-vr44%Fk zlh7~gjMxhK!Gr0paMq=KFTWhD6M~#^i*~?(yfn?}2qR#E9ELH4MH)YJwne0R$)= zfJ@g+b1=P2S!HS|Eelu3wlA45*E0PU;)sKGT+uE7OB{)AbU*@1A`*5`N#7W@rb8bk*9E`%Y~oB-?n%TW{w}d$j(EauL|y_>*W|kP(7G&C zK&Tp!T<1ZD@PZIT$tS9=k(o6C1T7J7GW{;vNX}hErpFTSIGZBiw-Q+hcrIOBPo&eG zLaL*w0Z)*|=PN~UW0LAvbuY5t!b3h6L-Ku!J~5d19Fm^Fai>x*5U3sPVKM@MbQ*PO zlnzlX?@Va8gGP*D!1~@!1Ln^75T7_-Pc;eH1c05#vOKn|)pjo0;Z#1WO?3{sUClGPo zlh&U};G2?NlfdkvaR2HArISDLDXkUU7(S#XCO{6F9A>tkPxiz@u9uMPEykRh1gXzmRGfcWH1#OIKCtG1?$AO^)x}7oCzM>Ht%3Akby@| zu`b-)R0Pc`$n;GoN+;nr6myf04LV|9g6_=O64zJB!(33;wkmQ>b+e^F=DROy?}W-5 ztXVtCjU7;i|fDhapz;1>)@{p(X(5DIM+4~+r{5; zz)4q+5oUi(BcV#H%WTVFFAFPd4*dZ|D();Gv`Uz?PH8`nPalED^V;5(NCHd1#0x5~B&tpO~HW(GP<7kAYMW-~*lP1BC)SAFCxE zCjtfUost-*NXSZxEJII~;__nSaWLyy?Cbcm@^-Q^zy;vyr=pG``Kza*x66EVln=$# z2H{#(AB6e#TM^a@9~DlYBy9Pb9(eKTf$N7J4e*YhsJ1Y9T+6DLef3J#yu;RMZAB;l zA9HU5B-vFRXuhA!%B;$)s_b92x*PN|DeMBZpzRfskOk`3=obm3u!&hFf{5*nP=wj8 z9*tV`Dzs}M6`;YgtzF9)dpsUHLhE5hj2C$|h6od0ur)LCTHe7kvIlHD)~wsMV1$1) zyLdy!H0<}C`(9>Nb+sheiQPeT<$L$t-*eA7_ndRjJ(pYYB{~ z&YzeJ?yClEWh+lrt6t%3&0Fi+%e+uuL_?^*Y<&>!wkjD|eL2ih2!>z_v+IUr6J(dy z|M2p(e_OJ>0W}qaa|_UyvnI3wN}4`Qojl}j?7}J9Stj;AuY_=jZ^_hDjw10`Yk9iH zEH||!Zu0Hj?c2LWJ`#@1Y7lw2NruE~mWTz5eNhuH-)7fhkCoKt^AYyoa19T(6E04? zKbW7==*AS=b8icuH>`y$7^UV7YoAJ8!nv-g>Y;qAVe;XenvkzVm^s7bLqPa^!{o#H z)G+xF<=TNioEmv_n!w(1(9NU#t{3;U`R>!={dvUOU@?4oGV$R0d88kBV8$g|7WiU5 zx*}D;-GaP7yY2mK8Vy|ju!Di!G-k)cblJ;fOyq&^y8sKDc)bqf7~;V>d8jrwNb6O6lnW|b+#ELEuD?=oES~g@J=|oJKDE9 zeEYN9X#iVG)+vod{0`|ZZVcq}nzOQFW}S zc9az?*x;ATqW?fAjI@n+1I6PS3RH$6+=dbBtwgFfyf1m<>qtJtUPWB+KH|1&BM@?_ zEF3S~xZx_^|GLX;5NX`^zKd*2@*A=(nGIHo%MKs8H+xzK2Xk2T#B?Ga_>mj9Ey;OD zj}gS4a&)QE&x$^IDKduS2oX&=9P+AS1Bavn5x$6Ja?IHYR=B~Ov9UnxpR8)BTK1p` z3_1>gz>P;9c%eTWOo>p>&Y7-(qJi+{cafkd+7%blJ3~z_;ELixRVgskjh)*@# zu^L!hhyG_Z=J1M*D^6XaC@Z6sw;Z||EM{yKnigc}1>rYqLc>n17GzTY9f#1qR4t}S z7#(jpJ@~o2VY5zXXG)ZmQpictQ*0H0E>8!B(@zxGxb(RbJPo`Yru*o{Sql!+_c0Z? z79c@1R2H|p`tj);5ywr0!u($PTqq{6I5f^ljnh)#;*VTZ?0%s90kU*YVa#I;q1i3j zWz{f#h7%p`h}_7u6e+tAIB29C+n*)g2p!kzn(z} zrm&eq`qCdIsWii?d$XT97m9Rzk;WUfSPl?$oP<(I@uGUc@W1;pLwKfxT0(G)0DqGM z&53^^XJeeu`Ja^J(`X6^w8xY$;~SSdx&k*4z33hI@idTt4Qzw$6j+IfW}v-hgNyGW zjF$x&Ve5AW88Z<8iy>|U*LGlS2h|i%FE{9<1Y_pD5r-gXB9IGF%*ZE@ijhx7{1EwM zSIlW(R3J@4jfK~zSRv}aqW)y}$w)zjB4t;4aa)GNTImHe;ANOzM!W!9j0l!pNQrwR z2NzDK$`8bAQ}5wcLJM1(V&P6*g>o z?JWbrcE0mq%6g&AJU1pz3P<^-S%eI2suSSf8r3@RGI0=N(qt)k@Ip*MH>j7jQfg|! zPg$}z0mK56V=lw!nP0FN+FUf+)EHCR)aWOOFu>NL|J)~Soja6jNGXj0&gq!iVdSTw z5jU_n6NRa+WiFkjRxBNXLDOlFMFRm~_sTG@+m^HqKpCf-g7@JTWs^-qkQJ8Zc!8zG zAQR9Bjr&qEQL~&UUXGC*VM4oE`(MkM`{!}y!EMWB%0-^Un~`{d!v>4pYvj#|Dc9BA ziIbEY+FVtDxoi*;YIyVjAhFhJJtE{kI*jCjcV+6Dj;7JKVAvLq5#G#dy%KuubG{lnGY?vG77ilofr^(-OjI9w=*G3VJ*Kl6i)Pb3%@41L&L9Er~H~|1+S1_ zCs$q8$A(`wP-X=zwnMqt(10L}9gzZ$Oeeizg9X+_!1{1v+EAVOR0m&*eZMpWLq(vL zouIcJcH1F0h1<)q?>QI*`wnI(a=^ERID8w2PnqFLVutGSEe#@irGZZJhBN?XOw*)c z&sr!!u0$;T88b9>Ii(^JCT3{bVoJk@3GNovH=I3BA5g~=GcqIKa|NKN9<}UQ|1?r>@fH<;mif(1!FM)DdTe4x_aZ(l5r;`cen&PN> zMT1UL_MLoz2S1bN-PZ2e!BRsnG=Asqb6bo1MHo+kC#s1SNV;sgH@?sW5<4Pvm?Ys4 zWJ%UZ=Q6QE;|MoDo;t1rkK{o#>n`yrFTK+OcUa!p(HnI zMzV1l{$IH9#43})kl81C2l;sGs6&Oytlf)twK!5|*lDdsV=5t`90wc58e>)3Sy1ej z?EAjcR#(M4;7|pF@nPZCP^q1hDLZg7oSf(bOnVT%z6DH&z^5!Mh(~vLrZKpCB`;`W(=JB%=wU87Ld;BDX`cAv{A=10b%pOQ>VV(Se4c9@>UnVUpH`pSIWi54iE5-96+I9);jE&6&R~(;~#}n89KdG^_}@f5xl%&=uY&4) z7yFaHU&4OP-^`T#%<3m&kszGmy$92#RkoJVxr{9<{`60dM$1{f`8&+I{m{t?t~2_M zL=56*`p`ECkdjj*2}qhbfRX{Pe8eeJe1)uv4rdH8w!Z40A>sAn(Q`a}{C6d?!ABMf ztS�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 CNTACA diff --git a/external/openjpeg/openjpeg_nowasm_fallback.js b/external/openjpeg/openjpeg_nowasm_fallback.js new file mode 100644 index 0000000000000..1460947d7ebcc --- /dev/null +++ b/external/openjpeg/openjpeg_nowasm_fallback.js @@ -0,0 +1,29 @@ +var OpenJPEG = (() => { + var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; + + return ( +function(moduleArg = {}) { + var moduleRtn; + +var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(Ea){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>>0;D=D>>>0;if(C+D>e.length)throw"trap: invalid memory.fill";e.fill(y,C,C+D)}function E(C,F,D){e.copyWithin(C,F,F+D)}function G(){throw new Error("abort")}function Da(q){var H=new ArrayBuffer(16908288);var I=new Int8Array(H);var J=new Int16Array(H);var K=new Int32Array(H);var L=new Uint8Array(H);var M=new Uint16Array(H);var N=new Uint32Array(H);var O=new Float32Array(H);var P=new Float64Array(H);var Q=Math.imul;var R=Math.fround;var S=Math.abs;var T=Math.clz32;var U=Math.min;var V=Math.max;var W=Math.floor;var X=Math.ceil;var Y=Math.trunc;var Z=Math.sqrt;var _=q.a;var $=_.a;var aa=_.b;var ba=_.c;var ca=_.d;var da=_.e;var ea=_.f;var fa=_.g;var ga=_.h;var ha=_.i;var ia=_.j;var ja=_.k;var ka=_.l;var la=_.m;var ma=_.n;var na=_.o;var oa=_.p;var pa=_.q;var qa=_.r;var ra=94304;var sa=0;var ta=0;var ua=0; +// EMSCRIPTEN_START_FUNCS +function jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,F=0,G=0,H=0,P=0,S=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=R(0),ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,sa=0,ta=0,ua=0,wa=0;$=ra-96|0;ra=$;D=K[a+8>>2];a:{b:{c:{if(!K[a>>2]){g=Q(K[D+16>>2]-K[D+8>>2]|0,K[D+20>>2]-K[D+12>>2]|0)<<2;c=Ma(g);K[D+60>>2]=c;if(!c){Fa(K[a+32>>2],1,7986,0);d=a+28|0;break b}if(!g){break c}B(c,0,g);break c}c=K[D+60>>2];if(!c){break c}Ga(c);K[D+60>>2]=0}if(!K[K[a+28>>2]>>2]){break a}pa=K[a+16>>2];c=K[pa+28>>2]+Q(K[pa+24>>2],152)|0;ua=K[c-152>>2];wa=K[c-144>>2];qa=K[a+20>>2];sa=K[a+12>>2];ta=K[a+4>>2];d=a+28|0;d:{q=K[b+4>>2];e=0;e:{if((q|0)<=0){break e}l=K[b>>2];c=0;f:{while(1){g=l+Q(c,12)|0;if(!K[g>>2]){break f}c=c+1|0;if((q|0)!=(c|0)){continue}break}e=0;break e}e=K[g+4>>2]}if(e){break d}e=Ia(1,156);if(!e){Fa(K[a+32>>2],1,6276,0);break b}K[e+140>>2]=0;c=0;l=K[b+4>>2];g:{if((l|0)==2147483647){break g}g=K[b>>2];if((l|0)>0){while(1){q=g+Q(c,12)|0;if(!K[q>>2]){l=K[q+8>>2];if(l){va[l|0](K[q+4>>2]);g=K[b>>2]}b=g+Q(c,12)|0;K[b+8>>2]=15;K[b+4>>2]=e;c=1;break g}c=c+1|0;if((l|0)!=(c|0)){continue}break}}g=La(g,Q(l,12)+12|0);c=0;if(!g){break g}K[b>>2]=g;c=K[b+4>>2];g=g+Q(c,12)|0;K[g+8>>2]=15;K[g+4>>2]=e;K[g>>2]=0;K[b+4>>2]=c+1;c=1}if(c){break d}Fa(K[a+32>>2],1,8301,0);b=K[e+116>>2];if(b){Ga(b);K[e+116>>2]=0}b=K[e+120>>2];if(b){Ga(b);K[e+120>>2]=0}Ga(K[e+148>>2]);Ga(e);break b}K[e+144>>2]=K[a+24>>2];S=K[a+40>>2];ba=K[a+36>>2];P=K[a+32>>2];o=K[qa+808>>2];b=K[sa+16>>2];h:{_=K[qa+16>>2];i:{if(_&64){l=ra-304|0;ra=l;j:{if(o){if(ba){Fa(P,1,3182,0);break j}Fa(P,1,3182,0);break j}j=K[e+116>>2];c=K[D+20>>2]-K[D+12>>2]|0;b=K[D+16>>2]-K[D+8>>2]|0;g=Q(c,b);k:{l:{if(g>>>0>N[e+132>>2]){Ga(j);f=g<<2;j=Ma(f);K[e+116>>2]=j;if(!j){j=0;break j}K[e+132>>2]=g;break l}if(!j){break k}f=g<<2}if(!f){break k}B(j,0,f)}j=K[e+120>>2];m:{if(N[e+136>>2]>2639){break m}Ga(j);j=Ma(10560);K[e+120>>2]=j;if(j){break m}j=0;break j}K[e+136>>2]=2640;B(j,0,10560);K[e+128>>2]=c;K[e+124>>2]=b;m=K[D+24>>2];if(!m){j=1;break j}q=K[D+28>>2];j=1;n:{o:{p:{q:{f=K[D+52>>2];r:{if(f){c=K[D+4>>2];j=0;if(f>>>0>=4){b=f&-4;while(1){g=c+(n<<3)|0;j=K[g+28>>2]+(K[g+20>>2]+(K[g+12>>2]+(K[g+4>>2]+j|0)|0)|0)|0;n=n+4|0;r=r+4|0;if((b|0)!=(r|0)){continue}break}}b=f&3;if(b){while(1){j=K[(c+(n<<3)|0)+4>>2]+j|0;n=n+1|0;k=k+1|0;if((b|0)!=(k|0)){continue}break}}if(!K[e+144>>2]&(f|0)==1){break o}if(N[e+152>>2]>=j>>>0){break r}r=La(K[e+148>>2],j);if(r){break q}j=0;break j}if(!K[e+144>>2]){break j}}r=K[e+148>>2];if(r){break p}j=0;break j}K[e+152>>2]=j;K[e+148>>2]=r}if(!K[D+52>>2]){j=0;break n}f=K[D+4>>2];j=0;n=0;while(1){g=n<<3;c=g+f|0;b=K[c+4>>2];if(b){E(j+r|0,K[c>>2],b)}f=K[D+4>>2];j=K[(g+f|0)+4>>2]+j|0;n=n+1|0;if(n>>>0>2]){continue}break}break n}r=K[K[D+4>>2]>>2]}n=0;f=0;c=K[D+40>>2];g=0;s:{if(!c){break s}b=K[D>>2];f=K[b+8>>2];g=0;if((c|0)==1){break s}g=K[b+32>>2]}c=m-q|0;f=f+g|0;t:{if(!f){k=0;break t}n=1;b=K[D>>2];p=K[b>>2];k=0;if((f|0)==1){n=0;break t}k=K[b+24>>2]}Z=c+1|0;ia=K[e+116>>2];aa=K[e+120>>2];S=K[D+12>>2];W=K[D+20>>2];ja=K[D+8>>2];ka=K[D+16>>2];u:{v:{w:{x:{y:{z:{A:{B:{if(!(!n|k)){if(!ba){break B}Fa(P,2,10769,0);f=1;break A}if(f>>>0<4){break A}if(ba){K[l+112>>2]=f;Fa(P,1,9553,l+112|0);break u}K[l+96>>2]=f;Fa(P,1,9553,l+96|0);j=0;break j}Fa(P,2,10769,0);n=K[D+24>>2];if(n>>>0>30){break z}t=1;if(n>>>0>=Z>>>0){break x}break v}n=K[D+24>>2];if(n>>>0<=30){break y}if(!ba){break z}K[l+32>>2]=K[D+24>>2];Fa(P,1,12265,l+32|0);break u}K[l>>2]=n;Fa(P,1,12265,l);j=0;break j}if(n>>>0>>0){break w}if(f>>>0<2){t=f;break x}if((n|0)!=(Z|0)){t=f;break x}t=1;if(L[26336]){break x}if(!ba){I[26336]=1;K[l+64>>2]=f;Fa(P,2,10262,l- -64|0);break x}if(!L[26336]){I[26336]=1;K[l+80>>2]=f;Fa(P,2,10262,l+80|0)}}if(!(!(p>>>0<2|j>>>0

>>0)&k+p>>>0<=j>>>0)){if(ba){j=0;Fa(P,1,9495,0);break j}j=0;Fa(P,1,9495,0);break j}G=p+r|0;b=L[G-1|0];n=b<<4|L[G-2|0]&15;if(!(!(n>>>0<2|(b|0)==255)&(n|0)<=(p|0))){if(ba){j=0;Fa(P,1,15268,0);break j}j=0;Fa(P,1,15268,0);break j}U=K[D+28>>2];K[l+272>>2]=0;K[l+280>>2]=0;K[l+264>>2]=0;K[l+268>>2]=0;K[l+296>>2]=0;K[l+300>>2]=0;K[l+284>>2]=0;K[l+288>>2]=0;b=n-1|0;K[l+276>>2]=b;o=(p+r|0)-n|0;K[l+256>>2]=o;j=L[o|0];c=8;K[l+272>>2]=8;f=o+1|0;K[l+256>>2]=f;g=n-2|0;K[l+276>>2]=g;m=(b|0)==1?j|15:j;b=0;q=b;K[l+264>>2]=m;K[l+268>>2]=b;K[l+280>>2]=!b&(m|0)==255;h=o&3;C:{D:{if((h|0)==3){break D}j=0;if(!((m|0)!=255|(b|0)!=0|L[f|0]<=143)){break C}b=255;b=n>>>0>=3?L[f|0]:b;i=n-3|0;K[l+276>>2]=i;j=!q&(m|0)==255;c=j?15:16;K[l+272>>2]=c;y=f+(n>>>0>2)|0;K[l+256>>2]=y;b=(g|0)==1?b|15:b;g=0;K[l+280>>2]=!g&(b|0)==255;g=b;f=m;b=j?7:8;j=b&31;if((b&63)>>>0>=32){x=f<>>32-j|q<>2]=m;K[l+268>>2]=b;if((h|0)==2){break D}f=255;j=0;if(!((g|0)!=255|(w|0)!=0|L[y|0]<=143)){break C}f=n>>>0>=4?L[y|0]:f;o=n-4|0;K[l+276>>2]=o;y=y+(n>>>0>3)|0;K[l+256>>2]=y;b=(i|0)==1?f|15:f;j=0;i=j;K[l+280>>2]=!i&(b|0)==255;j=!w&(g|0)==255;c=(j?7:8)+c|0;K[l+272>>2]=c;g=b;f=m;b=j?7:8;j=b&31;if((b&63)>>>0>=32){w=f<>>32-j|q<>2]=m;K[l+268>>2]=b;if((h|0)==1){break D}j=0;if(!((g|0)!=255|(i|0)!=0|L[y|0]<=143)){break C}b=255;b=n>>>0>=5?L[y|0]:b;K[l+276>>2]=n-5;K[l+256>>2]=y+(n>>>0>4);j=0;b=(o|0)==1?b|15:b;K[l+280>>2]=!j&(b|0)==255;g=!i&(g|0)==255;c=(g?7:8)+c|0;K[l+272>>2]=c;f=m;g=g?7:8;o=g&31;if((g&63)>>>0>=32){i=f<>>32-o|q<>2]=m;K[l+268>>2]=b}b=m;c=64-c|0;g=c&31;if((c&63)>>>0>=32){i=b<>>32-g|q<>2]=b;K[l+268>>2]=i;j=1}if(!j){if(ba){j=0;Fa(P,1,11433,0);break j}j=0;Fa(P,1,11433,0);break j}A=ka-ja|0;v=n-2|0;K[l+244>>2]=v;y=p+r|0;b=y-3|0;K[l+224>>2]=b;c=L[y-2|0];f=c>>>0>143;K[l+248>>2]=f;q=0;m=c>>>4|0;K[l+232>>2]=m;K[l+236>>2]=0;o=(m&7)==7?3:4;K[l+240>>2]=o;c=(b&3)+1|0;F=c>>>0>>0?c:v;E:{F:{if(!v){j=0;K[l+244>>2]=v-F;break F}c=y-4|0;K[l+224>>2]=c;g=L[b|0];j=g>>>0>143;K[l+248>>2]=j;q=o&31;if((o&63)>>>0>=32){w=g<>>32-q;q=g<>2]=m;q=w;K[l+236>>2]=q;o=(f?(g&127)==127?7:8:8)+o|0;K[l+240>>2]=o;G:{if(F>>>0<2){f=j;break G}j=y-5|0;K[l+224>>2]=j;i=L[c|0];f=i>>>0>143;K[l+248>>2]=f;b=o&31;if((o&63)>>>0>=32){x=i<>>32-b;b=i<>2]=m;K[l+236>>2]=b;o=(g>>>0<=143?8:(i&127)==127?7:8)+o|0;K[l+240>>2]=o;if((F|0)==2){b=c;c=j;break G}g=y-6|0;K[l+224>>2]=g;b=L[j|0];h=b;f=b>>>0>143;K[l+248>>2]=f;c=o&31;if((o&63)>>>0>=32){w=b<>>32-c;c=b<>2]=m;K[l+236>>2]=c;o=(i>>>0<=143?8:(b&127)==127?7:8)+o|0;K[l+240>>2]=o;if((F|0)==3){b=j;c=g;break G}c=y-7|0;K[l+224>>2]=c;b=L[g|0];f=b>>>0>143;K[l+248>>2]=f;j=o&31;if((o&63)>>>0>=32){x=b<>>32-j;j=b<>2]=m;K[l+236>>2]=j;o=(h>>>0<=143?8:(b&127)==127?7:8)+o|0;K[l+240>>2]=o;b=g}g=v-F|0;K[l+244>>2]=g;if(o>>>0>32){break E}if((g|0)>=4){j=K[b-4>>2];K[l+224>>2]=b-5;K[l+244>>2]=g-4;break F}if((g|0)<=0){j=0;break F}x=g&1;H:{if((F|0)==(n-3|0)){h=24;j=0;break H}v=g&2147483646;h=24;j=0;b=c;i=0;while(1){y=b-1|0;K[l+224>>2]=y;w=L[b|0];c=b-2|0;K[l+224>>2]=c;K[l+244>>2]=g-1;b=L[y|0];g=g-2|0;K[l+244>>2]=g;j=w<>2]=c-1;b=L[c|0];K[l+244>>2]=g-1;j=b<>2]=h>>>0>143;g=f?(j&2130706432)==2130706432?7:8:8;c=g+(j>>>0<=2415919103?8:(j&8323072)==8323072?7:8)|0;i=j>>>16&255;b=c+(i>>>0<=143?8:(j&32512)==32512?7:8)|0;w=j>>>8&255;K[l+240>>2]=b+((w>>>0<=143?8:(j&127)==127?7:8)+o|0);b=i<>>24|w<>>0>=32){i=b<>>32-c;b=b<>2]=b|m;K[l+236>>2]=i|q}nc(l+192|0,r,p-n|0,255);h=0;I:{if(t>>>0<2){break I}nc(l+160|0,G,k,0);h=0;if((t|0)==2){break I}m=0;q=0;f=0;K[l+152>>2]=1;K[l+144>>2]=0;K[l+136>>2]=0;K[l+140>>2]=0;c=k-1|0;K[l+148>>2]=c;b=(p+r|0)+k|0;g=b-1|0;K[l+128>>2]=g;n=g&3;J:{if((k|0)<=0){b=g;break J}b=b-2|0;K[l+128>>2]=b;m=L[g|0]}K[l+136>>2]=m;K[l+140>>2]=0;h=m>>>0>143;K[l+152>>2]=h;o=(m&127)==127?7:8;K[l+144>>2]=o;K:{if(!n){break K}p=k-2|0;K[l+148>>2]=p;L:{if((k|0)<2){j=b;break L}j=b-1|0;K[l+128>>2]=j;f=L[b|0]}h=f>>>0>143;K[l+152>>2]=h;b=o&31;if((o&63)>>>0>=32){i=f<>>32-b;b=f<>2]=q;b=i;K[l+140>>2]=b;o=(m>>>0<=143?8:(f&127)==127?7:8)+o|0;K[l+144>>2]=o;if((n|0)==1){b=j;m=q;q=i;k=c;c=p;break K}i=k-3|0;K[l+148>>2]=i;M:{if((k|0)<3){g=j;break M}g=j-1|0;K[l+128>>2]=g;s=L[j|0]}h=s>>>0>143;K[l+152>>2]=h;c=o&31;if((o&63)>>>0>=32){x=s<>>32-c;c=s<>2]=m;K[l+140>>2]=b;o=(f>>>0<=143?8:(s&127)==127?7:8)+o|0;K[l+144>>2]=o;if((n|0)==2){b=g;k=p;c=i;break K}c=k-4|0;K[l+148>>2]=c;f=0;N:{if((k|0)<4){b=g;break N}b=g-1|0;K[l+128>>2]=b;f=L[g|0]}h=f>>>0>143;K[l+152>>2]=h;g=o&31;if((o&63)>>>0>=32){w=f<>>32-g;g=f<>2]=m;K[l+140>>2]=g;o=(s>>>0<=143?8:(f&127)==127?7:8)+o|0;K[l+144>>2]=o;k=i}if(o>>>0<=32){O:{if((k|0)>=5){j=K[b-3>>2];K[l+148>>2]=k-5;K[l+128>>2]=b-4;break O}j=0;if((k|0)<2){break O}k=24;while(1){f=b-1|0;K[l+128>>2]=f;b=L[b|0];g=c-1|0;K[l+148>>2]=g;j=b<>>0>1;b=f;k=k-8|0;c=g;if(i){continue}break}}i=j&255;K[l+152>>2]=i>>>0>143;g=h?(j&2130706432)==2130706432?7:8:8;c=g+(j>>>0<=2415919103?8:(j&8323072)==8323072?7:8)|0;k=j>>>16&255;b=c+(k>>>0<=143?8:(j&32512)==32512?7:8)|0;f=j>>>8&255;K[l+144>>2]=b+((f>>>0<=143?8:(j&127)==127?7:8)+o|0);b=k<>>24|f<>>0>=32){i=b<>>32-c;b=b<>2]=b|m;K[l+140>>2]=i|q}h=1}ca=W-S|0;ea=Z+1|0;I[aa+2112|0]=0;s=aa+2112|0;g=cb(l+256|0);if((A|0)>0){F=U-1|0;b=aa;f=s;o=0;c=ia;r=0;while(1){p=r;n=M[(o<<8|(pb(l+224|0)&127)<<1)+16608>>1];P:{if(o){break P}j=g-2|0;n=(j|0)==-1?n:0;if((g|0)>1){g=j;break P}g=cb(l+256|0)}q=K[l+236>>2];m=K[l+232>>2];j=K[l+240>>2];W=n>>>4|0;v=K[b>>2]|(W&3|n>>>2&48)<>2]=v;y=n&16;o=n>>>5&7|y>>>4;k=j;j=n&7;r=k-j|0;m=((1<>>j;q=q>>>j|0;k=m;j=0;if((A|0)>(p|2)){j=M[(o<<8|(k&127)<<1)+16608>>1];Q:{if(o){break Q}k=g-2|0;j=(k|0)==-1?j:0;if((g|0)>1){g=k;break Q}g=cb(l+256|0)}k=j&7;r=r-k|0;o=j>>>4&1|j>>>5&7;m=((1<>>k;q=q>>>k|0;k=m}K[b>>2]=v|(j<<2&768|j&48)<>>2&2|n>>>3&1;R:{if((x|0)!=3){break R}i=g-2|0;x=(i|0)==-1?4:3;if((g|0)>1){g=i;break R}g=cb(l+256|0)}S:{if(!x){K[l+120>>2]=1;K[l+124>>2]=1;k=0;break S}if(x>>>0<=2){i=L[(k&7)+20756|0];v=i>>>2&7;w=i&3;i=(((-1<>>w)+(i>>>5|0)|0)+1|0;k=(x|0)==1;K[l+124>>2]=k?1:i;K[l+120>>2]=k?i:1;k=v+w|0;break S}u=k;k=L[(k&7)+20756|0];G=k&3;i=u>>>G|0;if((x|0)==3){S=(k>>>5|0)+1|0;if((G|0)==3){K[l+124>>2]=i&1|2;k=k>>>2&7;K[l+120>>2]=S+((-1<>>1);k=k+4|0;break S}v=L[(i&7)+20756|0];w=v&3;i=i>>>w|0;x=k>>>2&7;K[l+120>>2]=S+(i&(-1<>>2&7;K[l+124>>2]=(((-1<>>x)+(v>>>5|0)|0)+1;k=k+(w+(x+G|0)|0)|0;break S}v=L[(i&7)+20756|0];w=v&3;i=i>>>w|0;x=k>>>2&7;K[l+120>>2]=((i&(-1<>>5|0)|0)+3;k=v>>>2&7;K[l+124>>2]=(((-1<>>x)+(v>>>5|0)|0)+3;k=k+(x+(w+G|0)|0)|0}T:{x=K[l+120>>2];if(x>>>0<=ea>>>0){v=K[l+124>>2];if(v>>>0<=ea>>>0){break T}}if(ba){j=0;Fa(P,1,15719,0);break j}j=0;Fa(P,1,15719,0);break j}K[l+240>>2]=r-k;w=k&31;if((k&63)>>>0>=32){i=0;q=q>>>w|0}else{i=q>>>w|0;q=((1<>>w}K[l+232>>2]=q;K[l+236>>2]=i;r=p+4|0;q=(r|0)<=(A|0)?255:255>>>(r-A<<1)|0;S=(ca|0)>1?q:q&85;if((j&240|W&15)&(S^-1)){if(ba){j=0;Fa(P,1,12157,0);break j}j=0;Fa(P,1,12157,0);break j}U:{V:{if(y){m=Qa(l+192|0);w=x+(n<<19>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;V=(m&(-1<>>8&1)<>2]=V}W:{if(n&32){m=Qa(l+192|0);w=x+(n<<18>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;q=m&(-1<>>9&1)<>2]=q+2<>>0>q>>>0?m:q)|128;break W}if(!(S&2)){break W}K[(A<<2)+c>>2]=0}w=c+4|0;X:{Y:{if(n&64){m=Qa(l+192|0);y=x+(n<<17>>31)|0;K[l+208>>2]=K[l+208>>2]-y;k=K[l+204>>2];q=K[l+200>>2];W=y&31;if((y&63)>>>0>=32){i=0;q=k>>>W|0}else{i=k>>>W|0;q=((1<>>W}K[l+200>>2]=q;K[l+204>>2]=i;k=(m&(-1<>>10&1)<>2]=k}I[f+1|0]=0;Z:{if(n&128){m=Qa(l+192|0);y=x+(n<<16>>31)|0;K[l+208>>2]=K[l+208>>2]-y;k=K[l+204>>2];q=K[l+200>>2];x=y&31;if((y&63)>>>0>=32){i=0;q=k>>>x|0}else{i=k>>>x|0;q=((1<>>x}K[l+200>>2]=q;K[l+204>>2]=i;q=m&(-1<>>11&1)<>2]=q+2<>2]=0}n=c+8|0;_:{$:{if(j&16){m=Qa(l+192|0);w=v+(j<<19>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;x=(m&(-1<>>8&1)<>2]=x}aa:{if(j&32){m=Qa(l+192|0);w=v+(j<<18>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;q=m&(-1<>>9&1)<>2]=q+2<>>0>q>>>0?m:q)|128;break aa}if(!(S&32)){break aa}K[n+(A<<2)>>2]=0}n=c+12|0;ba:{ca:{if(j&64){m=Qa(l+192|0);w=v+(j<<17>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;x=(m&(-1<>>10&1)<>2]=x}f=f+2|0;I[f|0]=0;da:{if(j&128){m=Qa(l+192|0);w=v+(j<<16>>31)|0;K[l+208>>2]=K[l+208>>2]-w;k=K[l+204>>2];q=K[l+200>>2];y=w&31;if((w&63)>>>0>=32){i=0;q=k>>>y|0}else{i=k>>>y|0;q=((1<>>y}K[l+200>>2]=q;K[l+204>>2]=i;j=m&(-1<>>11&1)<>2]=j+2<>>0<128){break da}K[n+(A<<2)>>2]=0}X=X^16;b=(p&4)+b|0;c=c+16|0;if((r|0)<(A|0)){continue}break}}la=_&8;ma=aa+1584|0;na=aa+1056|0;ha=aa+528|0;if((ca|0)>=3){oa=Q(A,12);u=A<<3;fa=U-1|0;b=U-2|0;C=3<>>1&2147483644)+4|0;x=2;while(1){y=x;V=L[s|0];I[s|0]=0;X=X&-17^2;ea:{if((A|0)<=0){x=y+2|0;break ea}o=y&4?ha:aa;x=y+2|0;f=ia+(Q(y,A)<<2)|0;v=0;c=s;p=0;while(1){_=p;G=V&255;b=L[c+1|0]>>>5&4|(G>>>7|v);n=M[(b<<8|(pb(l+224|0)&127)<<1)+18656>>1];fa:{if(b){break fa}b=g-2|0;n=(b|0)==-1?n:0;if((g|0)>1){g=b;break fa}g=cb(l+256|0)}j=K[l+236>>2];q=K[l+232>>2];b=K[l+240>>2];k=K[o>>2]|(n>>>4&3|n>>>2&48)<>2]=k;S=n&64;W=n&128;v=S>>>5|W>>>6;m=b;b=n&7;z=m-b|0;m=((1<>>b;q=j>>>b|0;p=m;j=0;if((A|0)>(_|2)){b=L[c+2|0]>>>5&4|L[c+1|0]>>>7|v;j=M[(b<<8|(m&127)<<1)+18656>>1];ga:{if(b){break ga}b=g-2|0;j=(b|0)==-1?j:0;if((g|0)>1){g=b;break ga}g=cb(l+256|0)}b=j&7;z=z-b|0;v=(j>>>5|j>>>6)&2;m=((1<>>b;p=m;q=q>>>b|0}K[o>>2]=k|(j<<2&768|j&48)<>>2&2|n>>>3&1;switch(r|0){case 0:break ha;case 3:break ia;default:break ja}}b=L[(p&7)+20756|0];w=b>>>2&7;k=p;p=b&3;i=(((-1<>>p)+(b>>>5|0)|0)+1|0;b=(r|0)==1;k=b?1:i;b=b?i:1;r=p+w|0;break ha}Z=L[(p&7)+20756|0];k=Z&3;b=p>>>k|0;F=L[(b&7)+20756|0];w=F&3;i=F>>>2&7;p=Z>>>2&7;r=i+(p+(k+w|0)|0)|0;k=b>>>w|0;b=((k&(-1<>>5|0)|0)+1|0;k=(((-1<>>p)+(F>>>5|0)|0)+1|0}K[l+240>>2]=z-r;i=r&31;if((r&63)>>>0>=32){w=0;q=q>>>i|0}else{w=q>>>i|0;q=((1<>>i}K[l+232>>2]=q;K[l+236>>2]=w;p=n&240;if(p-1&p){m=b;q=G&127;b=L[c+1|0]&127;q=b>>>0>>0?q:b;b=q-2|0;b=m+(b>>>0<=q>>>0?b:0)|0}i=j&240;if(i-1&i){m=L[c+1|0]&127;q=L[c+2|0]&127;q=m>>>0>q>>>0?m:q;k=(q>>>0>2?q-2|0:0)+k|0}if(!(b>>>0<=ea>>>0&k>>>0<=ea>>>0)){if(ba){j=0;Fa(P,1,15819,0);break j}j=0;Fa(P,1,15819,0);break j}V=L[c+2|0];I[c+1|0]=0;I[c+2|0]=0;m=i|p>>>4;p=_+4|0;q=(p|0)<=(A|0)?255:255>>>(p-A<<1)|0;F=(x|0)>(ca|0)?q&85:q;if(m&(F^-1)){if(ba){j=0;Fa(P,1,12157,0);break j}j=0;Fa(P,1,12157,0);break j}ka:{la:{if(n&16){m=Qa(l+192|0);r=(n<<19>>31)+b|0;K[l+208>>2]=K[l+208>>2]-r;i=K[l+204>>2];q=K[l+200>>2];G=r&31;if((r&63)>>>0>=32){w=0;q=i>>>G|0}else{w=i>>>G|0;q=((1<>>G}K[l+200>>2]=q;K[l+204>>2]=w;z=(m&(-1<>>8&1)<>2]=z}ma:{if(n&32){m=Qa(l+192|0);r=(n<<18>>31)+b|0;K[l+208>>2]=K[l+208>>2]-r;i=K[l+204>>2];q=K[l+200>>2];G=r&31;if((r&63)>>>0>=32){w=0;q=i>>>G|0}else{w=i>>>G|0;q=((1<>>G}K[l+200>>2]=q;K[l+204>>2]=w;q=m&(-1<>>9&1)<>2]=q+2<>>0>q>>>0?m:q)|128;break ma}if(!(F&2)){break ma}K[(A<<2)+f>>2]=0}r=f+4|0;na:{oa:{if(S){m=Qa(l+192|0);S=(n<<17>>31)+b|0;K[l+208>>2]=K[l+208>>2]-S;i=K[l+204>>2];q=K[l+200>>2];G=S&31;if((S&63)>>>0>=32){w=0;q=i>>>G|0}else{w=i>>>G|0;q=((1<>>G}K[l+200>>2]=q;K[l+204>>2]=w;Y=(m&(-1<>>10&1)<>2]=Y}pa:{if(W){q=Qa(l+192|0);i=(n<<16>>31)+b|0;K[l+208>>2]=K[l+208>>2]-i;m=K[l+204>>2];b=K[l+200>>2];W=i&31;if((i&63)>>>0>=32){w=0;b=m>>>W|0}else{w=m>>>W|0;b=((1<>>W}K[l+200>>2]=b;K[l+204>>2]=w;b=q&(-1<>>11&1)<>2]=b+2<>2]=0}i=f+8|0;qa:{ra:{if(j&16){q=Qa(l+192|0);n=(j<<19>>31)+k|0;K[l+208>>2]=K[l+208>>2]-n;m=K[l+204>>2];b=K[l+200>>2];r=n&31;if((n&63)>>>0>=32){w=0;b=m>>>r|0}else{w=m>>>r|0;b=((1<>>r}K[l+200>>2]=b;K[l+204>>2]=w;b=(q&(-1<>>8&1)<>2]=b}sa:{if(j&32){q=Qa(l+192|0);n=(j<<18>>31)+k|0;K[l+208>>2]=K[l+208>>2]-n;m=K[l+204>>2];b=K[l+200>>2];r=n&31;if((n&63)>>>0>=32){w=0;b=m>>>r|0}else{w=m>>>r|0;b=((1<>>r}K[l+200>>2]=b;K[l+204>>2]=w;b=q&(-1<>>9&1)<>2]=b+2<>>0>>0?q:b)|128;break sa}if(!(F&32)){break sa}K[i+(A<<2)>>2]=0}i=f+12|0;ta:{ua:{if(j&64){q=Qa(l+192|0);n=(j<<17>>31)+k|0;K[l+208>>2]=K[l+208>>2]-n;m=K[l+204>>2];b=K[l+200>>2];r=n&31;if((n&63)>>>0>=32){w=0;b=m>>>r|0}else{w=m>>>r|0;b=((1<>>r}K[l+200>>2]=b;K[l+204>>2]=w;b=(q&(-1<>>10&1)<>2]=b}c=c+2|0;va:{if(j&128){q=Qa(l+192|0);k=(j<<16>>31)+k|0;K[l+208>>2]=K[l+208>>2]-k;m=K[l+204>>2];b=K[l+200>>2];n=k&31;if((k&63)>>>0>=32){w=0;b=m>>>n|0}else{w=m>>>n|0;b=((1<>>n}K[l+200>>2]=b;K[l+204>>2]=w;b=q&(-1<>>11&1)<>2]=b+2<>>0<128){break va}K[i+(A<<2)>>2]=0}X=X^16;o=(_&4)+o|0;f=f+16|0;if((p|0)<(A|0)){continue}break}}wa:{if(!(y&2)|t>>>0<2){break wa}o=x&4;xa:{ya:{if(h){i=o?aa:ha;r=0;if((A|0)<=0){break ya}q=ia+(Q(A,y-2|0)<<2)|0;while(1){j=pb(l+128|0);n=0;f=K[i>>2];if(f){n=q+(r<<2)|0;k=0;c=15;while(1){za:{if(!(c&f)){break za}m=c&286331153;if(m&f){K[n>>2]=H|K[n>>2]^((j^-1)&1)<>>1|0}if(f&m<<1){b=(A<<2)+n|0;K[b>>2]=H|K[b>>2]^((j^-1)&1)<>>1|0}if(f&m<<2){b=n+u|0;K[b>>2]=H|K[b>>2]^((j^-1)&1)<>>1|0}if(!(f&m<<3)){break za}b=n+oa|0;K[b>>2]=H|K[b>>2]^((j^-1)&1)<>>1|0}n=n+4|0;c=c<<4;k=k+1|0;if((k|0)!=8){continue}break}n=Pe(f)}i=i+4|0;K[l+144>>2]=K[l+144>>2]-n;c=K[l+140>>2];b=K[l+136>>2];j=n&31;if((n&63)>>>0>=32){w=0;b=c>>>j|0}else{w=c>>>j|0;b=((1<>>j}K[l+136>>2]=b;K[l+140>>2]=w;r=r+8|0;if((A|0)>(r|0)){continue}break}}r=!o;b=0;j=0;Y=o?na:ma;n=Y;i=o?aa:ha;c=i;if((A|0)<=0){break xa}while(1){q=j>>>28|0;j=K[c>>2];q=j|(q|j<<4|j>>>4);K[n>>2]=q;q=q|K[c+4>>2]<<28;K[n>>2]=(q>>>1&2004318071|q<<1&-286331154|q)&(j^-1);n=n+4|0;c=c+4|0;b=b+8|0;if((A|0)>(b|0)){continue}break}break xa}r=!o;Y=o?na:ma}if(y>>>0<6){break wa}k=0;o=0;n=i;z=r?na:ma;j=z;m=r?aa:ha;c=m;if((A|0)>0){while(1){q=n+4|0;b=K[j>>2];f=K[n>>2];if(!la){b=b|(f|(f<<4|o>>>28|f>>>4|K[q>>2]<<28))<<3&-2004318072}K[j>>2]=(K[c>>2]^-1)&b;c=c+4|0;j=j+4|0;o=f;n=q;k=k+8|0;if((A|0)>(k|0)){continue}break}S=ia+(Q(A,y-6|0)<<2)|0;V=0;o=m;while(1){f=0;c=K[z>>2];if(c){W=V|4;y=A-V|0;j=0;v=0;while(1){q=j;j=Qa(l+160|0);G=(A|0)>(v+W|0)?v+4|0:y;Aa:{if((G|0)<=(v|0)){n=0;break Aa}Z=K[o>>2]^-1;r=((v|V)<<2)+S|0;n=0;k=v;_=k<<2;p=15<<_;b=p;while(1){Ba:{if(!(b&c)){break Ba}F=b&286331153;if(F&c){if(j&1){f=f|F;c=Z&50<<(k<<2)|c}n=n+1|0;j=j>>>1|0}w=F<<1;if(w&c){if(j&1){f=f|w;c=Z&116<<(k<<2)|c}n=n+1|0;j=j>>>1|0}w=F<<2;if(w&c){if(j&1){f=f|w;c=Z&232<<(k<<2)|c}n=n+1|0;j=j>>>1|0}w=F<<3;if(!(w&c)){break Ba}if(j&1){f=f|w;c=Z&192<<(k<<2)|c}n=n+1|0;j=j>>>1|0}b=b<<4;k=k+1|0;if((G|0)>(k|0)){continue}break}if(!(f>>>_&65535)){break Aa}while(1){Ca:{if(!(f&p)){break Ca}k=p&286331153;if(k&f){K[r>>2]=C|(K[r>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(k<<1&f){b=(A<<2)+r|0;K[b>>2]=C|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(k<<2&f){b=r+u|0;K[b>>2]=C|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(!(k<<3&f)){break Ca}b=r+oa|0;K[b>>2]=C|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}p=p<<4;r=r+4|0;v=v+1|0;if((G|0)>(v|0)){continue}break}}K[l+176>>2]=K[l+176>>2]-n;j=K[l+172>>2];b=K[l+168>>2];k=n&31;if((n&63)>>>0>=32){w=0;b=j>>>k|0}else{w=j>>>k|0;b=((1<>>k}K[l+168>>2]=b;K[l+172>>2]=w;j=1;v=4;if(!(q&1)){continue}break}K[z+4>>2]=K[z+4>>2]|(f>>>27&14|f>>>29|f>>>28)&(K[o+4>>2]^-1)}j=K[o>>2]|f;q=j>>>3&286331153;c=q>>>4|q<<4|q;if(V){b=Y-4|0;K[b>>2]=K[b>>2]|(K[i-4>>2]^-1)&q<<28}K[Y>>2]=K[Y>>2]|c&(K[i>>2]^-1);K[Y+4>>2]=K[Y+4>>2]|(K[i+4>>2]^-1)&j>>>31;z=z+4|0;o=o+4|0;Y=Y+4|0;i=i+4|0;V=V+8|0;if((A|0)>(V|0)){continue}break}}if(!da){break wa}B(m,0,da)}if((x|0)<(ca|0)){continue}break}}Da:{if(t>>>0<2){break Da}f=(ca&3)-1|0;Ea:{if(h&f>>>0<2){if((A|0)<=0){break Ea}p=1<>2];if(s){n=m+(v<<2)|0;c=15;k=0;while(1){Fa:{if(!(c&s)){break Fa}o=c&286331153;if(o&s){K[n>>2]=p|K[n>>2]^((j^-1)&1)<>>1|0}if(s&o<<1){b=(A<<2)+n|0;K[b>>2]=p|K[b>>2]^((j^-1)&1)<>>1|0}if(s&o<<2){b=g+n|0;K[b>>2]=p|K[b>>2]^((j^-1)&1)<>>1|0}if(!(s&o<<3)){break Fa}b=n+q|0;K[b>>2]=p|K[b>>2]^((j^-1)&1)<>>1|0}n=n+4|0;c=c<<4;k=k+1|0;if((k|0)!=8){continue}break}n=Pe(s)}da=da+4|0;K[l+144>>2]=K[l+144>>2]-n;c=K[l+140>>2];b=K[l+136>>2];j=n&31;if((n&63)>>>0>=32){w=0;b=c>>>j|0}else{w=c>>>j|0;b=((1<>>j}K[l+136>>2]=b;K[l+140>>2]=w;v=v+8|0;if((A|0)>(v|0)){continue}break}}if((A|0)<=0|f>>>0>1){break Ea}b=ca&4;n=b?ha:aa;c=b?ma:na;b=0;j=0;while(1){g=j>>>28|0;j=K[n>>2];g=j|(g|j<<4|j>>>4);K[c>>2]=g;g=g|K[n+4>>2]<<28;K[c>>2]=(g>>>1&2004318071|g<<1&-286331154|g)&(j^-1);c=c+4|0;n=n+4|0;b=b+8|0;if((A|0)>(b|0)){continue}break}}o=(ca|0)>6?(ca-(ca+1&3)|0)-3|0:0;if((ca|0)<=(o|0)){break Da}W=Q(A,12);v=A<<3;Z=3<>>0>=3){p=-1;if((c|0)<5){break Ha}if(S){break Ga}b=o&4;n=b?ha:aa;j=b?ma:na;c=0;if(!la){c=b?aa:ha;b=0;f=0;while(1){g=f>>>28|0;f=K[c>>2];K[j>>2]=(K[j>>2]|(f|(g|f<<4|f>>>4|K[c+4>>2]<<28))<<3&-2004318072)&(K[n>>2]^-1);n=n+4|0;j=j+4|0;c=c+4|0;b=b+8|0;if((A|0)>(b|0)){continue}break}break Ha}while(1){K[j>>2]=K[j>>2]&(K[n>>2]^-1);n=n+4|0;j=j+4|0;c=c+8|0;if((A|0)>(c|0)){continue}break}break Ha}p=K[(b<<2)+20764>>2]}if(S){break Ga}b=o&4;X=b?ha:aa;V=b?ma:na;g=b?aa:ha;t=b?na:ma;y=ia+(Q(o,A)<<2)|0;x=0;while(1){f=0;c=K[V>>2]&p;if(c){_=x|4;s=A-x|0;j=0;h=0;while(1){q=j;j=Qa(l+160|0);w=(A|0)>(h+_|0)?h+4|0:s;Ia:{if((w|0)<=(h|0)){n=0;break Ia}F=(K[X>>2]^-1)&p;r=y+((h|x)<<2)|0;n=0;k=h;i=k<<2;da=15<>>1|0}m=G<<1;if(m&c){if(j&1){f=f|m;c=F&116<<(k<<2)|c}n=n+1|0;j=j>>>1|0}m=G<<2;if(m&c){if(j&1){f=f|m;c=F&232<<(k<<2)|c}n=n+1|0;j=j>>>1|0}m=G<<3;if(!(m&c)){break Ja}if(j&1){f=f|m;c=F&192<<(k<<2)|c}n=n+1|0;j=j>>>1|0}b=b<<4;k=k+1|0;if((w|0)>(k|0)){continue}break}if(!(f>>>i&65535)){break Ia}while(1){Ka:{if(!(f&da)){break Ka}m=da&286331153;if(m&f){K[r>>2]=Z|(K[r>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(m<<1&f){b=(A<<2)+r|0;K[b>>2]=Z|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(m<<2&f){b=r+v|0;K[b>>2]=Z|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}if(!(m<<3&f)){break Ka}b=r+W|0;K[b>>2]=Z|(K[b>>2]|j<<31);n=n+1|0;j=j>>>1|0}da=da<<4;r=r+4|0;h=h+1|0;if((w|0)>(h|0)){continue}break}}K[l+176>>2]=K[l+176>>2]-n;j=K[l+172>>2];b=K[l+168>>2];m=n&31;if((n&63)>>>0>=32){w=0;b=j>>>m|0}else{w=j>>>m|0;b=((1<>>m}K[l+168>>2]=b;K[l+172>>2]=w;j=1;h=4;if(!(q&1)){continue}break}K[V+4>>2]=K[V+4>>2]|(f>>>27&14|f>>>29|f>>>28)&(K[X+4>>2]^-1)}j=K[X>>2]|f;q=j>>>3&286331153;c=q>>>4|q<<4|q;if(x){b=t-4|0;K[b>>2]=K[b>>2]|(K[g-4>>2]^-1)&q<<28}K[t>>2]=K[t>>2]|c&(K[g>>2]^-1);K[t+4>>2]=K[t+4>>2]|(K[g+4>>2]^-1)&j>>>31;V=V+4|0;X=X+4|0;t=t+4|0;g=g+4|0;x=x+8|0;if((A|0)>(x|0)){continue}break}}o=o+4|0;if((ca|0)>(o|0)){continue}break}}j=1;if((ca|0)<=0|(A|0)<=0){break j}q=A&2147483644;m=A&3;g=ja-ka>>>0>4294967292;o=0;while(1){j=ia+(Q(o,A)<<2)|0;n=0;if(!g){while(1){c=K[j>>2];b=c&2147483647;K[j>>2]=(c|0)<0?0-b|0:b;c=K[j+4>>2];b=c&2147483647;K[j+4>>2]=(c|0)<0?0-b|0:b;c=K[j+8>>2];b=c&2147483647;K[j+8>>2]=(c|0)<0?0-b|0:b;c=K[j+12>>2];b=c&2147483647;K[j+12>>2]=(c|0)<0?0-b|0:b;j=j+16|0;n=n+4|0;if((q|0)!=(n|0)){continue}break}}n=0;if(m){while(1){c=K[j>>2];b=c&2147483647;K[j>>2]=(c|0)<0?0-b|0:b;j=j+4|0;n=n+1|0;if((m|0)!=(n|0)){continue}break}}j=1;o=o+1|0;if((ca|0)!=(o|0)){continue}break}break j}if(!ba){break v}K[l+52>>2]=K[D+24>>2];K[l+48>>2]=Z;Fa(P,1,9649,l+48|0);break u}K[l+20>>2]=n;K[l+16>>2]=Z;Fa(P,1,9649,l+16|0);j=0;break j}j=0}ra=l+304|0;if(j){break i}break b}K[e+108>>2]=(b<<9)+22288;c=0;b=K[e+116>>2];La:{Ma:{i=K[D+16>>2]-K[D+8>>2]|0;k=K[D+20>>2]-K[D+12>>2]|0;g=Q(i,k);Na:{Oa:{Pa:{if(g>>>0>N[e+132>>2]){Ga(b);b=Ma(g<<2);K[e+116>>2]=b;if(!b){break Na}K[e+132>>2]=g;break Pa}if(!b){break Oa}}g=g<<2;if(!g){break Oa}B(b,0,g)}b=K[e+120>>2];p=i+2|0;m=k+3>>>2|0;g=Q(p,m+2|0);if(g>>>0<=N[e+136>>2]){x=g<<2;break Ma}Ga(b);x=g<<2;b=Ma(x);K[e+120>>2]=b;if(b){break Ma}}b=0;break La}K[e+136>>2]=g;if(x){B(b,0,x)}Qa:{if(!p){break Qa}q=K[e+120>>2];b=q;l=i+1|0;if(l>>>0>=7){g=p&-8;while(1){K[b+24>>2]=1226833920;K[b+28>>2]=1226833920;K[b+16>>2]=1226833920;K[b+20>>2]=1226833920;K[b+8>>2]=1226833920;K[b+12>>2]=1226833920;K[b>>2]=1226833920;K[b+4>>2]=1226833920;b=b+32|0;c=c+8|0;if((g|0)!=(c|0)){continue}break}}g=p&7;if(g){c=0;while(1){K[b>>2]=1226833920;b=b+4|0;c=c+1|0;if((g|0)!=(c|0)){continue}break}}b=q+(Q(p,m+1|0)<<2)|0;if(l>>>0>=7){g=p&-8;c=0;while(1){K[b+24>>2]=1226833920;K[b+28>>2]=1226833920;K[b+16>>2]=1226833920;K[b+20>>2]=1226833920;K[b+8>>2]=1226833920;K[b+12>>2]=1226833920;K[b>>2]=1226833920;K[b+4>>2]=1226833920;b=b+32|0;c=c+8|0;if((g|0)!=(c|0)){continue}break}}g=p&7;if(g){c=0;while(1){K[b>>2]=1226833920;b=b+4|0;c=c+1|0;if((g|0)!=(c|0)){continue}break}}b=k&3;if(!b){break Qa}g=(b|0)==1?1224736768:(b|0)==2?1207959552:1073741824;b=q+(Q(m,p)<<2)|0;if(l>>>0>=7){c=p&-8;x=0;while(1){K[b+28>>2]=g;K[b+24>>2]=g;K[b+20>>2]=g;K[b+16>>2]=g;K[b+12>>2]=g;K[b+8>>2]=g;K[b+4>>2]=g;K[b>>2]=g;b=b+32|0;x=x+8|0;if((c|0)!=(x|0)){continue}break}}c=p&7;if(!c){break Qa}x=0;while(1){K[b>>2]=g;b=b+4|0;x=x+1|0;if((c|0)!=(x|0)){continue}break}}K[e+128>>2]=k;K[e+124>>2]=i;b=1}if(!b){break b}x=o+K[D+28>>2]|0;if((x|0)>=31){if(!ba){break h}K[$+16>>2]=x;Fa(P,2,8679,$+16|0);break b}mc(e);bb(e,18,46);bb(e,17,3);bb(e,0,4);if(K[D+64>>2]){break i}q=K[D+52>>2];Ra:{if(!(q>>>0<=1&(!K[e+144>>2]|(q|0)!=1))){b=K[D+4>>2];g=0;if(q-1>>>0>=3){c=q&-4;while(1){l=(r<<3)+b|0;g=K[l+28>>2]+(K[l+20>>2]+(K[l+12>>2]+(K[l+4>>2]+g|0)|0)|0)|0;r=r+4|0;f=f+4|0;if((c|0)!=(f|0)){continue}break}}c=q&3;if(c){while(1){g=K[((r<<3)+b|0)+4>>2]+g|0;r=r+1|0;j=j+1|0;if((c|0)!=(j|0)){continue}break}}ja=K[e+148>>2];c=g+2|0;if(c>>>0>N[e+152>>2]){b=La(ja,c);if(!b){break b}K[e+148>>2]=b;b=b+g|0;I[b|0]=0;I[b+1|0]=0;K[e+152>>2]=c;ja=K[e+148>>2];if(!K[D+52>>2]){break Ra}b=K[D+4>>2]}g=0;r=0;while(1){l=r<<3;c=l+b|0;b=K[c+4>>2];if(b){E(g+ja|0,K[c>>2],b)}b=K[D+4>>2];g=K[(l+b|0)+4>>2]+g|0;r=r+1|0;if(r>>>0>2]){continue}break}break Ra}if((q|0)!=1){break i}ja=K[K[D+4>>2]>>2]}b=K[D+60>>2];if(b){W=K[e+116>>2];K[e+116>>2]=b}if(K[D+44>>2]){aa=_&2;da=_&8;ea=e+28|0;ia=!(_&1);ka=2;while(1){l=Z+ja|0;la=K[D>>2]+Q(F,24)|0;c=K[la>>2];oa=ia|((K[D+28>>2]-4|0)<(x|0)|ka>>>0>1);Sa:{if(!oa){K[e+20>>2]=l;b=c+l|0;K[e+24>>2]=b;J[e+112>>1]=L[b|0]|L[b+1|0]<<8;I[b|0]=255;I[K[e+24>>2]+1|0]=255;K[e+8>>2]=0;K[e>>2]=0;K[e+16>>2]=l;break Sa}K[e+20>>2]=l;b=c+l|0;K[e+24>>2]=b;J[e+112>>1]=L[b|0]|L[b+1|0]<<8;I[b|0]=255;I[K[e+24>>2]+1|0]=255;K[e+104>>2]=e+28;K[e+16>>2]=l;K[e+12>>2]=0;b=c?L[l|0]<<16:16711680;K[e>>2]=b;j=1;c=l+1|0;g=L[l+1|0];Ta:{if(L[l|0]==255){if(g>>>0>=144){K[e+12>>2]=1;b=b|65280;break Ta}K[e+16>>2]=c;j=0;b=b+(g<<9)|0;break Ta}K[e+16>>2]=c;b=b|g<<8}K[e+8>>2]=j;K[e+4>>2]=32768;K[e>>2]=b<<7}y=K[la>>2];Ua:{if(!K[la+8>>2]|(x|0)<=0){break Ua}G=0;w=oa&(aa|0)!=0;while(1){Va:{Wa:{Xa:{switch(ka-1|0){default:if(!oa){b=1<>>1|b;i=K[e+124>>2];m=i<<2;b=(m+K[e+120>>2]|0)+12|0;g=K[e+116>>2];n=0;c=K[e+128>>2];if(c>>>0>=4){if(!i){break Va}d=Q(i,12);q=i<<3;f=0-s|0;while(1){c=0;while(1){l=b;b=K[b>>2];Ya:{if(!b){break Ya}if(!(!(b&495)|b&2097168)){b=K[e>>2];j=K[e+8>>2];Za:{if(j){break Za}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];_a:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break _a}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break Za}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;$a:{if(!(b>>>j&1)){break $a}ab:{if(j){break ab}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];bb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break bb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break ab}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;k=b>>>j&1;K[g>>2]=k?f:s;j=K[e+124>>2];b=l-4|0;K[b>>2]=K[b>>2]|32;K[l+4>>2]=K[l+4>>2]|8;K[l>>2]=K[l>>2]|k<<19|16;if(da){break $a}b=l+(-2-j<<2)|0;K[b+4>>2]=K[b+4>>2]|32768;K[b>>2]=K[b>>2]|k<<31|65536;b=b-4|0;K[b>>2]=K[b>>2]|131072}b=K[l>>2]|2097152;K[l>>2]=b}if(!(!(b&3960)|b&16777344)){b=K[e>>2];j=K[e+8>>2];cb:{if(j){break cb}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];db:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break db}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break cb}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;if(b>>>j&1){eb:{if(j){break eb}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];fb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break fb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break eb}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;j=b>>>j&1;K[g+m>>2]=j?f:s;b=l-4|0;K[b>>2]=K[b>>2]|256;K[l+4>>2]=K[l+4>>2]|64;b=K[l>>2]|j<<22|128}else{b=K[l>>2]}b=b|16777216;K[l>>2]=b}if(!(!(b&31680)|b&134218752)){b=K[e>>2];j=K[e+8>>2];gb:{if(j){break gb}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];hb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break hb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break gb}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;if(b>>>j&1){ib:{if(j){break ib}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];jb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break jb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break ib}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;j=b>>>j&1;K[g+q>>2]=j?f:s;b=l-4|0;K[b>>2]=K[b>>2]|2048;K[l+4>>2]=K[l+4>>2]|512;b=K[l>>2]|j<<25|1024}else{b=K[l>>2]}b=b|134217728;K[l>>2]=b}if(!(b&253440)|b&1073750016){break Ya}b=K[e>>2];j=K[e+8>>2];kb:{if(j){break kb}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];lb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break lb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break kb}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;if(b>>>j&1){mb:{if(j){break mb}j=(b|0)==255;k=K[e+16>>2];b=L[k|0];nb:{if(!j){K[e>>2]=b;K[e+16>>2]=k+1;break nb}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=k+1;j=7;break mb}b=255;K[e>>2]=255}j=8}j=j-1|0;K[e+8>>2]=j;k=b>>>j&1;K[d+g>>2]=k?f:s;j=K[e+124>>2];b=l-4|0;K[b>>2]=K[b>>2]|16384;K[l+4>>2]=K[l+4>>2]|4096;K[l>>2]=K[l>>2]|k<<28|8192;b=l+(j<<2)|0;K[b+4>>2]=K[b+4>>2]|4;K[b+12>>2]=K[b+12>>2]|1;K[b+8>>2]=K[b+8>>2]|k<<18|2}K[l>>2]=K[l>>2]|1073741824}g=g+4|0;b=l+4|0;c=c+1|0;if((i|0)!=(c|0)){continue}break}g=d+g|0;b=l+12|0;n=n+4|0;c=K[e+128>>2];if(n>>>0<(c&-4)>>>0){continue}break}}if(!i|c>>>0<=n>>>0){break Wa}p=0;q=0-s|0;j=c;while(1){ob:{if((j|0)==(n|0)){j=n;break ob}d=b-4|0;k=K[b>>2];r=0;while(1){o=Q(r,3);l=k>>>o|0;if(!(l&2097168|!(l&495))){c=K[e>>2];f=K[e+8>>2];pb:{if(f){break pb}l=(c|0)!=255;j=K[e+16>>2];c=L[j|0];qb:{if(!l){if(c>>>0>=144){c=255;K[e>>2]=255;break qb}K[e>>2]=c;K[e+16>>2]=j+1;f=7;break pb}K[e>>2]=c;K[e+16>>2]=j+1}f=8}f=f-1|0;K[e+8>>2]=f;rb:{if(!(c>>>f&1)){break rb}j=(Q(i,r)<<2)+g|0;sb:{if(f){break sb}l=(c|0)!=255;m=K[e+16>>2];c=L[m|0];tb:{if(!l){if(c>>>0>=144){c=255;K[e>>2]=255;break tb}K[e>>2]=c;K[e+16>>2]=m+1;f=7;break sb}K[e>>2]=c;K[e+16>>2]=m+1}f=8}l=f-1|0;K[e+8>>2]=l;m=j;j=c>>>l&1;K[m>>2]=j?q:s;l=K[e+124>>2];K[d>>2]=K[d>>2]|32<>2]=K[b>>2]|(j<<19|16)<>2]=K[b+4>>2]|8<>2]=K[c+4>>2]|32768;K[c>>2]=K[c>>2]|j<<31|65536;c=c-4|0;K[c>>2]=K[c>>2]|131072}if((r|0)!=3){break rb}c=(l<<2)+b|0;K[c+4>>2]=K[c+4>>2]|4;K[c+12>>2]=K[c+12>>2]|1;K[c+8>>2]=K[c+8>>2]|j<<18|2}k=K[b>>2]|2097152<>2]=k;c=K[e+128>>2]}j=c;r=r+1|0;if(r>>>0>>0){continue}break}}g=g+4|0;b=b+4|0;p=p+1|0;if((i|0)!=(p|0)){continue}break}break Wa}j=0;v=0;p=0;ub:{vb:{wb:{z=K[e+124>>2];if(!((z|0)!=64|K[e+128>>2]!=64)){b=1<>>1|b;l=0-j|0;h=e+28|0;g=K[e+120>>2]+268|0;f=K[e+8>>2];c=K[e+4>>2];k=K[e>>2];n=K[e+104>>2];b=K[e+116>>2];if(_&8){break wb}while(1){p=0;while(1){q=b;m=g;g=K[g>>2];if(g){xb:{if(g&2097168){break xb}b=g&495;if(!b){break xb}n=h+(L[b+K[e+108>>2]|0]<<2)|0;i=K[n>>2];b=K[i>>2];c=c-b|0;yb:{if(k>>>16>>>0>>0){o=K[i+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[i+(d?8:12)>>2];while(1){zb:{if(f){break zb}f=K[e+16>>2];c=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break zb}K[e+16>>2]=c;k=(i<<9)+k|0;f=7;break zb}K[e+16>>2]=c;f=8;k=(i<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?o:!o;break yb}k=k-(b<<16)|0;if(!(c&32768)){o=K[i+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[i+(b?12:8)>>2];while(1){Ab:{if(f){break Ab}f=K[e+16>>2];d=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Ab}K[e+16>>2]=d;k=(i<<9)+k|0;f=7;break Ab}K[e+16>>2]=d;f=8;k=(i<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!o:o;break yb}b=K[i+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>17&4|(K[s>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];Bb:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){Cb:{if(f){break Cb}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Cb}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break Cb}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?i:!i;break Bb}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){Db:{if(f){break Db}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Db}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break Db}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!i:i;break Bb}d=K[t+4>>2]}K[q>>2]=(o|0)==(d|0)?j:l;K[s>>2]=K[s>>2]|32;K[m+4>>2]=K[m+4>>2]|8;b=m-268|0;K[b>>2]=K[b>>2]|131072;b=m-260|0;K[b>>2]=K[b>>2]|32768;b=m-264|0;u=b;i=K[b>>2];b=d^o;K[u>>2]=i|b<<31|65536;g=b<<19|g|16}g=g|2097152}if(!(!(g&3960)|g&16777344)){o=g>>>3|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;Eb:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){Fb:{if(f){break Fb}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Fb}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break Fb}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Eb}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){Gb:{if(f){break Gb}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Gb}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break Gb}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Eb}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>20&4|(K[s>>2]>>>22&1|(g>>>15&16|(g>>>19&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];Hb:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){Ib:{if(f){break Ib}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Ib}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break Ib}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Hb}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){Jb:{if(f){break Jb}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Jb}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break Jb}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Hb}b=K[t+4>>2]}K[q+256>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|256;K[m+4>>2]=K[m+4>>2]|64;g=(b^o)<<22|g|128}g=g|16777216}if(!(!(g&31680)|g&134218752)){o=g>>>6|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;Kb:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){Lb:{if(f){break Lb}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Lb}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break Lb}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Kb}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){Mb:{if(f){break Mb}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Mb}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break Mb}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Kb}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>23&4|(K[s>>2]>>>25&1|(g>>>18&16|(g>>>22&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];Nb:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){Ob:{if(f){break Ob}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Ob}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break Ob}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Nb}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){Pb:{if(f){break Pb}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Pb}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break Pb}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Nb}b=K[t+4>>2]}K[q+512>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|2048;K[m+4>>2]=K[m+4>>2]|512;g=(b^o)<<25|g|1024}g=g|134217728}if(!(!(g&253440)|g&1073750016)){o=g>>>9|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;Qb:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){Rb:{if(f){break Rb}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Rb}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break Rb}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Qb}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){Sb:{if(f){break Sb}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Sb}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break Sb}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Qb}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>26&4|(K[s>>2]>>>28&1|(g>>>21&16|(g>>>25&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];Tb:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){Ub:{if(f){break Ub}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Ub}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break Ub}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Tb}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){Vb:{if(f){break Vb}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Vb}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break Vb}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Tb}b=K[t+4>>2]}K[q+768>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|16384;K[m+4>>2]=K[m+4>>2]|4096;K[m+260>>2]=K[m+260>>2]|4;K[m+268>>2]=K[m+268>>2]|1;b=b^o;K[m+264>>2]=K[m+264>>2]|b<<18|2;g=b<<28|g|8192}g=g|1073741824}K[m>>2]=g}g=m+4|0;b=q+4|0;p=p+1|0;if((p|0)!=64){continue}break}g=m+12|0;b=q+772|0;q=v>>>0<60;v=v+4|0;if(q){continue}break}break vb}b=1<>>1|b;q=K[e+120>>2];g=(q+(z<<2)|0)+12|0;b=K[e+128>>2];f=K[e+8>>2];c=K[e+4>>2];k=K[e>>2];n=K[e+104>>2];o=K[e+116>>2];Wb:{if(_&8){Xb:{if(b>>>0<4){break Xb}if(z){r=Q(z,12);t=z<<3;q=0-l|0;H=e+28|0;while(1){C=0;while(1){m=g;g=K[g>>2];if(g){Yb:{if(g&2097168){break Yb}b=g&495;if(!b){break Yb}n=H+(L[b+K[e+108>>2]|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;Zb:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[s+4>>2];if(c&32768){break Zb}i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){_b:{if(f){break _b}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(s<<8)+k|0;break _b}if(s>>>0<=143){K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break _b}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!i:i;break Zb}i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){$b:{if(f){break $b}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(s<<8)+k|0;break $b}if(s>>>0<=143){K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break $b}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?i:!i}if(u){h=m-4|0;d=K[m+4>>2]>>>17&4|(K[h>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));n=H+(L[d+24336|0]<<2)|0;v=K[n>>2];b=K[v>>2];c=c-b|0;i=L[d+24592|0];ac:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[v+4>>2];if(c&32768){break ac}s=K[v+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[v+(b?12:8)>>2];while(1){bc:{if(f){break bc}f=K[e+16>>2];d=f+1|0;v=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(v<<8)+k|0;break bc}if(v>>>0<=143){K[e+16>>2]=d;k=(v<<9)+k|0;f=7;break bc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break ac}s=K[v+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[v+(d?8:12)>>2];while(1){cc:{if(f){break cc}f=K[e+16>>2];c=f+1|0;v=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(v<<8)+k|0;break cc}if(v>>>0<=143){K[e+16>>2]=c;k=(v<<9)+k|0;f=7;break cc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}b=u;K[o>>2]=(i|0)==(b|0)?l:q;K[h>>2]=K[h>>2]|32;K[m+4>>2]=K[m+4>>2]|8;g=(b^i)<<19|g|16}g=g|2097152}if(!(!(g&3960)|g&16777344)){i=g>>>3|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;dc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break dc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){ec:{if(f){break ec}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break ec}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break ec}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break dc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){fc:{if(f){break fc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break fc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break fc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>20&4|(K[v>>2]>>>22&1|(g>>>15&16|(g>>>19&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=(z<<2)+o|0;i=L[d+24592|0];gc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break gc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){hc:{if(f){break hc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break hc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break hc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break gc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){ic:{if(f){break ic}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break ic}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break ic}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|256;K[m+4>>2]=K[m+4>>2]|64;g=(b^i)<<22|g|128}g=g|16777216}if(!(!(g&31680)|g&134218752)){i=g>>>6|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;jc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break jc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){kc:{if(f){break kc}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break kc}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break kc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break jc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){lc:{if(f){break lc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break lc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break lc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>23&4|(K[v>>2]>>>25&1|(g>>>18&16|(g>>>22&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=o+t|0;i=L[d+24592|0];mc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break mc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){nc:{if(f){break nc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break nc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break nc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break mc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){oc:{if(f){break oc}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break oc}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break oc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|2048;K[m+4>>2]=K[m+4>>2]|512;g=(b^i)<<25|g|1024}g=g|134217728}if(!(!(g&253440)|g&1073750016)){i=g>>>9|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;pc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break pc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){qc:{if(f){break qc}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break qc}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break qc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break pc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){rc:{if(f){break rc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break rc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break rc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>26&4|(K[v>>2]>>>28&1|(g>>>21&16|(g>>>25&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=o+r|0;i=L[d+24592|0];sc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break sc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){tc:{if(f){break tc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break tc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break tc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break sc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){uc:{if(f){break uc}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break uc}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break uc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|16384;K[m+4>>2]=K[m+4>>2]|4096;d=m+(K[e+124>>2]<<2)|0;K[d+4>>2]=K[d+4>>2]|4;K[d+12>>2]=K[d+12>>2]|1;b=b^i;K[d+8>>2]=K[d+8>>2]|b<<18|2;g=b<<28|g|8192}g=g|1073741824}K[m>>2]=g}g=m+4|0;o=o+4|0;C=C+1|0;if((z|0)!=(C|0)){continue}break}g=m+12|0;o=o+r|0;j=j+4|0;b=K[e+128>>2];if(j>>>0<(b&-4)>>>0){continue}break}break Xb}g=(b&-4)-1|0;j=(g&-4)+4|0;g=(q+(g<<1&-8)|0)+20|0}K[e+8>>2]=f;K[e+4>>2]=c;K[e>>2]=k;K[e+104>>2]=n;if(!z|b>>>0<=j>>>0){break Wb}while(1){c=(b|0)==(j|0);f=0;b=j;if(!c){while(1){lc(e,g,(Q(f,z)<<2)+o|0,l,f,K[e+124>>2]+2|0,1);f=f+1|0;b=K[e+128>>2];if(f>>>0>>0){continue}break}}g=g+4|0;o=o+4|0;p=p+1|0;if((z|0)!=(p|0)){continue}break}break Wb}vc:{if(b>>>0<4){break vc}if(z){r=Q(z,12);t=z<<3;q=0-l|0;H=e+28|0;while(1){C=0;while(1){m=g;g=K[g>>2];if(g){wc:{if(g&2097168){break wc}b=g&495;if(!b){break wc}n=H+(L[b+K[e+108>>2]|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;xc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[s+4>>2];if(c&32768){break xc}i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){yc:{if(f){break yc}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(s<<8)+k|0;break yc}if(s>>>0<=143){K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break yc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!i:i;break xc}i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){zc:{if(f){break zc}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(s<<8)+k|0;break zc}if(s>>>0<=143){K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break zc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?i:!i}if(u){h=m-4|0;d=K[m+4>>2]>>>17&4|(K[h>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));n=H+(L[d+24336|0]<<2)|0;v=K[n>>2];b=K[v>>2];c=c-b|0;i=L[d+24592|0];Ac:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[v+4>>2];if(c&32768){break Ac}s=K[v+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[v+(b?12:8)>>2];while(1){Bc:{if(f){break Bc}f=K[e+16>>2];d=f+1|0;v=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(v<<8)+k|0;break Bc}if(v>>>0<=143){K[e+16>>2]=d;k=(v<<9)+k|0;f=7;break Bc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!s:s;break Ac}s=K[v+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[v+(d?8:12)>>2];while(1){Cc:{if(f){break Cc}f=K[e+16>>2];c=f+1|0;v=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(v<<8)+k|0;break Cc}if(v>>>0<=143){K[e+16>>2]=c;k=(v<<9)+k|0;f=7;break Cc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?s:!s}K[o>>2]=(i|0)==(d|0)?l:q;K[h>>2]=K[h>>2]|32;K[m+4>>2]=K[m+4>>2]|8;b=m+(-2-K[e+124>>2]<<2)|0;K[b+4>>2]=K[b+4>>2]|32768;d=d^i;K[b>>2]=K[b>>2]|d<<31|65536;b=b-4|0;K[b>>2]=K[b>>2]|131072;g=d<<19|g|16}g=g|2097152}if(!(!(g&3960)|g&16777344)){i=g>>>3|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;Dc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break Dc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){Ec:{if(f){break Ec}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break Ec}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break Ec}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break Dc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){Fc:{if(f){break Fc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break Fc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break Fc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>20&4|(K[v>>2]>>>22&1|(g>>>15&16|(g>>>19&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=(z<<2)+o|0;i=L[d+24592|0];Gc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break Gc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){Hc:{if(f){break Hc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break Hc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break Hc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break Gc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){Ic:{if(f){break Ic}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break Ic}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break Ic}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|256;K[m+4>>2]=K[m+4>>2]|64;g=(b^i)<<22|g|128}g=g|16777216}if(!(!(g&31680)|g&134218752)){i=g>>>6|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;Jc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break Jc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){Kc:{if(f){break Kc}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break Kc}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break Kc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break Jc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){Lc:{if(f){break Lc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break Lc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break Lc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>23&4|(K[v>>2]>>>25&1|(g>>>18&16|(g>>>22&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=o+t|0;i=L[d+24592|0];Mc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break Mc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){Nc:{if(f){break Nc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break Nc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break Nc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break Mc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){Oc:{if(f){break Oc}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break Oc}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break Oc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|2048;K[m+4>>2]=K[m+4>>2]|512;g=(b^i)<<25|g|1024}g=g|134217728}if(!(!(g&253440)|g&1073750016)){i=g>>>9|0;n=H+(L[K[e+108>>2]+(i&495)|0]<<2)|0;h=K[n>>2];b=K[h>>2];c=c-b|0;Pc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;u=K[h+4>>2];if(c&32768){break Pc}s=K[h+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[h+(b?12:8)>>2];while(1){Qc:{if(f){break Qc}f=K[e+16>>2];d=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(h<<8)+k|0;break Qc}if(h>>>0<=143){K[e+16>>2]=d;k=(h<<9)+k|0;f=7;break Qc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}u=b?!s:s;break Pc}s=K[h+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[h+(d?8:12)>>2];while(1){Rc:{if(f){break Rc}f=K[e+16>>2];c=f+1|0;h=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(h<<8)+k|0;break Rc}if(h>>>0<=143){K[e+16>>2]=c;k=(h<<9)+k|0;f=7;break Rc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;u=d?s:!s}if(u){v=m-4|0;d=K[m+4>>2]>>>26&4|(K[v>>2]>>>28&1|(g>>>21&16|(g>>>25&64|i&170)));n=H+(L[d+24336|0]<<2)|0;u=K[n>>2];b=K[u>>2];c=c-b|0;s=o+r|0;i=L[d+24592|0];Sc:{if(k>>>16>>>0>=b>>>0){k=k-(b<<16)|0;d=K[u+4>>2];if(c&32768){break Sc}h=K[u+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[u+(b?12:8)>>2];while(1){Tc:{if(f){break Tc}f=K[e+16>>2];d=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=d;f=8;k=(u<<8)+k|0;break Tc}if(u>>>0<=143){K[e+16>>2]=d;k=(u<<9)+k|0;f=7;break Tc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}d=b?!h:h;break Sc}h=K[u+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[u+(d?8:12)>>2];while(1){Uc:{if(f){break Uc}f=K[e+16>>2];c=f+1|0;u=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=c;f=8;k=(u<<8)+k|0;break Uc}if(u>>>0<=143){K[e+16>>2]=c;k=(u<<9)+k|0;f=7;break Uc}K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;d=d?h:!h}b=d;K[s>>2]=(i|0)==(b|0)?l:q;K[v>>2]=K[v>>2]|16384;K[m+4>>2]=K[m+4>>2]|4096;d=m+(K[e+124>>2]<<2)|0;K[d+4>>2]=K[d+4>>2]|4;K[d+12>>2]=K[d+12>>2]|1;b=b^i;K[d+8>>2]=K[d+8>>2]|b<<18|2;g=b<<28|g|8192}g=g|1073741824}K[m>>2]=g}g=m+4|0;o=o+4|0;C=C+1|0;if((z|0)!=(C|0)){continue}break}g=m+12|0;o=o+r|0;j=j+4|0;b=K[e+128>>2];if(j>>>0<(b&-4)>>>0){continue}break}break vc}g=(b&-4)-1|0;j=(g&-4)+4|0;g=(q+(g<<1&-8)|0)+20|0}K[e+8>>2]=f;K[e+4>>2]=c;K[e>>2]=k;K[e+104>>2]=n;if(!z|b>>>0<=j>>>0){break Wb}while(1){c=(b|0)==(j|0);f=0;b=j;if(!c){while(1){lc(e,g,(Q(f,z)<<2)+o|0,l,f,K[e+124>>2]+2|0,0);f=f+1|0;b=K[e+128>>2];if(f>>>0>>0){continue}break}}g=g+4|0;o=o+4|0;p=p+1|0;if((z|0)!=(p|0)){continue}break}}break ub}while(1){p=0;while(1){q=b;m=g;g=K[g>>2];if(g){Vc:{if(g&2097168){break Vc}b=g&495;if(!b){break Vc}n=h+(L[b+K[e+108>>2]|0]<<2)|0;i=K[n>>2];b=K[i>>2];c=c-b|0;Wc:{if(k>>>16>>>0>>0){o=K[i+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[i+(d?8:12)>>2];while(1){Xc:{if(f){break Xc}f=K[e+16>>2];c=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Xc}K[e+16>>2]=c;k=(i<<9)+k|0;f=7;break Xc}K[e+16>>2]=c;f=8;k=(i<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?o:!o;break Wc}k=k-(b<<16)|0;if(!(c&32768)){o=K[i+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[i+(b?12:8)>>2];while(1){Yc:{if(f){break Yc}f=K[e+16>>2];d=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break Yc}K[e+16>>2]=d;k=(i<<9)+k|0;f=7;break Yc}K[e+16>>2]=d;f=8;k=(i<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!o:o;break Wc}b=K[i+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>17&4|(K[s>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];Zc:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){_c:{if(f){break _c}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break _c}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break _c}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break Zc}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){$c:{if(f){break $c}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break $c}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break $c}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break Zc}b=K[t+4>>2]}K[q>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|32;K[m+4>>2]=K[m+4>>2]|8;g=(b^o)<<19|g|16}g=g|2097152}if(!(!(g&3960)|g&16777344)){o=g>>>3|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;ad:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){bd:{if(f){break bd}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break bd}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break bd}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break ad}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){cd:{if(f){break cd}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break cd}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break cd}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break ad}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>20&4|(K[s>>2]>>>22&1|(g>>>15&16|(g>>>19&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];dd:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){ed:{if(f){break ed}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break ed}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break ed}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break dd}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){fd:{if(f){break fd}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break fd}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break fd}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break dd}b=K[t+4>>2]}K[q+256>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|256;K[m+4>>2]=K[m+4>>2]|64;g=(b^o)<<22|g|128}g=g|16777216}if(!(!(g&31680)|g&134218752)){o=g>>>6|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;gd:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){hd:{if(f){break hd}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break hd}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break hd}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break gd}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){id:{if(f){break id}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break id}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break id}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break gd}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>23&4|(K[s>>2]>>>25&1|(g>>>18&16|(g>>>22&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];jd:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){kd:{if(f){break kd}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break kd}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break kd}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break jd}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){ld:{if(f){break ld}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break ld}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break ld}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break jd}b=K[t+4>>2]}K[q+512>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|2048;K[m+4>>2]=K[m+4>>2]|512;g=(b^o)<<25|g|1024}g=g|134217728}if(!(!(g&253440)|g&1073750016)){o=g>>>9|0;n=h+(L[K[e+108>>2]+(o&495)|0]<<2)|0;s=K[n>>2];b=K[s>>2];c=c-b|0;md:{if(k>>>16>>>0>>0){i=K[s+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[s+(d?8:12)>>2];while(1){nd:{if(f){break nd}f=K[e+16>>2];c=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break nd}K[e+16>>2]=c;k=(s<<9)+k|0;f=7;break nd}K[e+16>>2]=c;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break md}k=k-(b<<16)|0;if(!(c&32768)){i=K[s+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[s+(b?12:8)>>2];while(1){od:{if(f){break od}f=K[e+16>>2];d=f+1|0;s=L[f+1|0];if(L[f|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break od}K[e+16>>2]=d;k=(s<<9)+k|0;f=7;break od}K[e+16>>2]=d;f=8;k=(s<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break md}b=K[s+4>>2]}if(b){s=m-4|0;d=K[m+4>>2]>>>26&4|(K[s>>2]>>>28&1|(g>>>21&16|(g>>>25&64|o&170)));n=h+(L[d+24336|0]<<2)|0;t=K[n>>2];b=K[t>>2];c=c-b|0;o=L[d+24592|0];pd:{if(k>>>16>>>0>>0){i=K[t+4>>2];d=b>>>0>c>>>0;K[n>>2]=K[t+(d?8:12)>>2];while(1){qd:{if(f){break qd}f=K[e+16>>2];c=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break qd}K[e+16>>2]=c;k=(t<<9)+k|0;f=7;break qd}K[e+16>>2]=c;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;b=b<<1;if(b>>>0<32768){continue}break}c=b;b=d?i:!i;break pd}k=k-(b<<16)|0;if(!(c&32768)){i=K[t+4>>2];b=b>>>0>c>>>0;K[n>>2]=K[t+(b?12:8)>>2];while(1){rd:{if(f){break rd}f=K[e+16>>2];d=f+1|0;t=L[f+1|0];if(L[f|0]==255){if(t>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;k=k+65280|0;f=8;break rd}K[e+16>>2]=d;k=(t<<9)+k|0;f=7;break rd}K[e+16>>2]=d;f=8;k=(t<<8)+k|0}f=f-1|0;k=k<<1;c=c<<1;if(c>>>0<32768){continue}break}b=b?!i:i;break pd}b=K[t+4>>2]}K[q+768>>2]=(o|0)==(b|0)?j:l;K[s>>2]=K[s>>2]|16384;K[m+4>>2]=K[m+4>>2]|4096;K[m+260>>2]=K[m+260>>2]|4;K[m+268>>2]=K[m+268>>2]|1;b=b^o;K[m+264>>2]=K[m+264>>2]|b<<18|2;g=b<<28|g|8192}g=g|1073741824}K[m>>2]=g}g=m+4|0;b=q+4|0;p=p+1|0;if((p|0)!=64){continue}break}g=m+12|0;b=q+772|0;q=v>>>0<60;v=v+4|0;if(q){continue}break}}K[e+8>>2]=f;K[e+4>>2]=c;K[e>>2]=k;K[e+104>>2]=n}break Wa;case 0:if(!oa){t=1<>>1|0;s=K[e+124>>2];d=s<<2;b=(d+K[e+120>>2]|0)+12|0;g=K[e+116>>2];k=0;c=K[e+128>>2];if(c>>>0>=4){if(!s){break Va}o=Q(s,12);m=s<<3;i=0-t|0;while(1){c=0;while(1){l=b;b=K[b>>2];sd:{if(!b){break sd}if((b&2097168)==16){b=K[e>>2];h=K[e+8>>2];td:{if(h){break td}j=(b|0)==255;q=K[e+16>>2];b=L[q|0];ud:{if(!j){K[e>>2]=b;K[e+16>>2]=q+1;break ud}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=q+1;h=7;break td}b=255;K[e>>2]=255}h=8}j=h-1|0;K[e+8>>2]=j;j=b>>>j&1;b=K[g>>2];K[g>>2]=((j|0)==(b>>>31|0)?i:t)+b;b=K[l>>2]|1048576;K[l>>2]=b}if((b&16777344)==128){b=K[e>>2];h=K[e+8>>2];vd:{if(h){break vd}j=(b|0)==255;q=K[e+16>>2];b=L[q|0];wd:{if(!j){K[e>>2]=b;K[e+16>>2]=q+1;break wd}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=q+1;h=7;break vd}b=255;K[e>>2]=255}h=8}q=h-1|0;K[e+8>>2]=q;j=d+g|0;f=K[j>>2];K[j>>2]=f+((b>>>q&1)==(f>>>31|0)?i:t);b=K[l>>2]|8388608;K[l>>2]=b}if((b&134218752)==1024){b=K[e>>2];h=K[e+8>>2];xd:{if(h){break xd}j=(b|0)==255;q=K[e+16>>2];b=L[q|0];yd:{if(!j){K[e>>2]=b;K[e+16>>2]=q+1;break yd}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=q+1;h=7;break xd}b=255;K[e>>2]=255}h=8}q=h-1|0;K[e+8>>2]=q;j=g+m|0;f=K[j>>2];K[j>>2]=f+((b>>>q&1)==(f>>>31|0)?i:t);b=K[l>>2]|67108864;K[l>>2]=b}if((b&1073750016)!=8192){break sd}b=K[e>>2];h=K[e+8>>2];zd:{if(h){break zd}j=(b|0)==255;q=K[e+16>>2];b=L[q|0];Ad:{if(!j){K[e>>2]=b;K[e+16>>2]=q+1;break Ad}if(b>>>0<=143){K[e>>2]=b;K[e+16>>2]=q+1;h=7;break zd}b=255;K[e>>2]=255}h=8}q=h-1|0;K[e+8>>2]=q;j=g+o|0;f=K[j>>2];K[j>>2]=f+((b>>>q&1)==(f>>>31|0)?i:t);K[l>>2]=K[l>>2]|536870912}g=g+4|0;b=l+4|0;c=c+1|0;if((s|0)!=(c|0)){continue}break}g=g+o|0;b=l+12|0;k=k+4|0;c=K[e+128>>2];if(k>>>0<(c&-4)>>>0){continue}break}}if(!s|c>>>0<=k>>>0){break Wa}p=0;j=0-t|0;d=c;while(1){Bd:{if((d|0)==(k|0)){d=k;break Bd}h=K[b>>2];r=0;while(1){d=Q(r,3);if((2097168<>2];n=K[e+8>>2];Cd:{if(n){break Cd}l=(c|0)!=255;q=K[e+16>>2];c=L[q|0];Dd:{if(!l){if(c>>>0>=144){c=255;K[e>>2]=255;break Dd}K[e>>2]=c;K[e+16>>2]=q+1;n=7;break Cd}K[e>>2]=c;K[e+16>>2]=q+1}n=8}l=n-1|0;K[e+8>>2]=l;l=c>>>l&1;c=K[m>>2];K[m>>2]=((l|0)==(c>>>31|0)?j:t)+c;h=K[b>>2]|1048576<>2]=h;c=K[e+128>>2]}r=r+1|0;d=c;if(r>>>0>>0){continue}break}}g=g+4|0;b=b+4|0;p=p+1|0;if((s|0)!=(p|0)){continue}break}break Wa}j=K[e+120>>2];d=K[e+116>>2];u=K[e+124>>2];c=K[e+128>>2];if(!((u|0)!=64|(c|0)!=64)){c=j+268|0;v=0;s=1<>>1|0;p=0-s|0;r=K[e+8>>2];g=K[e+4>>2];b=K[e>>2];k=K[e+104>>2];while(1){n=0;while(1){q=d;j=c;d=K[c>>2];if(d){l=c;if((d&2097168)==16){k=ea+((d&1048576?16:d&495?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Ed:{if(b>>>16>>>0>>0){o=K[f+4>>2];m=c>>>0>g>>>0;K[k>>2]=K[f+(m?8:12)>>2];while(1){Fd:{if(r){break Fd}f=K[e+16>>2];g=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Fd}K[e+16>>2]=g;b=(i<<9)+b|0;r=7;break Fd}K[e+16>>2]=g;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;m=m?o:!o;break Ed}b=b-(c<<16)|0;if(!(g&32768)){o=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Gd:{if(r){break Gd}f=K[e+16>>2];m=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Gd}K[e+16>>2]=m;b=(i<<9)+b|0;r=7;break Gd}K[e+16>>2]=m;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}m=c?!o:o;break Ed}m=K[f+4>>2]}c=K[q>>2];K[q>>2]=((m|0)==(c>>>31|0)?p:s)+c;d=d|1048576}if((d&16777344)==128){k=ea+((d&8388608?16:d&3960?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Hd:{if(b>>>16>>>0>>0){o=K[f+4>>2];m=c>>>0>g>>>0;K[k>>2]=K[f+(m?8:12)>>2];while(1){Id:{if(r){break Id}f=K[e+16>>2];g=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Id}K[e+16>>2]=g;b=(i<<9)+b|0;r=7;break Id}K[e+16>>2]=g;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;m=m?o:!o;break Hd}b=b-(c<<16)|0;if(!(g&32768)){o=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Jd:{if(r){break Jd}f=K[e+16>>2];m=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Jd}K[e+16>>2]=m;b=(i<<9)+b|0;r=7;break Jd}K[e+16>>2]=m;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}m=c?!o:o;break Hd}m=K[f+4>>2]}c=K[q+256>>2];K[q+256>>2]=((m|0)==(c>>>31|0)?p:s)+c;d=d|8388608}if((d&134218752)==1024){k=ea+((d&67108864?16:d&31680?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Kd:{if(b>>>16>>>0>>0){o=K[f+4>>2];m=c>>>0>g>>>0;K[k>>2]=K[f+(m?8:12)>>2];while(1){Ld:{if(r){break Ld}f=K[e+16>>2];g=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Ld}K[e+16>>2]=g;b=(i<<9)+b|0;r=7;break Ld}K[e+16>>2]=g;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;m=m?o:!o;break Kd}b=b-(c<<16)|0;if(!(g&32768)){o=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Md:{if(r){break Md}f=K[e+16>>2];m=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Md}K[e+16>>2]=m;b=(i<<9)+b|0;r=7;break Md}K[e+16>>2]=m;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}m=c?!o:o;break Kd}m=K[f+4>>2]}c=K[q+512>>2];K[q+512>>2]=((m|0)==(c>>>31|0)?p:s)+c;d=d|67108864}if((d&1073750016)==8192){k=ea+((d&536870912?16:d&253440?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Nd:{if(b>>>16>>>0>>0){o=K[f+4>>2];m=c>>>0>g>>>0;K[k>>2]=K[f+(m?8:12)>>2];while(1){Od:{if(r){break Od}f=K[e+16>>2];g=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Od}K[e+16>>2]=g;b=(i<<9)+b|0;r=7;break Od}K[e+16>>2]=g;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;m=m?o:!o;break Nd}b=b-(c<<16)|0;if(!(g&32768)){o=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Pd:{if(r){break Pd}f=K[e+16>>2];m=f+1|0;i=L[f+1|0];if(L[f|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8;break Pd}K[e+16>>2]=m;b=(i<<9)+b|0;r=7;break Pd}K[e+16>>2]=m;r=8;b=(i<<8)+b|0}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}m=c?!o:o;break Nd}m=K[f+4>>2]}c=K[q+768>>2];K[q+768>>2]=((m|0)==(c>>>31|0)?p:s)+c;d=d|536870912}K[l>>2]=d}c=j+4|0;d=q+4|0;n=n+1|0;if((n|0)!=64){continue}break}c=j+12|0;d=q+772|0;l=v>>>0<60;v=v+4|0;if(l){continue}break}K[e+8>>2]=r;K[e+4>>2]=g;K[e>>2]=b;K[e+104>>2]=k;break Wa}v=1<>>1|0;i=u<<2;f=(i+j|0)+12|0;r=K[e+8>>2];g=K[e+4>>2];b=K[e>>2];k=K[e+104>>2];o=0;Qd:{if(c>>>0<4){break Qd}if(u){s=Q(u,12);m=u<<3;h=0-v|0;while(1){n=0;while(1){l=f;j=K[f>>2];if(j){if((j&2097168)==16){k=ea+((j&1048576?16:j&495?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Rd:{if(b>>>16>>>0>=c>>>0){b=b-(c<<16)|0;q=K[f+4>>2];if(g&32768){break Rd}p=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Sd:{if(r){break Sd}f=K[e+16>>2];q=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=q;r=8;b=(t<<8)+b|0;break Sd}if(t>>>0<=143){K[e+16>>2]=q;b=(t<<9)+b|0;r=7;break Sd}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}q=c?!p:p;break Rd}p=K[f+4>>2];q=c>>>0>g>>>0;K[k>>2]=K[f+(q?8:12)>>2];while(1){Td:{if(r){break Td}f=K[e+16>>2];g=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=g;r=8;b=(t<<8)+b|0;break Td}if(t>>>0<=143){K[e+16>>2]=g;b=(t<<9)+b|0;r=7;break Td}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;q=q?p:!p}c=K[d>>2];K[d>>2]=((q|0)==(c>>>31|0)?h:v)+c;j=j|1048576}if((j&16777344)==128){k=ea+((j&8388608?16:j&3960?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Ud:{if(b>>>16>>>0>=c>>>0){b=b-(c<<16)|0;q=K[f+4>>2];if(g&32768){break Ud}p=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Vd:{if(r){break Vd}f=K[e+16>>2];q=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=q;r=8;b=(t<<8)+b|0;break Vd}if(t>>>0<=143){K[e+16>>2]=q;b=(t<<9)+b|0;r=7;break Vd}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}q=c?!p:p;break Ud}p=K[f+4>>2];q=c>>>0>g>>>0;K[k>>2]=K[f+(q?8:12)>>2];while(1){Wd:{if(r){break Wd}f=K[e+16>>2];g=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=g;r=8;b=(t<<8)+b|0;break Wd}if(t>>>0<=143){K[e+16>>2]=g;b=(t<<9)+b|0;r=7;break Wd}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;q=q?p:!p}f=q;c=d+i|0;q=K[c>>2];K[c>>2]=q+((f|0)==(q>>>31|0)?h:v);j=j|8388608}if((j&134218752)==1024){k=ea+((j&67108864?16:j&31680?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;Xd:{if(b>>>16>>>0>=c>>>0){b=b-(c<<16)|0;q=K[f+4>>2];if(g&32768){break Xd}p=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){Yd:{if(r){break Yd}f=K[e+16>>2];q=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=q;r=8;b=(t<<8)+b|0;break Yd}if(t>>>0<=143){K[e+16>>2]=q;b=(t<<9)+b|0;r=7;break Yd}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}q=c?!p:p;break Xd}p=K[f+4>>2];q=c>>>0>g>>>0;K[k>>2]=K[f+(q?8:12)>>2];while(1){Zd:{if(r){break Zd}f=K[e+16>>2];g=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=g;r=8;b=(t<<8)+b|0;break Zd}if(t>>>0<=143){K[e+16>>2]=g;b=(t<<9)+b|0;r=7;break Zd}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;q=q?p:!p}f=q;c=d+m|0;q=K[c>>2];K[c>>2]=q+((f|0)==(q>>>31|0)?h:v);j=j|67108864}if((j&1073750016)==8192){k=ea+((j&536870912?16:j&253440?15:14)<<2)|0;f=K[k>>2];c=K[f>>2];g=g-c|0;_d:{if(b>>>16>>>0>=c>>>0){b=b-(c<<16)|0;q=K[f+4>>2];if(g&32768){break _d}p=K[f+4>>2];c=c>>>0>g>>>0;K[k>>2]=K[f+(c?12:8)>>2];while(1){$d:{if(r){break $d}f=K[e+16>>2];q=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=q;r=8;b=(t<<8)+b|0;break $d}if(t>>>0<=143){K[e+16>>2]=q;b=(t<<9)+b|0;r=7;break $d}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;g=g<<1;if(g>>>0<32768){continue}break}q=c?!p:p;break _d}p=K[f+4>>2];q=c>>>0>g>>>0;K[k>>2]=K[f+(q?8:12)>>2];while(1){ae:{if(r){break ae}f=K[e+16>>2];g=f+1|0;t=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=g;r=8;b=(t<<8)+b|0;break ae}if(t>>>0<=143){K[e+16>>2]=g;b=(t<<9)+b|0;r=7;break ae}K[e+12>>2]=K[e+12>>2]+1;b=b+65280|0;r=8}r=r-1|0;b=b<<1;c=c<<1;if(c>>>0<32768){continue}break}g=c;q=q?p:!p}f=q;c=d+s|0;q=K[c>>2];K[c>>2]=q+((f|0)==(q>>>31|0)?h:v);j=j|536870912}K[l>>2]=j}f=l+4|0;d=d+4|0;n=n+1|0;if((u|0)!=(n|0)){continue}break}f=l+12|0;d=d+s|0;o=o+4|0;c=K[e+128>>2];if(o>>>0<(c&-4)>>>0){continue}break}break Qd}l=(c&-4)-1|0;o=(l&-4)+4|0;f=(j+(l<<1&-8)|0)+20|0}K[e+8>>2]=r;K[e+4>>2]=g;K[e>>2]=b;K[e+104>>2]=k;if(!u|c>>>0<=o>>>0){break Wa}C=0;l=0-v|0;b=c;while(1){be:{if((b|0)==(o|0)){b=o;break be}r=K[f>>2];h=0;while(1){p=Q(h,3);if((2097168<>>p|0;j=ea+((b&1048576?16:b&495?15:14)<<2)|0;K[e+104>>2]=j;q=K[j>>2];b=K[q>>2];c=K[e+4>>2]-b|0;K[e+4>>2]=c;g=K[e>>2];ce:{if(g>>>16>>>0>>0){m=K[q+4>>2];K[e+4>>2]=b;c=b>>>0>c>>>0;K[j>>2]=K[q+(c?8:12)>>2];r=K[e+8>>2];while(1){de:{if(r){break de}q=K[e+16>>2];j=q+1|0;i=L[q+1|0];if(L[q|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;g=g+65280|0;r=8;break de}K[e+16>>2]=j;g=(i<<9)+g|0;r=7;break de}K[e+16>>2]=j;r=8;g=(i<<8)+g|0}r=r-1|0;K[e+8>>2]=r;g=g<<1;K[e>>2]=g;b=b<<1;K[e+4>>2]=b;if(b>>>0<32768){continue}break}c=c?m:!m;break ce}g=g-(b<<16)|0;K[e>>2]=g;if(!(c&32768)){m=K[q+4>>2];b=b>>>0>c>>>0;K[j>>2]=K[q+(b?12:8)>>2];r=K[e+8>>2];while(1){ee:{if(r){break ee}q=K[e+16>>2];j=q+1|0;i=L[q+1|0];if(L[q|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;g=g+65280|0;r=8;break ee}K[e+16>>2]=j;g=(i<<9)+g|0;r=7;break ee}K[e+16>>2]=j;r=8;g=(i<<8)+g|0}r=r-1|0;K[e+8>>2]=r;g=g<<1;K[e>>2]=g;c=c<<1;K[e+4>>2]=c;if(c>>>0<32768){continue}break}c=b?!m:m;break ce}c=K[q+4>>2]}b=K[k>>2];K[k>>2]=((c|0)==(b>>>31|0)?l:v)+b;r=K[f>>2]|1048576<>2]=r;c=K[e+128>>2]}h=h+1|0;b=c;if(h>>>0>>0){continue}break}}f=f+4|0;d=d+4|0;C=C+1|0;if((u|0)!=(C|0)){continue}break};break Wa;case 1:break Xa}}H=0;v=0;fe:{ge:{he:{U=K[e+124>>2];if(!((U|0)!=64|K[e+128>>2]!=64)){b=1<>>1|b;u=0-C|0;q=e+100|0;l=e+96|0;z=e+28|0;g=K[e+120>>2]+268|0;h=K[e+8>>2];b=K[e+4>>2];d=K[e>>2];j=K[e+104>>2];c=K[e+116>>2];if(_&8){break he}while(1){t=0;while(1){k=c;f=g;g=K[g>>2];ie:{je:{ke:{if(!g){j=K[l>>2];g=K[j>>2];b=b-g|0;le:{if(d>>>16>>>0>>0){m=K[j+4>>2];c=b>>>0>>0;K[l>>2]=K[j+(c?8:12)>>2];while(1){me:{if(h){break me}j=K[e+16>>2];b=j+1|0;o=L[j+1|0];if(L[j|0]==255){if(o>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break me}K[e+16>>2]=b;d=(o<<9)+d|0;h=7;break me}K[e+16>>2]=b;h=8;d=(o<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?m:!m;break le}d=d-(g<<16)|0;if(!(b&32768)){m=K[j+4>>2];c=b>>>0>>0;K[l>>2]=K[j+(c?12:8)>>2];while(1){ne:{if(h){break ne}j=K[e+16>>2];g=j+1|0;o=L[j+1|0];if(L[j|0]==255){if(o>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ne}K[e+16>>2]=g;d=(o<<9)+d|0;h=7;break ne}K[e+16>>2]=g;h=8;d=(o<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!m:m;break le}c=K[j+4>>2]}if(!c){j=l;break ie}c=K[q>>2];g=K[c>>2];b=b-g|0;oe:{if(d>>>16>>>0>>0){o=K[c+4>>2];j=b>>>0>>0;c=K[(j?8:12)+c>>2];K[q>>2]=c;while(1){pe:{if(h){break pe}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break pe}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break pe}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;m=j?o:!o;break oe}d=d-(g<<16)|0;if(!(b&32768)){o=K[c+4>>2];g=b>>>0>>0;c=K[(g?12:8)+c>>2];K[q>>2]=c;while(1){qe:{if(h){break qe}m=K[e+16>>2];j=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break qe}K[e+16>>2]=j;d=(i<<9)+d|0;h=7;break qe}K[e+16>>2]=j;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=g?!o:o;break oe}m=K[c+4>>2]}g=K[c>>2];b=b-g|0;re:{if(d>>>16>>>0>>0){o=K[c+4>>2];j=c;c=b>>>0>>0;K[q>>2]=K[j+(c?8:12)>>2];while(1){se:{if(h){break se}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break se}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break se}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?o:!o;break re}d=d-(g<<16)|0;if(!(b&32768)){o=K[c+4>>2];j=c;c=b>>>0>>0;K[q>>2]=K[j+(c?12:8)>>2];while(1){te:{if(h){break te}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break te}K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break te}K[e+16>>2]=g;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break re}c=K[c+4>>2]}g=0;j=q;ue:{ve:{we:{xe:{ye:{switch(c|m<<1){case 0:i=f-4|0;j=K[f+4>>2]>>>17&4|K[i>>2]>>>19&1;c=z+(L[j+24336|0]<<2)|0;m=K[c>>2];g=K[m>>2];b=b-g|0;ze:{if(d>>>16>>>0>>0){o=K[m+4>>2];p=c;c=b>>>0>>0;K[p>>2]=K[m+(c?8:12)>>2];while(1){Ae:{if(h){break Ae}m=K[e+16>>2];b=m+1|0;p=L[m+1|0];if(L[m|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ae}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Ae}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;m=c?o:!o;break ze}d=d-(g<<16)|0;if(!(b&32768)){o=K[m+4>>2];p=c;c=b>>>0>>0;K[p>>2]=K[m+(c?12:8)>>2];while(1){Be:{if(h){break Be}m=K[e+16>>2];g=m+1|0;p=L[m+1|0];if(L[m|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Be}K[e+16>>2]=g;d=(p<<9)+d|0;h=7;break Be}K[e+16>>2]=g;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!o:o;break ze}m=K[m+4>>2]}g=L[j+24592|0];K[k>>2]=(m|0)==(g|0)?C:u;K[i>>2]=K[i>>2]|32;K[f+4>>2]=K[f+4>>2]|8;c=f-268|0;K[c>>2]=K[c>>2]|131072;c=f-260|0;K[c>>2]=K[c>>2]|32768;c=f-264|0;j=c;i=K[c>>2];c=g^m;K[j>>2]=i|c<<31|65536;j=c<<19;r=K[e+108>>2];c=z+(L[r+2|0]<<2)|0;m=K[c>>2];g=K[m>>2];b=b-g|0;Ce:{if(d>>>16>>>0>>0){o=K[m+4>>2];i=c;c=b>>>0>>0;K[i>>2]=K[m+(c?8:12)>>2];while(1){De:{if(h){break De}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break De}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break De}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?o:!o;break Ce}d=d-(g<<16)|0;if(!(b&32768)){o=K[m+4>>2];i=c;c=b>>>0>>0;K[i>>2]=K[m+(c?12:8)>>2];while(1){Ee:{if(h){break Ee}m=K[e+16>>2];g=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ee}K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break Ee}K[e+16>>2]=g;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break Ce}c=K[m+4>>2]}g=j|16;if(!c){break xe}break;case 1:break ye;case 2:break we;case 3:break ue;default:break je}}p=f-4|0;m=K[f+4>>2]>>>20&4|(K[p>>2]>>>22&1|(g>>>15&16|(g>>>19&64|g>>>3&170)));j=z+(L[m+24336|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;Fe:{if(d>>>16>>>0>>0){i=K[o+4>>2];n=j;j=b>>>0>>0;K[n>>2]=K[o+(j?8:12)>>2];while(1){Ge:{if(h){break Ge}o=K[e+16>>2];b=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ge}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Ge}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=j?i:!i;break Fe}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){He:{if(h){break He}o=K[e+16>>2];j=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break He}K[e+16>>2]=j;d=(n<<9)+d|0;h=7;break He}K[e+16>>2]=j;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!i:i;break Fe}j=K[o+4>>2]}c=L[m+24592|0];K[k+256>>2]=(j|0)==(c|0)?C:u;K[p>>2]=K[p>>2]|256;K[f+4>>2]=K[f+4>>2]|64;r=K[e+108>>2];g=(c^j)<<22|g|128}j=z+(L[(g>>>6&495)+r|0]<<2)|0;m=K[j>>2];c=K[m>>2];b=b-c|0;Ie:{if(d>>>16>>>0>>0){o=K[m+4>>2];i=j;j=b>>>0>>0;K[i>>2]=K[m+(j?8:12)>>2];while(1){Je:{if(h){break Je}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Je}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break Je}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=j?o:!o;break Ie}d=d-(c<<16)|0;if(!(b&32768)){o=K[m+4>>2];c=b>>>0>>0;K[j>>2]=K[m+(c?12:8)>>2];while(1){Ke:{if(h){break Ke}m=K[e+16>>2];j=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ke}K[e+16>>2]=j;d=(i<<9)+d|0;h=7;break Ke}K[e+16>>2]=j;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break Ie}c=K[m+4>>2]}if(!c){break ve}}p=f-4|0;m=K[f+4>>2]>>>23&4|(K[p>>2]>>>25&1|(g>>>18&16|(g>>>22&64|g>>>6&170)));j=z+(L[m+24336|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;Le:{if(d>>>16>>>0>>0){i=K[o+4>>2];n=j;j=b>>>0>>0;K[n>>2]=K[o+(j?8:12)>>2];while(1){Me:{if(h){break Me}o=K[e+16>>2];b=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Me}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Me}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=j?i:!i;break Le}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){Ne:{if(h){break Ne}o=K[e+16>>2];j=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ne}K[e+16>>2]=j;d=(n<<9)+d|0;h=7;break Ne}K[e+16>>2]=j;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!i:i;break Le}j=K[o+4>>2]}c=L[m+24592|0];K[k+512>>2]=(j|0)==(c|0)?C:u;K[p>>2]=K[p>>2]|2048;K[f+4>>2]=K[f+4>>2]|512;g=(c^j)<<25|g|1024;r=K[e+108>>2]}j=z+(L[(g>>>9&495)+r|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;Oe:{if(d>>>16>>>0>>0){i=K[o+4>>2];m=b>>>0>>0;K[j>>2]=K[o+(m?8:12)>>2];while(1){Pe:{if(h){break Pe}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Pe}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Pe}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?i:!i;break Oe}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){Qe:{if(h){break Qe}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Qe}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break Qe}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!i:i;break Oe}c=K[o+4>>2]}if(!c){break je}}H=f-4|0;n=K[f+4>>2]>>>26&4|(K[H>>2]>>>28&1|(g>>>21&16|(g>>>25&64|g>>>9&170)));j=z+(L[n+24336|0]<<2)|0;r=K[j>>2];c=K[r>>2];b=b-c|0;break ke}Re:{if(g&2097168){break Re}j=z+(L[K[e+108>>2]+(g&495)|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;Se:{if(d>>>16>>>0>>0){i=K[o+4>>2];m=b>>>0>>0;K[j>>2]=K[o+(m?8:12)>>2];while(1){Te:{if(h){break Te}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Te}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Te}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?i:!i;break Se}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){Ue:{if(h){break Ue}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ue}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break Ue}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!i:i;break Se}c=K[o+4>>2]}if(!c){break Re}n=f-4|0;o=K[f+4>>2]>>>17&4|(K[n>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Ve:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){We:{if(h){break We}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break We}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break We}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;i=m?p:!p;break Ve}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Xe:{if(h){break Xe}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Xe}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break Xe}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=c?!p:p;break Ve}i=K[i+4>>2]}m=L[o+24592|0];K[k>>2]=(i|0)==(m|0)?C:u;K[n>>2]=K[n>>2]|32;K[f+4>>2]=K[f+4>>2]|8;c=f-268|0;K[c>>2]=K[c>>2]|131072;c=f-260|0;K[c>>2]=K[c>>2]|32768;c=f-264|0;o=c;p=K[c>>2];c=i^m;K[o>>2]=p|c<<31|65536;g=c<<19|g|16}Ye:{if(g&16777344){break Ye}o=g>>>3|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Ze:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){_e:{if(h){break _e}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break _e}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break _e}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break Ze}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){$e:{if(h){break $e}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break $e}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break $e}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break Ze}c=K[i+4>>2]}if(!c){break Ye}n=f-4|0;o=K[f+4>>2]>>>20&4|(K[n>>2]>>>22&1|(g>>>15&16|(g>>>19&64|o&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;af:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){bf:{if(h){break bf}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break bf}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break bf}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?p:!p;break af}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){cf:{if(h){break cf}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break cf}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break cf}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!p:p;break af}m=K[i+4>>2]}c=L[o+24592|0];K[k+256>>2]=(m|0)==(c|0)?C:u;K[n>>2]=K[n>>2]|256;K[f+4>>2]=K[f+4>>2]|64;g=(c^m)<<22|g|128}df:{if(g&134218752){break df}o=g>>>6|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;ef:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){ff:{if(h){break ff}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ff}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break ff}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break ef}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){gf:{if(h){break gf}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break gf}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break gf}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break ef}c=K[i+4>>2]}if(!c){break df}n=f-4|0;o=K[f+4>>2]>>>23&4|(K[n>>2]>>>25&1|(g>>>18&16|(g>>>22&64|o&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;hf:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){jf:{if(h){break jf}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break jf}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break jf}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?p:!p;break hf}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){kf:{if(h){break kf}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break kf}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break kf}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!p:p;break hf}m=K[i+4>>2]}c=L[o+24592|0];K[k+512>>2]=(m|0)==(c|0)?C:u;K[n>>2]=K[n>>2]|2048;K[f+4>>2]=K[f+4>>2]|512;g=(c^m)<<25|g|1024}if(g&1073750016){break je}o=g>>>9|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;lf:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){mf:{if(h){break mf}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break mf}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break mf}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break lf}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){nf:{if(h){break nf}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break nf}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break nf}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break lf}c=K[i+4>>2]}if(!c){break je}H=f-4|0;n=K[f+4>>2]>>>26&4|(K[H>>2]>>>28&1|(g>>>21&16|(g>>>25&64|o&170)));j=z+(L[n+24336|0]<<2)|0;r=K[j>>2];c=K[r>>2];b=b-c|0}of:{if(d>>>16>>>0>>0){i=K[r+4>>2];m=b>>>0>>0;K[j>>2]=K[(m?8:12)+r>>2];while(1){pf:{if(h){break pf}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break pf}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break pf}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?i:!i;break of}d=d-(c<<16)|0;if(!(b&32768)){i=K[r+4>>2];c=b>>>0>>0;K[j>>2]=K[(c?12:8)+r>>2];while(1){qf:{if(h){break qf}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break qf}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break qf}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!i:i;break of}m=K[r+4>>2]}c=L[n+24592|0];K[k+768>>2]=(m|0)==(c|0)?C:u;K[H>>2]=K[H>>2]|16384;K[f+4>>2]=K[f+4>>2]|4096;K[f+260>>2]=K[f+260>>2]|4;K[f+268>>2]=K[f+268>>2]|1;c=c^m;K[f+264>>2]=K[f+264>>2]|c<<18|2;g=c<<28|g|8192}K[f>>2]=g&-1226833921}g=f+4|0;c=k+4|0;t=t+1|0;if((t|0)!=64){continue}break}g=f+12|0;c=k+772|0;m=v>>>0<60;v=v+4|0;if(m){continue}break}break ge}b=1<>>1|b;l=K[e+120>>2];c=(l+(U<<2)|0)+12|0;g=K[e+128>>2];h=K[e+8>>2];b=K[e+4>>2];d=K[e>>2];j=K[e+104>>2];o=K[e+116>>2];if(_&8){rf:{if(g>>>0<4){break rf}if(U){m=e+100|0;q=e+96|0;t=Q(U,12);s=U<<3;u=0-z|0;C=e+28|0;while(1){V=0;while(1){k=c;c=K[c>>2];sf:{tf:{uf:{if(c){vf:{if(c&2097168){break vf}j=C+(L[K[e+108>>2]+(c&495)|0]<<2)|0;f=K[j>>2];g=K[f>>2];b=b-g|0;wf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[f+4>>2];if(b&32768){break wf}i=K[f+4>>2];g=b>>>0>>0;K[j>>2]=K[f+(g?12:8)>>2];while(1){xf:{if(h){break xf}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break xf}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break xf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break wf}i=K[f+4>>2];l=b>>>0>>0;K[j>>2]=K[f+(l?8:12)>>2];while(1){yf:{if(h){break yf}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break yf}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break yf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}if(!l){break vf}n=k-4|0;f=K[k+4>>2]>>>17&4|(K[n>>2]>>>19&1|(c>>>14&16|(c>>>16&64|c&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;zf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break zf}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Af:{if(h){break Af}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Af}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Af}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break zf}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Bf:{if(h){break Bf}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break Bf}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break Bf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[o>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|32;K[k+4>>2]=K[k+4>>2]|8;c=(g^l)<<19|c|16}Cf:{if(c&16777344){break Cf}f=c>>>3|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Df:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Df}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Ef:{if(h){break Ef}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Ef}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Ef}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Df}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Ff:{if(h){break Ff}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Ff}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Ff}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break Cf}n=k-4|0;f=K[k+4>>2]>>>20&4|(K[n>>2]>>>22&1|(c>>>15&16|(c>>>19&64|f&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Y=(U<<2)+o|0;Gf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Gf}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Hf:{if(h){break Hf}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Hf}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Hf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Gf}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){If:{if(h){break If}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break If}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break If}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|256;K[k+4>>2]=K[k+4>>2]|64;c=(g^l)<<22|c|128}Jf:{if(c&134218752){break Jf}f=c>>>6|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Kf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Kf}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Lf:{if(h){break Lf}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Lf}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Lf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Kf}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Mf:{if(h){break Mf}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Mf}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Mf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break Jf}n=k-4|0;f=K[k+4>>2]>>>23&4|(K[n>>2]>>>25&1|(c>>>18&16|(c>>>22&64|f&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Y=o+s|0;Nf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Nf}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Of:{if(h){break Of}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Of}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Of}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Nf}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Pf:{if(h){break Pf}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break Pf}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break Pf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|2048;K[k+4>>2]=K[k+4>>2]|512;c=(g^l)<<25|c|1024}if(c&1073750016){break tf}f=c>>>9|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Qf:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Qf}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Rf:{if(h){break Rf}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Rf}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Rf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Qf}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Sf:{if(h){break Sf}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Sf}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Sf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break tf}n=k-4|0;X=K[k+4>>2]>>>26&4|(K[n>>2]>>>28&1|(c>>>21&16|(c>>>25&64|f&170)));j=C+(L[X+24336|0]<<2)|0;r=K[j>>2];g=K[r>>2];b=b-g|0;break uf}l=K[q>>2];c=K[l>>2];b=b-c|0;Tf:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;g=K[l+4>>2];if(b&32768){break Tf}j=K[l+4>>2];c=b>>>0>>0;K[q>>2]=K[l+(c?12:8)>>2];while(1){Uf:{if(h){break Uf}l=K[e+16>>2];g=l+1|0;f=L[l+1|0];if(L[l|0]!=255){K[e+16>>2]=g;h=8;d=(f<<8)+d|0;break Uf}if(f>>>0<=143){K[e+16>>2]=g;d=(f<<9)+d|0;h=7;break Uf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}g=c?!j:j;break Tf}j=K[l+4>>2];g=b>>>0>>0;K[q>>2]=K[l+(g?8:12)>>2];while(1){Vf:{if(h){break Vf}l=K[e+16>>2];b=l+1|0;f=L[l+1|0];if(L[l|0]!=255){K[e+16>>2]=b;h=8;d=(f<<8)+d|0;break Vf}if(f>>>0<=143){K[e+16>>2]=b;d=(f<<9)+d|0;h=7;break Vf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;g=g?j:!j}if(!g){j=q;break sf}g=K[m>>2];c=K[g>>2];b=b-c|0;Wf:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;l=K[g+4>>2];if(b&32768){break Wf}f=K[g+4>>2];c=b>>>0>>0;g=K[(c?12:8)+g>>2];K[m>>2]=g;while(1){Xf:{if(h){break Xf}j=K[e+16>>2];l=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=l;h=8;d=(i<<8)+d|0;break Xf}if(i>>>0<=143){K[e+16>>2]=l;d=(i<<9)+d|0;h=7;break Xf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=c?!f:f;break Wf}f=K[g+4>>2];l=b>>>0>>0;g=K[(l?8:12)+g>>2];K[m>>2]=g;while(1){Yf:{if(h){break Yf}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break Yf}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break Yf}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;l=l?f:!f}c=K[g>>2];b=b-c|0;Zf:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;j=K[g+4>>2];if(b&32768){break Zf}f=K[g+4>>2];c=b>>>0>>0;K[m>>2]=K[(c?12:8)+g>>2];while(1){_f:{if(h){break _f}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(i<<8)+d|0;break _f}if(i>>>0<=143){K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break _f}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!f:f;break Zf}f=K[g+4>>2];j=g;g=b>>>0>>0;K[m>>2]=K[j+(g?8:12)>>2];while(1){$f:{if(h){break $f}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break $f}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break $f}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=g?f:!f}g=j;c=0;j=m;ag:{bg:{cg:{dg:{eg:{switch(g|l<<1){case 0:i=k-4|0;l=K[k+4>>2]>>>17&4|K[i>>2]>>>19&1;g=C+(L[l+24336|0]<<2)|0;j=K[g>>2];c=K[j>>2];b=b-c|0;fg:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;f=K[j+4>>2];if(b&32768){break fg}f=K[j+4>>2];c=b>>>0>>0;K[g>>2]=K[j+(c?12:8)>>2];while(1){gg:{if(h){break gg}j=K[e+16>>2];g=j+1|0;p=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(p<<8)+d|0;break gg}if(p>>>0<=143){K[e+16>>2]=g;d=(p<<9)+d|0;h=7;break gg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}f=c?!f:f;break fg}f=K[j+4>>2];p=g;g=b>>>0>>0;K[p>>2]=K[j+(g?8:12)>>2];while(1){hg:{if(h){break hg}j=K[e+16>>2];b=j+1|0;p=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break hg}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break hg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;f=g?f:!f}g=f;c=L[l+24592|0];K[o>>2]=(g|0)==(c|0)?z:u;K[i>>2]=K[i>>2]|32;K[k+4>>2]=K[k+4>>2]|8;l=(c^g)<<19;r=K[e+108>>2];g=C+(L[r+2|0]<<2)|0;j=K[g>>2];c=K[j>>2];b=b-c|0;ig:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;i=K[j+4>>2];if(b&32768){break ig}f=K[j+4>>2];c=b>>>0>>0;K[g>>2]=K[j+(c?12:8)>>2];while(1){jg:{if(h){break jg}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(i<<8)+d|0;break jg}if(i>>>0<=143){K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break jg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=c?!f:f;break ig}f=K[j+4>>2];i=g;g=b>>>0>>0;K[i>>2]=K[j+(g?8:12)>>2];while(1){kg:{if(h){break kg}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break kg}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break kg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;i=g?f:!f}g=i;c=l|16;if(!g){break dg}break;case 1:break eg;case 2:break cg;case 3:break ag;default:break tf}}p=k-4|0;j=K[k+4>>2]>>>20&4|(K[p>>2]>>>22&1|(c>>>15&16|(c>>>19&64|c>>>3&170)));l=C+(L[j+24336|0]<<2)|0;f=K[l>>2];g=K[f>>2];b=b-g|0;r=(U<<2)+o|0;lg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[f+4>>2];if(b&32768){break lg}i=K[f+4>>2];g=b>>>0>>0;K[l>>2]=K[f+(g?12:8)>>2];while(1){mg:{if(h){break mg}f=K[e+16>>2];l=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break mg}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break mg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!i:i;break lg}i=K[f+4>>2];n=l;l=b>>>0>>0;K[n>>2]=K[f+(l?8:12)>>2];while(1){ng:{if(h){break ng}f=K[e+16>>2];b=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break ng}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break ng}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?i:!i}l=i;g=L[j+24592|0];K[r>>2]=(l|0)==(g|0)?z:u;K[p>>2]=K[p>>2]|256;K[k+4>>2]=K[k+4>>2]|64;r=K[e+108>>2];c=(g^l)<<22|c|128}l=C+(L[(c>>>6&495)+r|0]<<2)|0;j=K[l>>2];g=K[j>>2];b=b-g|0;og:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[j+4>>2];if(b&32768){break og}f=K[j+4>>2];g=b>>>0>>0;K[l>>2]=K[j+(g?12:8)>>2];while(1){pg:{if(h){break pg}j=K[e+16>>2];l=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=l;h=8;d=(i<<8)+d|0;break pg}if(i>>>0<=143){K[e+16>>2]=l;d=(i<<9)+d|0;h=7;break pg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!f:f;break og}f=K[j+4>>2];i=l;l=b>>>0>>0;K[i>>2]=K[j+(l?8:12)>>2];while(1){qg:{if(h){break qg}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break qg}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break qg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?f:!f}if(!i){break bg}}p=k-4|0;j=K[k+4>>2]>>>23&4|(K[p>>2]>>>25&1|(c>>>18&16|(c>>>22&64|c>>>6&170)));l=C+(L[j+24336|0]<<2)|0;f=K[l>>2];g=K[f>>2];b=b-g|0;r=o+s|0;rg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[f+4>>2];if(b&32768){break rg}i=K[f+4>>2];g=b>>>0>>0;K[l>>2]=K[f+(g?12:8)>>2];while(1){sg:{if(h){break sg}f=K[e+16>>2];l=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break sg}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break sg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!i:i;break rg}i=K[f+4>>2];n=l;l=b>>>0>>0;K[n>>2]=K[f+(l?8:12)>>2];while(1){tg:{if(h){break tg}f=K[e+16>>2];b=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break tg}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break tg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?i:!i}l=i;g=L[j+24592|0];K[r>>2]=(l|0)==(g|0)?z:u;K[p>>2]=K[p>>2]|2048;K[k+4>>2]=K[k+4>>2]|512;c=(g^l)<<25|c|1024;r=K[e+108>>2]}j=C+(L[(c>>>9&495)+r|0]<<2)|0;f=K[j>>2];g=K[f>>2];b=b-g|0;ug:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[f+4>>2];if(b&32768){break ug}i=K[f+4>>2];g=b>>>0>>0;K[j>>2]=K[f+(g?12:8)>>2];while(1){vg:{if(h){break vg}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break vg}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break vg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break ug}i=K[f+4>>2];l=b>>>0>>0;K[j>>2]=K[f+(l?8:12)>>2];while(1){wg:{if(h){break wg}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break wg}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break wg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}if(!l){break tf}}n=k-4|0;X=K[k+4>>2]>>>26&4|(K[n>>2]>>>28&1|(c>>>21&16|(c>>>25&64|c>>>9&170)));j=C+(L[X+24336|0]<<2)|0;r=K[j>>2];g=K[r>>2];b=b-g|0}Y=o+t|0;xg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[r+4>>2];if(b&32768){break xg}i=K[r+4>>2];g=b>>>0>>0;K[j>>2]=K[(g?12:8)+r>>2];while(1){yg:{if(h){break yg}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break yg}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break yg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break xg}i=K[r+4>>2];l=b>>>0>>0;K[j>>2]=K[(l?8:12)+r>>2];while(1){zg:{if(h){break zg}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break zg}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break zg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}g=L[X+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|16384;K[k+4>>2]=K[k+4>>2]|4096;f=k+(K[e+124>>2]<<2)|0;K[f+4>>2]=K[f+4>>2]|4;K[f+12>>2]=K[f+12>>2]|1;g=g^l;K[f+8>>2]=K[f+8>>2]|g<<18|2;c=g<<28|c|8192}K[k>>2]=c&-1226833921}c=k+4|0;o=o+4|0;V=V+1|0;if((U|0)!=(V|0)){continue}break}c=k+12|0;o=o+t|0;v=v+4|0;g=K[e+128>>2];if(v>>>0<(g&-4)>>>0){continue}break}break rf}c=(g&-4)-1|0;v=(c&-4)+4|0;c=(l+(c<<1&-8)|0)+20|0}K[e+8>>2]=h;K[e+4>>2]=b;K[e>>2]=d;K[e+104>>2]=j;if(!U|g>>>0<=v>>>0){break fe}while(1){h=0;if(K[e+128>>2]!=(v|0)){while(1){kc(e,c,(Q(h,U)<<2)+o|0,z,h,1);h=h+1|0;if(h>>>0>2]-v>>>0){continue}break}}K[c>>2]=K[c>>2]&-1226833921;o=o+4|0;c=c+4|0;H=H+1|0;if((U|0)!=(H|0)){continue}break}break fe}Ag:{if(g>>>0<4){break Ag}if(U){m=e+100|0;q=e+96|0;t=Q(U,12);s=U<<3;u=0-z|0;C=e+28|0;while(1){V=0;while(1){k=c;c=K[c>>2];Bg:{Cg:{Dg:{if(c){Eg:{if(c&2097168){break Eg}j=C+(L[K[e+108>>2]+(c&495)|0]<<2)|0;f=K[j>>2];g=K[f>>2];b=b-g|0;Fg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[f+4>>2];if(b&32768){break Fg}i=K[f+4>>2];g=b>>>0>>0;K[j>>2]=K[f+(g?12:8)>>2];while(1){Gg:{if(h){break Gg}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break Gg}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break Gg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break Fg}i=K[f+4>>2];l=b>>>0>>0;K[j>>2]=K[f+(l?8:12)>>2];while(1){Hg:{if(h){break Hg}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break Hg}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Hg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}if(!l){break Eg}n=k-4|0;f=K[k+4>>2]>>>17&4|(K[n>>2]>>>19&1|(c>>>14&16|(c>>>16&64|c&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Ig:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Ig}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Jg:{if(h){break Jg}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Jg}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Jg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Ig}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Kg:{if(h){break Kg}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break Kg}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break Kg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[o>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|32;K[k+4>>2]=K[k+4>>2]|8;f=k+(-2-K[e+124>>2]<<2)|0;K[f+4>>2]=K[f+4>>2]|32768;l=g^l;K[f>>2]=K[f>>2]|l<<31|65536;g=f-4|0;K[g>>2]=K[g>>2]|131072;c=l<<19|c|16}Lg:{if(c&16777344){break Lg}f=c>>>3|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Mg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Mg}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Ng:{if(h){break Ng}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Ng}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Ng}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Mg}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Og:{if(h){break Og}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Og}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Og}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break Lg}n=k-4|0;f=K[k+4>>2]>>>20&4|(K[n>>2]>>>22&1|(c>>>15&16|(c>>>19&64|f&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Y=(U<<2)+o|0;Pg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Pg}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Qg:{if(h){break Qg}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Qg}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Qg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Pg}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Rg:{if(h){break Rg}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break Rg}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break Rg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|256;K[k+4>>2]=K[k+4>>2]|64;c=(g^l)<<22|c|128}Sg:{if(c&134218752){break Sg}f=c>>>6|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Tg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Tg}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Ug:{if(h){break Ug}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Ug}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Ug}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Tg}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Vg:{if(h){break Vg}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Vg}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Vg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break Sg}n=k-4|0;f=K[k+4>>2]>>>23&4|(K[n>>2]>>>25&1|(c>>>18&16|(c>>>22&64|f&170)));j=C+(L[f+24336|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Y=o+s|0;Wg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Wg}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){Xg:{if(h){break Xg}i=K[e+16>>2];l=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(r<<8)+d|0;break Xg}if(r>>>0<=143){K[e+16>>2]=l;d=(r<<9)+d|0;h=7;break Xg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Wg}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){Yg:{if(h){break Yg}i=K[e+16>>2];b=i+1|0;r=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(r<<8)+d|0;break Yg}if(r>>>0<=143){K[e+16>>2]=b;d=(r<<9)+d|0;h=7;break Yg}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}g=L[f+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|2048;K[k+4>>2]=K[k+4>>2]|512;c=(g^l)<<25|c|1024}if(c&1073750016){break Cg}f=c>>>9|0;j=C+(L[K[e+108>>2]+(f&495)|0]<<2)|0;i=K[j>>2];g=K[i>>2];b=b-g|0;Zg:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[i+4>>2];if(b&32768){break Zg}p=K[i+4>>2];g=b>>>0>>0;K[j>>2]=K[i+(g?12:8)>>2];while(1){_g:{if(h){break _g}i=K[e+16>>2];l=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break _g}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break _g}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!p:p;break Zg}p=K[i+4>>2];l=b>>>0>>0;K[j>>2]=K[i+(l?8:12)>>2];while(1){$g:{if(h){break $g}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break $g}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break $g}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?p:!p}if(!l){break Cg}n=k-4|0;X=K[k+4>>2]>>>26&4|(K[n>>2]>>>28&1|(c>>>21&16|(c>>>25&64|f&170)));j=C+(L[X+24336|0]<<2)|0;r=K[j>>2];g=K[r>>2];b=b-g|0;break Dg}l=K[q>>2];c=K[l>>2];b=b-c|0;ah:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;g=K[l+4>>2];if(b&32768){break ah}j=K[l+4>>2];c=b>>>0>>0;K[q>>2]=K[l+(c?12:8)>>2];while(1){bh:{if(h){break bh}l=K[e+16>>2];g=l+1|0;f=L[l+1|0];if(L[l|0]!=255){K[e+16>>2]=g;h=8;d=(f<<8)+d|0;break bh}if(f>>>0<=143){K[e+16>>2]=g;d=(f<<9)+d|0;h=7;break bh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}g=c?!j:j;break ah}j=K[l+4>>2];g=b>>>0>>0;K[q>>2]=K[l+(g?8:12)>>2];while(1){ch:{if(h){break ch}l=K[e+16>>2];b=l+1|0;f=L[l+1|0];if(L[l|0]!=255){K[e+16>>2]=b;h=8;d=(f<<8)+d|0;break ch}if(f>>>0<=143){K[e+16>>2]=b;d=(f<<9)+d|0;h=7;break ch}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;g=g?j:!j}if(!g){j=q;break Bg}g=K[m>>2];c=K[g>>2];b=b-c|0;dh:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;l=K[g+4>>2];if(b&32768){break dh}f=K[g+4>>2];c=b>>>0>>0;g=K[(c?12:8)+g>>2];K[m>>2]=g;while(1){eh:{if(h){break eh}j=K[e+16>>2];l=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=l;h=8;d=(i<<8)+d|0;break eh}if(i>>>0<=143){K[e+16>>2]=l;d=(i<<9)+d|0;h=7;break eh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=c?!f:f;break dh}f=K[g+4>>2];l=b>>>0>>0;g=K[(l?8:12)+g>>2];K[m>>2]=g;while(1){fh:{if(h){break fh}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break fh}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break fh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;l=l?f:!f}c=K[g>>2];b=b-c|0;gh:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;j=K[g+4>>2];if(b&32768){break gh}f=K[g+4>>2];c=b>>>0>>0;K[m>>2]=K[(c?12:8)+g>>2];while(1){hh:{if(h){break hh}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(i<<8)+d|0;break hh}if(i>>>0<=143){K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break hh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!f:f;break gh}f=K[g+4>>2];j=g;g=b>>>0>>0;K[m>>2]=K[j+(g?8:12)>>2];while(1){ih:{if(h){break ih}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break ih}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break ih}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=g?f:!f}g=j;c=0;j=m;jh:{kh:{lh:{mh:{nh:{switch(g|l<<1){case 0:i=k-4|0;l=K[k+4>>2]>>>17&4|K[i>>2]>>>19&1;g=C+(L[l+24336|0]<<2)|0;j=K[g>>2];c=K[j>>2];b=b-c|0;oh:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;f=K[j+4>>2];if(b&32768){break oh}f=K[j+4>>2];c=b>>>0>>0;K[g>>2]=K[j+(c?12:8)>>2];while(1){ph:{if(h){break ph}j=K[e+16>>2];g=j+1|0;p=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(p<<8)+d|0;break ph}if(p>>>0<=143){K[e+16>>2]=g;d=(p<<9)+d|0;h=7;break ph}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}f=c?!f:f;break oh}f=K[j+4>>2];p=g;g=b>>>0>>0;K[p>>2]=K[j+(g?8:12)>>2];while(1){qh:{if(h){break qh}j=K[e+16>>2];b=j+1|0;p=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break qh}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break qh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;f=g?f:!f}g=f;c=L[l+24592|0];K[o>>2]=(g|0)==(c|0)?z:u;K[i>>2]=K[i>>2]|32;K[k+4>>2]=K[k+4>>2]|8;l=k+(-2-K[e+124>>2]<<2)|0;K[l+4>>2]=K[l+4>>2]|32768;g=c^g;K[l>>2]=K[l>>2]|g<<31|65536;c=l-4|0;K[c>>2]=K[c>>2]|131072;l=g<<19;r=K[e+108>>2];g=C+(L[r+2|0]<<2)|0;j=K[g>>2];c=K[j>>2];b=b-c|0;rh:{if(d>>>16>>>0>=c>>>0){d=d-(c<<16)|0;i=K[j+4>>2];if(b&32768){break rh}f=K[j+4>>2];c=b>>>0>>0;K[g>>2]=K[j+(c?12:8)>>2];while(1){sh:{if(h){break sh}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=g;h=8;d=(i<<8)+d|0;break sh}if(i>>>0<=143){K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break sh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=c?!f:f;break rh}f=K[j+4>>2];i=g;g=b>>>0>>0;K[i>>2]=K[j+(g?8:12)>>2];while(1){th:{if(h){break th}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break th}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break th}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;i=g?f:!f}g=i;c=l|16;if(!g){break mh}break;case 1:break nh;case 2:break lh;case 3:break jh;default:break Cg}}p=k-4|0;j=K[k+4>>2]>>>20&4|(K[p>>2]>>>22&1|(c>>>15&16|(c>>>19&64|c>>>3&170)));l=C+(L[j+24336|0]<<2)|0;f=K[l>>2];g=K[f>>2];b=b-g|0;r=(U<<2)+o|0;uh:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[f+4>>2];if(b&32768){break uh}i=K[f+4>>2];g=b>>>0>>0;K[l>>2]=K[f+(g?12:8)>>2];while(1){vh:{if(h){break vh}f=K[e+16>>2];l=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break vh}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break vh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!i:i;break uh}i=K[f+4>>2];n=l;l=b>>>0>>0;K[n>>2]=K[f+(l?8:12)>>2];while(1){wh:{if(h){break wh}f=K[e+16>>2];b=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break wh}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break wh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?i:!i}l=i;g=L[j+24592|0];K[r>>2]=(l|0)==(g|0)?z:u;K[p>>2]=K[p>>2]|256;K[k+4>>2]=K[k+4>>2]|64;r=K[e+108>>2];c=(g^l)<<22|c|128}l=C+(L[(c>>>6&495)+r|0]<<2)|0;j=K[l>>2];g=K[j>>2];b=b-g|0;xh:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[j+4>>2];if(b&32768){break xh}f=K[j+4>>2];g=b>>>0>>0;K[l>>2]=K[j+(g?12:8)>>2];while(1){yh:{if(h){break yh}j=K[e+16>>2];l=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=l;h=8;d=(i<<8)+d|0;break yh}if(i>>>0<=143){K[e+16>>2]=l;d=(i<<9)+d|0;h=7;break yh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!f:f;break xh}f=K[j+4>>2];i=l;l=b>>>0>>0;K[i>>2]=K[j+(l?8:12)>>2];while(1){zh:{if(h){break zh}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]!=255){K[e+16>>2]=b;h=8;d=(i<<8)+d|0;break zh}if(i>>>0<=143){K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break zh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?f:!f}if(!i){break kh}}p=k-4|0;j=K[k+4>>2]>>>23&4|(K[p>>2]>>>25&1|(c>>>18&16|(c>>>22&64|c>>>6&170)));l=C+(L[j+24336|0]<<2)|0;f=K[l>>2];g=K[f>>2];b=b-g|0;r=o+s|0;Ah:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;i=K[f+4>>2];if(b&32768){break Ah}i=K[f+4>>2];g=b>>>0>>0;K[l>>2]=K[f+(g?12:8)>>2];while(1){Bh:{if(h){break Bh}f=K[e+16>>2];l=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(n<<8)+d|0;break Bh}if(n>>>0<=143){K[e+16>>2]=l;d=(n<<9)+d|0;h=7;break Bh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}i=g?!i:i;break Ah}i=K[f+4>>2];n=l;l=b>>>0>>0;K[n>>2]=K[f+(l?8:12)>>2];while(1){Ch:{if(h){break Ch}f=K[e+16>>2];b=f+1|0;n=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(n<<8)+d|0;break Ch}if(n>>>0<=143){K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Ch}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;i=l?i:!i}l=i;g=L[j+24592|0];K[r>>2]=(l|0)==(g|0)?z:u;K[p>>2]=K[p>>2]|2048;K[k+4>>2]=K[k+4>>2]|512;c=(g^l)<<25|c|1024;r=K[e+108>>2]}j=C+(L[(c>>>9&495)+r|0]<<2)|0;f=K[j>>2];g=K[f>>2];b=b-g|0;Dh:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[f+4>>2];if(b&32768){break Dh}i=K[f+4>>2];g=b>>>0>>0;K[j>>2]=K[f+(g?12:8)>>2];while(1){Eh:{if(h){break Eh}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break Eh}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break Eh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break Dh}i=K[f+4>>2];l=b>>>0>>0;K[j>>2]=K[f+(l?8:12)>>2];while(1){Fh:{if(h){break Fh}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break Fh}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Fh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}if(!l){break Cg}}n=k-4|0;X=K[k+4>>2]>>>26&4|(K[n>>2]>>>28&1|(c>>>21&16|(c>>>25&64|c>>>9&170)));j=C+(L[X+24336|0]<<2)|0;r=K[j>>2];g=K[r>>2];b=b-g|0}Y=o+t|0;Gh:{if(d>>>16>>>0>=g>>>0){d=d-(g<<16)|0;l=K[r+4>>2];if(b&32768){break Gh}i=K[r+4>>2];g=b>>>0>>0;K[j>>2]=K[(g?12:8)+r>>2];while(1){Hh:{if(h){break Hh}f=K[e+16>>2];l=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=l;h=8;d=(p<<8)+d|0;break Hh}if(p>>>0<=143){K[e+16>>2]=l;d=(p<<9)+d|0;h=7;break Hh}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}l=g?!i:i;break Gh}i=K[r+4>>2];l=b>>>0>>0;K[j>>2]=K[(l?8:12)+r>>2];while(1){Ih:{if(h){break Ih}f=K[e+16>>2];b=f+1|0;p=L[f+1|0];if(L[f|0]!=255){K[e+16>>2]=b;h=8;d=(p<<8)+d|0;break Ih}if(p>>>0<=143){K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Ih}K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;l=l?i:!i}g=L[X+24592|0];K[Y>>2]=(l|0)==(g|0)?z:u;K[n>>2]=K[n>>2]|16384;K[k+4>>2]=K[k+4>>2]|4096;f=k+(K[e+124>>2]<<2)|0;K[f+4>>2]=K[f+4>>2]|4;K[f+12>>2]=K[f+12>>2]|1;g=g^l;K[f+8>>2]=K[f+8>>2]|g<<18|2;c=g<<28|c|8192}K[k>>2]=c&-1226833921}c=k+4|0;o=o+4|0;V=V+1|0;if((U|0)!=(V|0)){continue}break}c=k+12|0;o=o+t|0;v=v+4|0;g=K[e+128>>2];if(v>>>0<(g&-4)>>>0){continue}break}break Ag}c=(g&-4)-1|0;v=(c&-4)+4|0;c=(l+(c<<1&-8)|0)+20|0}K[e+8>>2]=h;K[e+4>>2]=b;K[e>>2]=d;K[e+104>>2]=j;if(!U|g>>>0<=v>>>0){break fe}while(1){h=0;if(K[e+128>>2]!=(v|0)){while(1){kc(e,c,(Q(h,U)<<2)+o|0,z,h,0);h=h+1|0;if(h>>>0>2]-v>>>0){continue}break}}K[c>>2]=K[c>>2]&-1226833921;o=o+4|0;c=c+4|0;H=H+1|0;if((U|0)!=(H|0)){continue}break}break fe}while(1){t=0;while(1){k=c;f=g;g=K[g>>2];Jh:{Kh:{Lh:{if(!g){j=K[l>>2];g=K[j>>2];b=b-g|0;Mh:{if(d>>>16>>>0>>0){m=K[j+4>>2];c=b>>>0>>0;K[l>>2]=K[j+(c?8:12)>>2];while(1){Nh:{if(h){break Nh}j=K[e+16>>2];b=j+1|0;o=L[j+1|0];if(L[j|0]==255){if(o>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Nh}K[e+16>>2]=b;d=(o<<9)+d|0;h=7;break Nh}K[e+16>>2]=b;h=8;d=(o<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?m:!m;break Mh}d=d-(g<<16)|0;if(!(b&32768)){m=K[j+4>>2];c=b>>>0>>0;K[l>>2]=K[j+(c?12:8)>>2];while(1){Oh:{if(h){break Oh}j=K[e+16>>2];g=j+1|0;o=L[j+1|0];if(L[j|0]==255){if(o>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Oh}K[e+16>>2]=g;d=(o<<9)+d|0;h=7;break Oh}K[e+16>>2]=g;h=8;d=(o<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!m:m;break Mh}c=K[j+4>>2]}if(!c){j=l;break Jh}c=K[q>>2];g=K[c>>2];b=b-g|0;Ph:{if(d>>>16>>>0>>0){o=K[c+4>>2];j=b>>>0>>0;c=K[(j?8:12)+c>>2];K[q>>2]=c;while(1){Qh:{if(h){break Qh}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Qh}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break Qh}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;m=j?o:!o;break Ph}d=d-(g<<16)|0;if(!(b&32768)){o=K[c+4>>2];g=b>>>0>>0;c=K[(g?12:8)+c>>2];K[q>>2]=c;while(1){Rh:{if(h){break Rh}m=K[e+16>>2];j=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Rh}K[e+16>>2]=j;d=(i<<9)+d|0;h=7;break Rh}K[e+16>>2]=j;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=g?!o:o;break Ph}m=K[c+4>>2]}g=K[c>>2];b=b-g|0;Sh:{if(d>>>16>>>0>>0){o=K[c+4>>2];j=c;c=b>>>0>>0;K[q>>2]=K[j+(c?8:12)>>2];while(1){Th:{if(h){break Th}j=K[e+16>>2];b=j+1|0;i=L[j+1|0];if(L[j|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Th}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break Th}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?o:!o;break Sh}d=d-(g<<16)|0;if(!(b&32768)){o=K[c+4>>2];j=c;c=b>>>0>>0;K[q>>2]=K[j+(c?12:8)>>2];while(1){Uh:{if(h){break Uh}j=K[e+16>>2];g=j+1|0;i=L[j+1|0];if(L[j|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Uh}K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break Uh}K[e+16>>2]=g;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break Sh}c=K[c+4>>2]}g=0;j=q;Vh:{Wh:{Xh:{Yh:{Zh:{switch(c|m<<1){case 0:i=f-4|0;j=K[f+4>>2]>>>17&4|K[i>>2]>>>19&1;c=z+(L[j+24336|0]<<2)|0;m=K[c>>2];g=K[m>>2];b=b-g|0;_h:{if(d>>>16>>>0>>0){o=K[m+4>>2];p=c;c=b>>>0>>0;K[p>>2]=K[m+(c?8:12)>>2];while(1){$h:{if(h){break $h}m=K[e+16>>2];b=m+1|0;p=L[m+1|0];if(L[m|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break $h}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break $h}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;g=c?o:!o;break _h}d=d-(g<<16)|0;if(!(b&32768)){o=K[m+4>>2];p=c;c=b>>>0>>0;K[p>>2]=K[m+(c?12:8)>>2];while(1){ai:{if(h){break ai}m=K[e+16>>2];g=m+1|0;p=L[m+1|0];if(L[m|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ai}K[e+16>>2]=g;d=(p<<9)+d|0;h=7;break ai}K[e+16>>2]=g;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}g=c?!o:o;break _h}g=K[m+4>>2]}c=L[j+24592|0];K[k>>2]=(g|0)==(c|0)?C:u;K[i>>2]=K[i>>2]|32;K[f+4>>2]=K[f+4>>2]|8;j=(c^g)<<19;r=K[e+108>>2];c=z+(L[r+2|0]<<2)|0;m=K[c>>2];g=K[m>>2];b=b-g|0;bi:{if(d>>>16>>>0>>0){o=K[m+4>>2];i=c;c=b>>>0>>0;K[i>>2]=K[m+(c?8:12)>>2];while(1){ci:{if(h){break ci}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ci}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break ci}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;g=g<<1;if(g>>>0<32768){continue}break}b=g;c=c?o:!o;break bi}d=d-(g<<16)|0;if(!(b&32768)){o=K[m+4>>2];i=c;c=b>>>0>>0;K[i>>2]=K[m+(c?12:8)>>2];while(1){di:{if(h){break di}m=K[e+16>>2];g=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break di}K[e+16>>2]=g;d=(i<<9)+d|0;h=7;break di}K[e+16>>2]=g;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break bi}c=K[m+4>>2]}g=j|16;if(!c){break Yh}break;case 1:break Zh;case 2:break Xh;case 3:break Vh;default:break Kh}}p=f-4|0;m=K[f+4>>2]>>>20&4|(K[p>>2]>>>22&1|(g>>>15&16|(g>>>19&64|g>>>3&170)));j=z+(L[m+24336|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;ei:{if(d>>>16>>>0>>0){i=K[o+4>>2];n=j;j=b>>>0>>0;K[n>>2]=K[o+(j?8:12)>>2];while(1){fi:{if(h){break fi}o=K[e+16>>2];b=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break fi}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break fi}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=j?i:!i;break ei}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){gi:{if(h){break gi}o=K[e+16>>2];j=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break gi}K[e+16>>2]=j;d=(n<<9)+d|0;h=7;break gi}K[e+16>>2]=j;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!i:i;break ei}j=K[o+4>>2]}c=L[m+24592|0];K[k+256>>2]=(j|0)==(c|0)?C:u;K[p>>2]=K[p>>2]|256;K[f+4>>2]=K[f+4>>2]|64;r=K[e+108>>2];g=(c^j)<<22|g|128}j=z+(L[(g>>>6&495)+r|0]<<2)|0;m=K[j>>2];c=K[m>>2];b=b-c|0;hi:{if(d>>>16>>>0>>0){o=K[m+4>>2];i=j;j=b>>>0>>0;K[i>>2]=K[m+(j?8:12)>>2];while(1){ii:{if(h){break ii}m=K[e+16>>2];b=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ii}K[e+16>>2]=b;d=(i<<9)+d|0;h=7;break ii}K[e+16>>2]=b;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=j?o:!o;break hi}d=d-(c<<16)|0;if(!(b&32768)){o=K[m+4>>2];c=b>>>0>>0;K[j>>2]=K[m+(c?12:8)>>2];while(1){ji:{if(h){break ji}m=K[e+16>>2];j=m+1|0;i=L[m+1|0];if(L[m|0]==255){if(i>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ji}K[e+16>>2]=j;d=(i<<9)+d|0;h=7;break ji}K[e+16>>2]=j;h=8;d=(i<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!o:o;break hi}c=K[m+4>>2]}if(!c){break Wh}}p=f-4|0;m=K[f+4>>2]>>>23&4|(K[p>>2]>>>25&1|(g>>>18&16|(g>>>22&64|g>>>6&170)));j=z+(L[m+24336|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;ki:{if(d>>>16>>>0>>0){i=K[o+4>>2];n=j;j=b>>>0>>0;K[n>>2]=K[o+(j?8:12)>>2];while(1){li:{if(h){break li}o=K[e+16>>2];b=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break li}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break li}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;j=j?i:!i;break ki}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){mi:{if(h){break mi}o=K[e+16>>2];j=o+1|0;n=L[o+1|0];if(L[o|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break mi}K[e+16>>2]=j;d=(n<<9)+d|0;h=7;break mi}K[e+16>>2]=j;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}j=c?!i:i;break ki}j=K[o+4>>2]}c=L[m+24592|0];K[k+512>>2]=(j|0)==(c|0)?C:u;K[p>>2]=K[p>>2]|2048;K[f+4>>2]=K[f+4>>2]|512;g=(c^j)<<25|g|1024;r=K[e+108>>2]}j=z+(L[(g>>>9&495)+r|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;ni:{if(d>>>16>>>0>>0){i=K[o+4>>2];m=b>>>0>>0;K[j>>2]=K[o+(m?8:12)>>2];while(1){oi:{if(h){break oi}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break oi}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break oi}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?i:!i;break ni}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){pi:{if(h){break pi}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break pi}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break pi}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!i:i;break ni}c=K[o+4>>2]}if(!c){break Kh}}H=f-4|0;n=K[f+4>>2]>>>26&4|(K[H>>2]>>>28&1|(g>>>21&16|(g>>>25&64|g>>>9&170)));j=z+(L[n+24336|0]<<2)|0;r=K[j>>2];c=K[r>>2];b=b-c|0;break Lh}qi:{if(g&2097168){break qi}j=z+(L[K[e+108>>2]+(g&495)|0]<<2)|0;o=K[j>>2];c=K[o>>2];b=b-c|0;ri:{if(d>>>16>>>0>>0){i=K[o+4>>2];m=b>>>0>>0;K[j>>2]=K[o+(m?8:12)>>2];while(1){si:{if(h){break si}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break si}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break si}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?i:!i;break ri}d=d-(c<<16)|0;if(!(b&32768)){i=K[o+4>>2];c=b>>>0>>0;K[j>>2]=K[o+(c?12:8)>>2];while(1){ti:{if(h){break ti}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break ti}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break ti}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!i:i;break ri}c=K[o+4>>2]}if(!c){break qi}n=f-4|0;o=K[f+4>>2]>>>17&4|(K[n>>2]>>>19&1|(g>>>14&16|(g>>>16&64|g&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;ui:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){vi:{if(h){break vi}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break vi}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break vi}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?p:!p;break ui}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){wi:{if(h){break wi}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break wi}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break wi}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!p:p;break ui}m=K[i+4>>2]}c=L[o+24592|0];K[k>>2]=(m|0)==(c|0)?C:u;K[n>>2]=K[n>>2]|32;K[f+4>>2]=K[f+4>>2]|8;g=(c^m)<<19|g|16}xi:{if(g&16777344){break xi}o=g>>>3|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;yi:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){zi:{if(h){break zi}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break zi}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break zi}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break yi}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Ai:{if(h){break Ai}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ai}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break Ai}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break yi}c=K[i+4>>2]}if(!c){break xi}n=f-4|0;o=K[f+4>>2]>>>20&4|(K[n>>2]>>>22&1|(g>>>15&16|(g>>>19&64|o&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Bi:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){Ci:{if(h){break Ci}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ci}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break Ci}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?p:!p;break Bi}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Di:{if(h){break Di}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Di}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break Di}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!p:p;break Bi}m=K[i+4>>2]}c=L[o+24592|0];K[k+256>>2]=(m|0)==(c|0)?C:u;K[n>>2]=K[n>>2]|256;K[f+4>>2]=K[f+4>>2]|64;g=(c^m)<<22|g|128}Ei:{if(g&134218752){break Ei}o=g>>>6|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Fi:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){Gi:{if(h){break Gi}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Gi}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Gi}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break Fi}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Hi:{if(h){break Hi}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Hi}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break Hi}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break Fi}c=K[i+4>>2]}if(!c){break Ei}n=f-4|0;o=K[f+4>>2]>>>23&4|(K[n>>2]>>>25&1|(g>>>18&16|(g>>>22&64|o&170)));j=z+(L[o+24336|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Ii:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){Ji:{if(h){break Ji}i=K[e+16>>2];b=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ji}K[e+16>>2]=b;d=(s<<9)+d|0;h=7;break Ji}K[e+16>>2]=b;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?p:!p;break Ii}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Ki:{if(h){break Ki}i=K[e+16>>2];m=i+1|0;s=L[i+1|0];if(L[i|0]==255){if(s>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ki}K[e+16>>2]=m;d=(s<<9)+d|0;h=7;break Ki}K[e+16>>2]=m;h=8;d=(s<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!p:p;break Ii}m=K[i+4>>2]}c=L[o+24592|0];K[k+512>>2]=(m|0)==(c|0)?C:u;K[n>>2]=K[n>>2]|2048;K[f+4>>2]=K[f+4>>2]|512;g=(c^m)<<25|g|1024}if(g&1073750016){break Kh}o=g>>>9|0;j=z+(L[K[e+108>>2]+(o&495)|0]<<2)|0;i=K[j>>2];c=K[i>>2];b=b-c|0;Li:{if(d>>>16>>>0>>0){p=K[i+4>>2];m=b>>>0>>0;K[j>>2]=K[i+(m?8:12)>>2];while(1){Mi:{if(h){break Mi}i=K[e+16>>2];b=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Mi}K[e+16>>2]=b;d=(n<<9)+d|0;h=7;break Mi}K[e+16>>2]=b;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;c=m?p:!p;break Li}d=d-(c<<16)|0;if(!(b&32768)){p=K[i+4>>2];c=b>>>0>>0;K[j>>2]=K[i+(c?12:8)>>2];while(1){Ni:{if(h){break Ni}i=K[e+16>>2];m=i+1|0;n=L[i+1|0];if(L[i|0]==255){if(n>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Ni}K[e+16>>2]=m;d=(n<<9)+d|0;h=7;break Ni}K[e+16>>2]=m;h=8;d=(n<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}c=c?!p:p;break Li}c=K[i+4>>2]}if(!c){break Kh}H=f-4|0;n=K[f+4>>2]>>>26&4|(K[H>>2]>>>28&1|(g>>>21&16|(g>>>25&64|o&170)));j=z+(L[n+24336|0]<<2)|0;r=K[j>>2];c=K[r>>2];b=b-c|0}Oi:{if(d>>>16>>>0>>0){i=K[r+4>>2];m=b>>>0>>0;K[j>>2]=K[(m?8:12)+r>>2];while(1){Pi:{if(h){break Pi}o=K[e+16>>2];b=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Pi}K[e+16>>2]=b;d=(p<<9)+d|0;h=7;break Pi}K[e+16>>2]=b;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;c=c<<1;if(c>>>0<32768){continue}break}b=c;m=m?i:!i;break Oi}d=d-(c<<16)|0;if(!(b&32768)){i=K[r+4>>2];c=b>>>0>>0;K[j>>2]=K[(c?12:8)+r>>2];while(1){Qi:{if(h){break Qi}o=K[e+16>>2];m=o+1|0;p=L[o+1|0];if(L[o|0]==255){if(p>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;d=d+65280|0;h=8;break Qi}K[e+16>>2]=m;d=(p<<9)+d|0;h=7;break Qi}K[e+16>>2]=m;h=8;d=(p<<8)+d|0}h=h-1|0;d=d<<1;b=b<<1;if(b>>>0<32768){continue}break}m=c?!i:i;break Oi}m=K[r+4>>2]}c=L[n+24592|0];K[k+768>>2]=(m|0)==(c|0)?C:u;K[H>>2]=K[H>>2]|16384;K[f+4>>2]=K[f+4>>2]|4096;K[f+260>>2]=K[f+260>>2]|4;K[f+268>>2]=K[f+268>>2]|1;c=c^m;K[f+264>>2]=K[f+264>>2]|c<<18|2;g=c<<28|g|8192}K[f>>2]=g&-1226833921}g=f+4|0;c=k+4|0;t=t+1|0;if((t|0)!=64){continue}break}g=f+12|0;c=k+772|0;m=v>>>0<60;v=v+4|0;if(m){continue}break}}K[e+8>>2]=h;K[e+4>>2]=b;K[e>>2]=d;K[e+104>>2]=j}Ri:{if(!(_&32)){break Ri}K[e+104>>2]=e+100;g=K[e+100>>2];b=K[g>>2];d=K[e+4>>2]-b|0;K[e+4>>2]=d;h=K[e>>2];Si:{if(h>>>16>>>0>>0){K[e+4>>2]=b;g=K[(b>>>0>d>>>0?8:12)+g>>2];K[e+100>>2]=g;d=K[e+8>>2];while(1){Ti:{if(d){break Ti}l=K[e+16>>2];c=l+1|0;j=L[l+1|0];if(L[l|0]==255){if(j>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;d=8;break Ti}K[e+16>>2]=c;h=(j<<9)+h|0;d=7;break Ti}K[e+16>>2]=c;d=8;h=(j<<8)+h|0}d=d-1|0;K[e+8>>2]=d;h=h<<1;K[e>>2]=h;b=b<<1;K[e+4>>2]=b;if(b>>>0<32768){continue}break}d=b;break Si}h=h-(b<<16)|0;K[e>>2]=h;if(d&32768){break Si}g=K[(b>>>0>d>>>0?12:8)+g>>2];K[e+100>>2]=g;b=K[e+8>>2];while(1){Ui:{if(b){break Ui}c=K[e+16>>2];b=c+1|0;l=L[c+1|0];if(L[c|0]==255){if(l>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;b=8;break Ui}K[e+16>>2]=b;h=(l<<9)+h|0;b=7;break Ui}K[e+16>>2]=b;b=8;h=(l<<8)+h|0}b=b-1|0;K[e+8>>2]=b;h=h<<1;K[e>>2]=h;d=d<<1;K[e+4>>2]=d;if(d>>>0<32768){continue}break}}b=K[g>>2];d=d-b|0;K[e+4>>2]=d;Vi:{if(h>>>16>>>0>>0){K[e+4>>2]=b;g=K[(b>>>0>d>>>0?8:12)+g>>2];K[e+100>>2]=g;d=K[e+8>>2];while(1){Wi:{if(d){break Wi}l=K[e+16>>2];c=l+1|0;j=L[l+1|0];if(L[l|0]==255){if(j>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;d=8;break Wi}K[e+16>>2]=c;h=(j<<9)+h|0;d=7;break Wi}K[e+16>>2]=c;d=8;h=(j<<8)+h|0}d=d-1|0;K[e+8>>2]=d;h=h<<1;K[e>>2]=h;b=b<<1;K[e+4>>2]=b;if(b>>>0<32768){continue}break}d=b;break Vi}h=h-(b<<16)|0;K[e>>2]=h;if(d&32768){break Vi}g=K[(b>>>0>d>>>0?12:8)+g>>2];K[e+100>>2]=g;b=K[e+8>>2];while(1){Xi:{if(b){break Xi}c=K[e+16>>2];b=c+1|0;l=L[c+1|0];if(L[c|0]==255){if(l>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;b=8;break Xi}K[e+16>>2]=b;h=(l<<9)+h|0;b=7;break Xi}K[e+16>>2]=b;b=8;h=(l<<8)+h|0}b=b-1|0;K[e+8>>2]=b;h=h<<1;K[e>>2]=h;d=d<<1;K[e+4>>2]=d;if(d>>>0<32768){continue}break}}b=K[g>>2];d=d-b|0;K[e+4>>2]=d;Yi:{if(h>>>16>>>0>>0){K[e+4>>2]=b;g=K[(b>>>0>d>>>0?8:12)+g>>2];K[e+100>>2]=g;d=K[e+8>>2];while(1){Zi:{if(d){break Zi}l=K[e+16>>2];c=l+1|0;j=L[l+1|0];if(L[l|0]==255){if(j>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;d=8;break Zi}K[e+16>>2]=c;h=(j<<9)+h|0;d=7;break Zi}K[e+16>>2]=c;d=8;h=(j<<8)+h|0}d=d-1|0;K[e+8>>2]=d;h=h<<1;K[e>>2]=h;b=b<<1;K[e+4>>2]=b;if(b>>>0<32768){continue}break}d=b;break Yi}h=h-(b<<16)|0;K[e>>2]=h;if(d&32768){break Yi}g=K[(b>>>0>d>>>0?12:8)+g>>2];K[e+100>>2]=g;b=K[e+8>>2];while(1){_i:{if(b){break _i}c=K[e+16>>2];b=c+1|0;l=L[c+1|0];if(L[c|0]==255){if(l>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;b=8;break _i}K[e+16>>2]=b;h=(l<<9)+h|0;b=7;break _i}K[e+16>>2]=b;b=8;h=(l<<8)+h|0}b=b-1|0;K[e+8>>2]=b;h=h<<1;K[e>>2]=h;d=d<<1;K[e+4>>2]=d;if(d>>>0<32768){continue}break}}b=K[g>>2];d=d-b|0;K[e+4>>2]=d;if(h>>>16>>>0>>0){K[e+4>>2]=b;K[e+100>>2]=K[(b>>>0>d>>>0?8:12)+g>>2];d=K[e+8>>2];while(1){$i:{if(d){break $i}g=K[e+16>>2];c=g+1|0;l=L[g+1|0];if(L[g|0]==255){if(l>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;h=h+65280|0;d=8;break $i}K[e+16>>2]=c;h=(l<<9)+h|0;d=7;break $i}K[e+16>>2]=c;d=8;h=(l<<8)+h|0}d=d-1|0;K[e+8>>2]=d;h=h<<1;K[e>>2]=h;b=b<<1;K[e+4>>2]=b;if(b>>>0<32768){continue}break}break Ri}c=h-(b<<16)|0;K[e>>2]=c;if(d&32768){break Ri}K[e+100>>2]=K[(b>>>0>d>>>0?12:8)+g>>2];h=K[e+8>>2];while(1){aj:{if(h){break aj}g=K[e+16>>2];b=g+1|0;l=L[g+1|0];if(L[g|0]==255){if(l>>>0>=144){K[e+12>>2]=K[e+12>>2]+1;c=c+65280|0;h=8;break aj}K[e+16>>2]=b;c=(l<<9)+c|0;h=7;break aj}K[e+16>>2]=b;h=8;c=(l<<8)+c|0}h=h-1|0;K[e+8>>2]=h;c=c<<1;K[e>>2]=c;d=d<<1;K[e+4>>2]=d;if(d>>>0<32768){continue}break}}}if(!w){break Va}mc(e);bb(e,18,46);bb(e,17,3);bb(e,0,4)}b=ka+1|0;c=(b|0)==3;ka=c?0:b;x=x-c|0;G=G+1|0;if(G>>>0>=N[la+8>>2]){break Ua}if((x|0)>0){continue}break}}Z=y+Z|0;c=K[e+24>>2];b=M[e+112>>1];I[c|0]=b;I[c+1|0]=b>>>8;F=F+1|0;if(F>>>0>2]){continue}break}}bj:{if(!S){break bj}cj:{c=K[e+24>>2];g=K[e+16>>2];if(c>>>0>g+2>>>0){if(!ba){break cj}g=K[e+16>>2];c=K[e+24>>2];b=K[e+20>>2];K[$+56>>2]=c-b;K[$+52>>2]=g-b;K[$+48>>2]=(c-g|0)-2;Fa(P,2,15198,$+48|0);break bj}b=K[e+12>>2];if(b>>>0<3){break bj}if(ba){K[$+80>>2]=K[e+12>>2];Fa(P,2,7070,$+80|0);break bj}K[$+64>>2]=b;Fa(P,2,7070,$- -64|0);break bj}b=K[e+20>>2];K[$+40>>2]=c-b;K[$+36>>2]=g-b;K[$+32>>2]=(c-g|0)-2;Fa(P,2,15198,$+32|0)}if(!K[D+60>>2]){break i}K[e+116>>2]=W}l=K[sa+4>>2];g=K[D+12>>2];n=K[D+8>>2]-K[sa>>2]|0;c=K[sa+16>>2];if(c&1){b=K[pa+28>>2]+Q(ta,152)|0;n=(K[b-144>>2]+n|0)-K[b-152>>2]|0}j=g-l|0;if(c&2){b=K[pa+28>>2]+Q(ta,152)|0;j=(K[b-140>>2]+j|0)-K[b-148>>2]|0}k=K[D+60>>2];r=k?k:K[e+116>>2];p=K[e+128>>2];s=K[e+124>>2];m=K[qa+808>>2];dj:{if(!m){break dj}b=!p|!s;if((m|0)<=30){if(b){break dj}h=0;while(1){l=(Q(h,s)<<2)+r|0;b=0;while(1){g=l+(b<<2)|0;q=K[g>>2];c=q>>31;c=(c^q)-c|0;if(c>>>m|0){c=c>>>K[qa+808>>2]|0;K[g>>2]=(q|0)<0?0-c|0:c}b=b+1|0;if((s|0)!=(b|0)){continue}break}h=h+1|0;if((p|0)!=(h|0)){continue}break}break dj}if(b){break dj}b=Q(p,s)<<2;if(!b){break dj}B(r,0,b)}if(k){j=Q(p,s);if(K[qa+20>>2]==1){if(!j){break a}b=0;if((j|0)!=1){c=j&-2;g=0;while(1){l=(b<<2)+r|0;K[l>>2]=K[l>>2]/2;K[l+4>>2]=K[l+4>>2]/2;b=b+2|0;g=g+2|0;if((c|0)!=(g|0)){continue}break}}if(!(j&1)){break a}b=(b<<2)+r|0;K[b>>2]=K[b>>2]/2;break a}if(!j){break a}ga=R(O[sa+32>>2]*R(.5));if(j>>>0>=4){c=j&-4;b=0;while(1){O[r>>2]=ga*R(K[r>>2]);O[r+4>>2]=ga*R(K[r+4>>2]);O[r+8>>2]=ga*R(K[r+8>>2]);O[r+12>>2]=ga*R(K[r+12>>2]);r=r+16|0;b=b+4|0;if((c|0)!=(b|0)){continue}break}}c=j&3;if(!c){break a}b=0;while(1){O[r>>2]=ga*R(K[r>>2]);r=r+4|0;b=b+1|0;if((c|0)!=(b|0)){continue}break}break a}i=wa-ua|0;if(K[qa+20>>2]==1){if(!p){break a}f=(K[pa+36>>2]+(Q(j,i)<<2)|0)+(n<<2)|0;d=s&-4;j=0;while(1){b=0;if(d){k=f+(Q(j,i)<<2)|0;m=(Q(j,s)<<2)+r|0;while(1){q=b<<2;o=q+m|0;l=K[o+4>>2];g=K[o+8>>2];c=K[o+12>>2];q=k+q|0;K[q>>2]=K[o>>2]/2;K[q+12>>2]=(c|0)/2;K[q+8>>2]=(g|0)/2;K[q+4>>2]=(l|0)/2;b=b+4|0;if(d>>>0>b>>>0){continue}break}}ej:{if(b>>>0>=s>>>0){break ej}c=b+1|0;l=f+(Q(j,i)<<2)|0;g=(Q(j,s)<<2)+r|0;if(s-b&1){b=b<<2;K[b+l>>2]=K[b+g>>2]/2;b=c}if((c|0)==(s|0)){break ej}while(1){c=b<<2;K[c+l>>2]=K[c+g>>2]/2;c=c+4|0;K[c+l>>2]=K[c+g>>2]/2;b=b+2|0;if((s|0)!=(b|0)){continue}break}}j=j+1|0;if((p|0)!=(j|0)){continue}break}break a}if(!p|!s){break a}ga=R(O[sa+32>>2]*R(.5));j=(K[pa+36>>2]+(Q(j,i)<<2)|0)+(n<<2)|0;g=s&-4;l=s&3;f=0;c=s-1>>>0<3;while(1){b=j;e=0;if(!c){while(1){O[b>>2]=ga*R(K[r>>2]);O[b+4>>2]=ga*R(K[r+4>>2]);O[b+8>>2]=ga*R(K[r+8>>2]);O[b+12>>2]=ga*R(K[r+12>>2]);b=b+16|0;r=r+16|0;e=e+4|0;if((g|0)!=(e|0)){continue}break}}e=0;if(l){while(1){O[b>>2]=ga*R(K[r>>2]);b=b+4|0;r=r+4|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}j=(i<<2)+j|0;f=f+1|0;if((p|0)!=(f|0)){continue}break}break a}K[$>>2]=x;Fa(P,2,8679,$)}K[K[d>>2]>>2]=0}Ga(a);ra=$+96|0} +function jb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,F=0,G=0,H=0,M=0,P=0,T=0,U=0,V=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=R(0),ma=0,na=0,oa=0,pa=0,qa=0,sa=0,ta=0,va=0,wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Ka=0,Oa=0,Pa=0,Qa=0,Ra=0,Sa=0,Ta=0,Wa=0,Ya=0,$a=0,ab=0,bb=0,cb=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,mb=0,ob=0,pb=0,qb=0,tb=R(0),ub=0,vb=0,wb=R(0),xb=0,yb=0,zb=0,Ab=0,Bb=0,Cb=0,Db=0,Eb=0,Ib=0,Jb=0,Kb=0,Lb=R(0),Mb=0,Nb=0,Ob=0,Pb=0,Qb=0,Rb=0,Sb=0,Tb=0,Ub=0,Vb=0,Wb=0,Xb=0,Yb=0,Zb=0,_b=0,$b=0;$a=ra-16|0;ra=$a;a:{if(!(L[a+8|0]&128)|K[a+228>>2]!=(b|0)){break a}Ya=K[a+180>>2]+Q(b,5644)|0;y=K[Ya+5596>>2];if(!y){nb(Ya);break a}t=K[a+100>>2];if(!t){t=K[a+96>>2]}k=K[t>>2];m=K[t+4>>2];h=K[t+8>>2];i=K[t+12>>2];o=K[a+60>>2];s=K[a+64>>2];l=K[Ya+5600>>2];Ea=ra-16|0;ra=Ea;C=K[a+232>>2];K[C+36>>2]=b;g=K[K[C+28>>2]+76>>2];K[C+64>>2]=1;K[C+60>>2]=i;K[C+56>>2]=h;K[C+52>>2]=m;K[C+48>>2]=k;K[C+32>>2]=g+Q(b,5644);Ga(K[C+68>>2]);K[C+68>>2]=0;b:{if(o){n=Ia(4,K[K[C+24>>2]+16>>2]);if(!n){break b}t=0;if(o>>>0>=4){g=o&-4;b=0;while(1){i=s+(Z<<2)|0;K[(K[i>>2]<<2)+n>>2]=1;K[(K[i+4>>2]<<2)+n>>2]=1;K[(K[i+8>>2]<<2)+n>>2]=1;K[(K[i+12>>2]<<2)+n>>2]=1;Z=Z+4|0;b=b+4|0;if((g|0)!=(b|0)){continue}break}}b=o&3;if(b){while(1){K[(K[s+(Z<<2)>>2]<<2)+n>>2]=1;Z=Z+1|0;t=t+1|0;if((b|0)!=(t|0)){continue}break}}K[C+68>>2]=n}c:{D=K[C+24>>2];aa=K[D+16>>2];d:{if(!aa){break d}Z=0;e:{while(1){f:{if(K[(Z<<2)+n>>2]?0:n){break f}h=K[D+24>>2]+Q(Z,52)|0;p=K[h+4>>2];k=p-1|0;i=K[C+60>>2];g=k+i|0;t=0-!p|0;b=t;m=Ne(g,g>>>0>>0?b+1|0:b,p,0);o=K[h>>2];h=o-1|0;i=K[C+56>>2];g=h+i|0;s=0-!o|0;b=s;i=Ne(g,g>>>0>>0?b+1|0:b,o,0);g=K[C+52>>2];b=g+k|0;k=Ne(b,b>>>0>>0?t+1|0:t,p,0);p=K[K[K[C+20>>2]>>2]+20>>2]+Q(Z,76)|0;t=K[p+20>>2]-K[p+24>>2]|0;if(t>>>0>31){break f}g=K[C+48>>2];b=g+h|0;g=Ne(b,b>>>0>>0?s+1|0:s,o,0);b=g-K[p>>2]|0;g:{if((b>>>0<=g>>>0?b:0)>>>t|0){break g}b=k-K[p+4>>2]|0;if((b>>>0<=k>>>0?b:0)>>>t|0){break g}g=K[p+8>>2];b=g-i|0;if((b>>>0<=g>>>0?b:0)>>>t|0){break g}g=K[p+12>>2];b=g-m|0;if(!((b>>>0<=g>>>0?b:0)>>>t|0)){break f}}K[C+64>>2]=0;break e}Z=Z+1|0;if((aa|0)!=(Z|0)){continue}break}if(!K[C+64>>2]){break e}t=0;while(1){k=K[K[K[C+20>>2]>>2]+20>>2]+Q(t,76)|0;b=K[k+28>>2]+Q(K[k+24>>2],152)|0;n=K[b-148>>2];m=K[b-140>>2];h=K[b-152>>2];i=K[b-144>>2];b=K[C+68>>2];h:{if(K[b+(t<<2)>>2]?0:b){break h}g=m-n|0;b=i-h|0;Le(g,0,b);if(!(!ua|(m|0)==(n|0))){Z=0;Fa(f,1,2945,0);break b}b=Q(b,g);if(b>>>0>=1073741824){Z=0;Fa(f,1,2945,0);break b}g=b<<2;K[k+44>>2]=g;i:{j:{k:{b=K[k+36>>2];if(b){if(g>>>0<=N[k+48>>2]){break h}if(K[k+40>>2]){break k}}b=Ma(g);K[k+36>>2]=b;g=b;b=K[k+44>>2];if(!(b?g:1)){break j}K[k+40>>2]=1;K[k+48>>2]=b;break h}Ga(b);b=Ma(K[k+44>>2]);K[k+36>>2]=b;if(b){break i}K[k+48>>2]=0;K[k+40>>2]=0;K[k+44>>2]=0}Z=0;Fa(f,1,2945,0);break b}K[k+40>>2]=1;K[k+48>>2]=K[k+44>>2]}t=t+1|0;D=K[C+24>>2];if(t>>>0>2]){continue}break}break d}$=K[D+24>>2];H=K[K[K[C+20>>2]>>2]+20>>2];b=0;while(1){l:{if(K[(b<<2)+n>>2]?0:n){break l}ga=H+Q(b,76)|0;k=K[ga>>2];m=$+Q(b,52)|0;v=K[m>>2];s=v-1|0;h=K[C+48>>2];i=s+h|0;o=0-!v|0;g=o;g=Ne(i,h>>>0>i>>>0?g+1|0:g,v,0);ea=g>>>0>>0?k:g;K[ga+56>>2]=ea;k=K[ga+4>>2];p=K[m+4>>2];m=p-1|0;h=K[C+52>>2];i=m+h|0;t=0-!p|0;g=t;g=Ne(i,h>>>0>i>>>0?g+1|0:g,p,0);T=g>>>0>>0?k:g;K[ga+60>>2]=T;h=K[ga+8>>2];i=K[C+56>>2];g=i+s|0;g=Ne(g,g>>>0>>0?o+1|0:o,v,0);k=g>>>0>h>>>0?h:g;K[ga+64>>2]=k;h=K[ga+12>>2];i=K[C+60>>2];g=m+i|0;g=Ne(g,g>>>0>>0?t+1|0:t,p,0);g=g>>>0>h>>>0?h:g;K[ga+68>>2]=g;if(g>>>0>>0|k>>>0>>0){break c}ka=K[ga+20>>2];if(!ka){break l}_=g-1|0;x=0-!g|0;r=k-1|0;v=0-!k|0;p=T-1|0;t=0-!T|0;s=ea-1|0;k=0-!ea|0;m=K[ga+28>>2];ga=0;h=0;while(1){ea=m+Q(ga,152)|0;ba=ka+(ga^-1)|0;i=ba&31;if((ba&63)>>>0>=32){o=1<>>32-i}ha=g;g=_+ha|0;i=o+x|0;i=g>>>0<_>>>0?i+1|0:i;T=ba&31;if((ba&63)>>>0>=32){g=i>>>T|0}else{g=((1<>>T}K[ea+148>>2]=g;g=o+v|0;F=g+1|0;i=g;g=r+ha|0;i=g>>>0>>0?F:i;T=ba&31;if((ba&63)>>>0>=32){g=i>>>T|0}else{g=((1<>>T}K[ea+144>>2]=g;g=o+t|0;F=g+1|0;i=g;g=p+ha|0;i=g>>>0>>0?F:i;T=ba&31;if((ba&63)>>>0>=32){g=i>>>T|0}else{g=((1<>>T}K[ea+140>>2]=g;g=k+o|0;o=g+1|0;i=g;g=s+ha|0;i=g>>>0>>0?o:i;o=ba&31;if((ba&63)>>>0>=32){g=i>>>o|0}else{g=((1<>>o}K[ea+136>>2]=g;ga=ga+1|0;h=ga?h:h+1|0;if(h|(ga|0)!=(ka|0)){continue}break}}b=b+1|0;if((aa|0)!=(b|0)){continue}break}}Z=0;K[Ea+8>>2]=0;b=K[C+28>>2];ma=Ia(1,8);if(ma){K[ma+4>>2]=b;K[ma>>2]=D}if(!ma){break b}va=K[K[C+20>>2]>>2];w=ra-144|0;ra=w;r=K[C+36>>2];b=Q(r,5644);x=K[ma+4>>2];xa=b+K[x+76>>2]|0;ha=K[xa+420>>2];m=0;i=0;P=ra-32|0;ra=P;pa=b+K[x+76>>2]|0;M=K[pa+420>>2];ia=K[ma>>2];ca=K[ia+16>>2];k=Ja(Q(ca,528));m:{if(!k){break m}b=Ja(ca<<2);n:{if(!b){b=k;break n}o=K[x+76>>2]+Q(r,5644)|0;v=K[o+420>>2];h=v+1|0;g=Ia(h,240);o:{if(g){p:{if(h){F=K[ia+16>>2];t=g;while(1){K[t+236>>2]=f;h=Ia(F,16);K[t+200>>2]=h;if(!h){break p}h=K[ia+16>>2];K[t+196>>2]=h;p=0;F=0;if(h){while(1){s=K[t+200>>2]+(p<<4)|0;n=K[o+5584>>2]+Q(p,1080)|0;h=Ia(K[n+4>>2],16);K[s+12>>2]=h;if(!h){break p}K[s+8>>2]=K[n+4>>2];p=p+1|0;F=K[ia+16>>2];if(p>>>0>>0){continue}break}}t=t+240|0;h=(j|0)==(v|0);j=j+1|0;if(!h){continue}break}}break o}h=K[g+4>>2];if(h){Ga(h);K[g+4>>2]=0}t=g;n=0;while(1){p=K[t+200>>2];if(p){F=0;j=K[t+196>>2];if(j){while(1){h=K[p+12>>2];if(h){Ga(h);K[p+12>>2]=0;j=K[t+196>>2]}p=p+16|0;F=F+1|0;if(j>>>0>F>>>0){continue}break}p=K[t+200>>2]}Ga(p);K[t+200>>2]=0}t=t+240|0;h=(n|0)==(v|0);n=n+1|0;if(!h){continue}break}Ga(g)}g=0}if(g){q:{if(!ca){break q}n=k;if(ca>>>0>=8){h=ca&-8;while(1){j=(q<<2)+b|0;K[j>>2]=n;K[j+4>>2]=n+528;K[j+8>>2]=n+1056;K[j+12>>2]=n+1584;K[j+16>>2]=n+2112;K[j+20>>2]=n+2640;K[j+24>>2]=n+3168;K[j+28>>2]=n+3696;q=q+8|0;n=n+4224|0;m=m+8|0;if((h|0)!=(m|0)){continue}break}}h=ca&7;if(!h){break q}while(1){K[(q<<2)+b>>2]=n;q=q+1|0;n=n+528|0;G=G+1|0;if((h|0)!=(G|0)){continue}break}}p=b;F=0;t=K[(K[x+76>>2]+Q(r,5644)|0)+5584>>2];n=K[ia+24>>2];b=K[x+24>>2];j=(r>>>0)/(b>>>0)|0;h=K[x+4>>2]+Q(K[x+12>>2],r-Q(b,j)|0)|0;b=K[ia>>2];K[P+20>>2]=b>>>0>>0?h:b;b=h+K[x+12>>2]|0;h=b>>>0>>0?-1:b;b=K[ia+8>>2];K[P+16>>2]=b>>>0>h>>>0?h:b;h=K[x+8>>2]+Q(j,K[x+16>>2])|0;b=K[ia+4>>2];K[P+12>>2]=b>>>0>>0?h:b;b=h+K[x+16>>2]|0;h=b>>>0>>0?-1:b;b=K[ia+12>>2];K[P+8>>2]=b>>>0>h>>>0?h:b;K[P+24>>2]=0;K[P+28>>2]=0;K[P+4>>2]=2147483647;K[P>>2]=2147483647;if(K[ia+16>>2]){while(1){b=p?K[p+(F<<2)>>2]:0;$=K[n+4>>2];s=$-1|0;m=K[P+8>>2];j=s+m|0;x=0-!$|0;h=x;r=Ne(j,j>>>0>>0?h+1|0:h,$,0);H=K[n>>2];q=H-1|0;m=K[P+16>>2];j=q+m|0;v=0-!H|0;h=v;o=Ne(j,j>>>0>>0?h+1|0:h,H,0);j=K[P+12>>2];h=j+s|0;m=Ne(h,h>>>0>>0?x+1|0:x,$,0);j=K[P+20>>2];h=j+q|0;j=Ne(h,h>>>0>>0?v+1|0:v,H,0);h=K[t+4>>2];if(h>>>0>N[P+28>>2]){K[P+28>>2]=h;h=K[t+4>>2]}if(h){ga=t+944|0;G=t+812|0;qa=r-1|0;ea=0-!r|0;T=o-1|0;aa=0-!o|0;ka=m-1|0;_=0-!m|0;$=j-1|0;H=0-!j|0;j=0;while(1){m=j<<2;da=K[m+ga>>2];z=K[m+G>>2];q=0;if(b){K[b+4>>2]=da;K[b>>2]=z;q=b+8|0}h=h-1|0;s=z+h|0;r:{if(s>>>0>31){break r}b=K[n>>2];if(b>>>0>-1>>>s>>>0){break r}m=K[P+4>>2];b=b<>2]=b>>>0>m>>>0?m:b}s=h+da|0;s:{if(s>>>0>31){break s}b=K[n+4>>2];if(b>>>0>-1>>>s>>>0){break s}m=K[P>>2];b=b<>2]=b>>>0>m>>>0?m:b}b=0;s=h&31;if((h&63)>>>0>=32){o=1<>>32-s}V=m;m=qa+V|0;s=o;o=ea+o|0;r=m>>>0>>0?o+1|0:o;ba=h&31;o=da&31;if((da&63)>>>0>=32){o=1<>>32-o;x=v}if((h&63)>>>0>=32){r=r>>>ba|0}else{r=((1<>>ba}m=x+r|0;v=m-1|0;x=(m>>>0>>0?o+1|0:o)-!m|0;ba=da&31;m=s+_|0;wa=m+1|0;o=m;m=V+ka|0;o=m>>>0>>0?wa:o;if((da&63)>>>0>=32){x=x>>>ba|0}else{x=((1<>>ba}v=h&31;if((h&63)>>>0>=32){m=o>>>v|0}else{m=((1<>>v}ba=(m|0)!=(r|0)?x-(m>>>da|0)&-1>>>da:0;m=s+aa|0;r=m+1|0;x=m;m=T+V|0;r=m>>>0>>0?r:x;da=h&31;o=z&31;if((z&63)>>>0>=32){o=1<>>32-o;x=v}if((h&63)>>>0>=32){r=r>>>da|0}else{r=((1<>>da}m=x+r|0;v=m-1|0;o=(m>>>0>>0?o+1|0:o)-!m|0;x=z&31;m=s+H|0;wa=m+1|0;s=m;m=V+$|0;s=m>>>0>>0?wa:s;if((z&63)>>>0>=32){x=o>>>x|0}else{x=((1<>>x}o=h&31;if((h&63)>>>0>=32){m=s>>>o|0}else{m=((1<>>o}m=(m|0)!=(r|0)?x-(m>>>z|0)&-1>>>z:0;if(q){K[q+4>>2]=ba;K[q>>2]=m;b=q+8|0}m=Q(m,ba);if(m>>>0>N[P+24>>2]){K[P+24>>2]=m}j=j+1|0;if(j>>>0>2]){continue}break}}n=n+52|0;t=t+1080|0;F=F+1|0;if(F>>>0>2]){continue}break}}s=M+1|0;aa=K[P+28>>2];T=K[P+24>>2];K[g+4>>2]=0;b=K[pa+8>>2]+1|0;$=Q(T,ca);ka=Q($,aa);Le(b,0,ka);t:{if(!ua){b=Q(b,ka);K[g+8>>2]=b;b=Ia(b,2);K[g+4>>2]=b;if(b){break t}}Ga(k);Ga(p);b=K[g+4>>2];if(b){Ga(b);K[g+4>>2]=0}if(!s){b=g;break n}b=0;m=g;while(1){n=K[m+200>>2];if(n){r=0;q=K[m+196>>2];if(q){while(1){h=K[n+12>>2];if(h){Ga(h);K[n+12>>2]=0;q=K[m+196>>2]}n=n+16|0;r=r+1|0;if(q>>>0>r>>>0){continue}break}n=K[m+200>>2]}Ga(n);K[m+200>>2]=0}m=m+240|0;h=(b|0)==(M|0);b=b+1|0;if(!h){continue}break}b=g;break n}j=K[ia+24>>2];H=K[P+20>>2];K[g+204>>2]=H;x=K[P+12>>2];K[g+208>>2]=x;v=K[P+16>>2];K[g+212>>2]=v;o=K[P+8>>2];K[g+216>>2]=o;K[g+12>>2]=ka;K[g+16>>2]=$;K[g+20>>2]=T;i=1;K[g+24>>2]=1;if(ca){m=K[g+200>>2];t=0;b=j;while(1){n=K[p+(t<<2)>>2];K[m>>2]=K[b>>2];K[m+4>>2]=K[b+4>>2];_=K[m+8>>2];u:{if(!_){break u}r=K[m+12>>2];if((_|0)!=1){h=_&-2;q=0;while(1){K[r>>2]=K[n>>2];K[r+4>>2]=K[n+4>>2];K[r+8>>2]=K[n+8>>2];K[r+12>>2]=K[n+12>>2];K[r+16>>2]=K[n+16>>2];K[r+20>>2]=K[n+20>>2];K[r+24>>2]=K[n+24>>2];K[r+28>>2]=K[n+28>>2];r=r+32|0;n=n+32|0;q=q+2|0;if((h|0)!=(q|0)){continue}break}}if(!(_&1)){break u}K[r>>2]=K[n>>2];K[r+4>>2]=K[n+4>>2];K[r+8>>2]=K[n+8>>2];K[r+12>>2]=K[n+12>>2]}b=b+52|0;m=m+16|0;t=t+1|0;if((ca|0)!=(t|0)){continue}break}}if(s>>>0>1){h=g;while(1){K[h+456>>2]=o;K[h+452>>2]=v;K[h+448>>2]=x;K[h+444>>2]=H;K[h+264>>2]=1;K[h+260>>2]=T;K[h+256>>2]=$;K[h+252>>2]=ka;if(ca){m=K[h+440>>2];t=0;b=j;while(1){n=K[p+(t<<2)>>2];K[m>>2]=K[b>>2];K[m+4>>2]=K[b+4>>2];_=K[m+8>>2];v:{if(!_){break v}r=K[m+12>>2];if((_|0)!=1){s=_&-2;q=0;while(1){K[r>>2]=K[n>>2];K[r+4>>2]=K[n+4>>2];K[r+8>>2]=K[n+8>>2];K[r+12>>2]=K[n+12>>2];K[r+16>>2]=K[n+16>>2];K[r+20>>2]=K[n+20>>2];K[r+24>>2]=K[n+24>>2];K[r+28>>2]=K[n+28>>2];r=r+32|0;n=n+32|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(!(_&1)){break v}K[r>>2]=K[n>>2];K[r+4>>2]=K[n+4>>2];K[r+8>>2]=K[n+8>>2];K[r+12>>2]=K[n+12>>2]}b=b+52|0;m=m+16|0;t=t+1|0;if((ca|0)!=(t|0)){continue}break}}b=K[h+8>>2];K[h+244>>2]=K[h+4>>2];K[h+248>>2]=b;b=(i|0)!=(M|0);h=h+240|0;i=i+1|0;if(b){continue}break}}Ga(k);Ga(p);j=K[pa+420>>2];w:{if(L[pa+5640|0]&4){if((j|0)==-1){break w}r=pa+424|0;i=K[pa+8>>2];q=0;n=g;while(1){b=K[r+36>>2];K[n+44>>2]=1;K[n+84>>2]=b;K[n+48>>2]=K[r>>2];b=K[r+4>>2];K[n+68>>2]=0;K[n+72>>2]=0;K[n+52>>2]=b;K[n+60>>2]=K[r+12>>2];K[n+64>>2]=K[r+16>>2];b=K[r+8>>2];K[n+76>>2]=T;K[n+56>>2]=b>>>0>>0?b:i;r=r+148|0;n=n+240|0;b=(j|0)==(q|0);q=q+1|0;if(!b){continue}break}break w}if((j|0)==-1){break w}h=K[pa+8>>2];i=K[pa+4>>2];n=g;if(j){b=j+1&-2;G=0;while(1){K[n+68>>2]=0;K[n+72>>2]=0;K[n+52>>2]=0;K[n+44>>2]=1;K[n+48>>2]=0;K[n+84>>2]=i;K[n+60>>2]=aa;K[n+324>>2]=i;K[n+76>>2]=T;K[n+56>>2]=h;K[n+308>>2]=0;K[n+312>>2]=0;K[n+292>>2]=0;K[n+284>>2]=1;K[n+288>>2]=0;K[n+300>>2]=aa;K[n+296>>2]=h;K[n+316>>2]=T;K[n+64>>2]=K[n+196>>2];K[n+304>>2]=K[n+436>>2];n=n+480|0;G=G+2|0;if((b|0)!=(G|0)){continue}break}}if(j&1){break w}K[n+68>>2]=0;K[n+72>>2]=0;K[n+52>>2]=0;K[n+44>>2]=1;K[n+48>>2]=0;K[n+84>>2]=i;K[n+60>>2]=aa;K[n+76>>2]=T;K[n+56>>2]=h;K[n+64>>2]=K[n+196>>2]}i=g;break m}Ga(k)}Ga(b)}ra=P+32|0;k=i;x:{y:{if(!i){break y}ka=ha+1|0;t=y;v=i;z:{A:{while(1){if(K[v+84>>2]==-1){break z}aa=Ja(K[ia+16>>2]<<2);if(!aa){break z}b=K[ia+16>>2]<<2;if(b){B(aa,1,b)}if(jc(v)){while(1){p=K[va+20>>2];B:{C:{if(N[v+40>>2]>=N[xa+12>>2]){break C}g=K[v+32>>2];b=Q(K[v+28>>2],76)+p|0;if(g>>>0>=N[b+24>>2]){break C}i=K[b+28>>2]+Q(g,152)|0;if(!K[i+24>>2]){break C}g=i+28|0;m=0;D:{while(1){b=g+Q(m,36)|0;h=K[b+20>>2]+Q(K[v+36>>2],40)|0;if(!Fb(C,K[v+28>>2],K[v+32>>2],K[b+16>>2],K[h>>2],K[h+4>>2],K[h+8>>2],K[h+12>>2])){m=m+1|0;if(m>>>0>2]){continue}break D}break}K[aa+(K[v+28>>2]<<2)>>2]=0;K[w+136>>2]=0;if(!ic(K[ma+4>>2],K[va+20>>2],xa,v,w+140|0,t,w+136|0,l,f)){break A}m=K[v+32>>2];s=K[v+28>>2];r=K[w+136>>2];if(K[w+140>>2]){K[w+136>>2]=0;$=K[(K[va+20>>2]+Q(s,76)|0)+28>>2]+Q(m,152)|0;p=K[$+24>>2];if(p){_=l-r|0;H=l+t|0;s=$+28|0;q=0;j=0;x=r+t|0;h=x;while(1){E:{if(K[s+8>>2]==K[s>>2]|K[s+12>>2]==K[s+4>>2]){break E}b=K[s+20>>2]+Q(K[v+36>>2],40)|0;o=Q(K[b+20>>2],K[b+16>>2]);if(!o){break E}p=K[b+24>>2];F=0;while(1){n=K[p+36>>2];if(n){F:{if(j|K[p+64>>2]){K[p+52>>2]=0;m=1;b=64;break F}m=K[p>>2];b=K[p+40>>2];G:{if(b){m=Q(b,24)+m|0;if(K[m-20>>2]!=K[m-12>>2]){m=m-24|0;break G}b=b+1|0}else{b=1}K[p+40>>2]=b}b=K[m+20>>2];H:{I:{if(b>>>0>(h^-1)>>>0){break I}i=m+20|0;while(1){if(H>>>0>>0){break I}V=K[p+4>>2];j=K[p+52>>2];if((j|0)!=K[p+56>>2]){g=n}else{b=j<<1|1;V=La(V,b<<3);if(!V){Fa(f,1,1024,0);break A}K[p+56>>2]=b;K[p+4>>2]=V;j=K[p+52>>2];b=K[i>>2];g=K[p+36>>2]}i=(j<<3)+V|0;K[i+4>>2]=b;K[i>>2]=h;K[p+52>>2]=j+1;K[m>>2]=K[m>>2]+b;j=K[m+16>>2];i=j+K[m+4>>2]|0;K[m+4>>2]=i;n=g-j|0;K[p+36>>2]=n;K[m+8>>2]=i;h=b+h|0;b=0;if((g|0)==(j|0)){break H}K[p+40>>2]=K[p+40>>2]+1;i=m+44|0;b=K[m+44>>2];m=m+24|0;if((h^-1)>>>0>=b>>>0){continue}break}}j=K[v+28>>2];i=K[v+32>>2];g=K[v+36>>2];if(K[K[ma+4>>2]+104>>2]){K[w+120>>2]=j;K[w+116>>2]=i;K[w+112>>2]=q;K[w+108>>2]=g;K[w+104>>2]=F;K[w+100>>2]=_;K[w+96>>2]=b;Fa(f,1,14656,w+96|0);break A}K[w+88>>2]=j;K[w+84>>2]=i;K[w+80>>2]=q;K[w+76>>2]=g;K[w+72>>2]=F;K[w+68>>2]=_;K[w+64>>2]=b;Fa(f,2,14656,w- -64|0);K[p+52>>2]=0;K[p+64>>2]=1;b=1}j=b;m=K[p+40>>2];b=44}K[b+p>>2]=m}p=p+68|0;F=F+1|0;if((o|0)!=(F|0)){continue}break}p=K[$+24>>2]}s=s+36|0;q=q+1|0;if(q>>>0

>>0){continue}break}m=K[v+32>>2];s=K[v+28>>2];b=j?_:h-x|0}else{b=0}r=b+r|0}b=K[ia+24>>2]+Q(s,52)|0;g=K[b+36>>2];K[b+36>>2]=g>>>0>>0?m:g;break B}p=K[va+20>>2]}K[w+136>>2]=0;if(!ic(K[ma+4>>2],p,xa,v,w+140|0,t,w+136|0,l,f)){break A}s=K[v+28>>2];r=K[w+136>>2];if(!K[w+140>>2]){break B}x=K[v+32>>2];b=K[(K[va+20>>2]+Q(s,76)|0)+28>>2]+Q(x,152)|0;o=K[b+24>>2];if(!o){break B}$=l-r|0;V=b+28|0;H=K[v+36>>2];m=0;j=0;J:{K:{while(1){L:{if(K[V+8>>2]==K[V>>2]|K[V+12>>2]==K[V+4>>2]){break L}b=K[V+20>>2]+Q(H,40)|0;i=Q(K[b+20>>2],K[b+16>>2]);if(!i){break L}n=K[b+24>>2];q=0;while(1){b=K[n+36>>2];if(b){p=K[n>>2];F=K[n+40>>2];M:{if(F){p=Q(F,24)+p|0;if(K[p-20>>2]!=K[p-12>>2]){p=p-24|0;break M}F=F+1|0}else{F=1}K[n+40>>2]=F}h=K[p+20>>2];m=m+h|0;if($>>>0>>0|h>>>0>m>>>0){break J}while(1){N:{h=K[p+16>>2];K[p+4>>2]=h+K[p+4>>2];g=b-h|0;if((b|0)==(h|0)){break N}F=F+1|0;K[n+40>>2]=F;h=K[p+44>>2];m=m+h|0;if(h>>>0>m>>>0){break K}p=p+24|0;b=g;if(m>>>0<=$>>>0){continue}break K}break}K[n+36>>2]=g}n=n+68|0;q=q+1|0;if((i|0)!=(q|0)){continue}break}}V=V+36|0;j=j+1|0;if((o|0)!=(j|0)){continue}break}r=m+r|0;break B}K[n+36>>2]=g}if(!K[K[ma+4>>2]+104>>2]){K[w+24>>2]=s;K[w+20>>2]=x;K[w+16>>2]=j;K[w+12>>2]=H;K[w+8>>2]=q;K[w+4>>2]=$;K[w>>2]=h;Fa(f,2,14571,w);s=K[v+28>>2];r=r+$|0;break B}K[w+56>>2]=s;K[w+52>>2]=x;K[w+48>>2]=j;K[w+44>>2]=H;K[w+40>>2]=q;K[w+36>>2]=$;K[w+32>>2]=h;Fa(f,1,14571,w+32|0);break A}O:{if(!K[aa+(s<<2)>>2]){break O}b=K[ia+24>>2]+Q(s,52)|0;if(K[b+36>>2]){break O}K[b+36>>2]=K[(K[va+20>>2]+Q(s,76)|0)+24>>2]-1}l=l-r|0;t=r+t|0;if(jc(v)){continue}break}}Ga(aa);v=v+240|0;fa=fa+1|0;if(fa>>>0<=N[xa+420>>2]){continue}break}Gb(k,ka);K[Ea+8>>2]=t-y;b=1;break x}Gb(k,ka);Ga(aa);break y}Gb(k,ka)}b=0}ra=w+144|0;kb(ma);if(!b){break b}Z=K[K[C+32>>2]+5584>>2];q=K[K[C+20>>2]>>2];A=K[q+20>>2];K[Ea+12>>2]=1;t=0;b=K[C+32>>2];m=K[Z+16>>2]>>>4&1&K[b+12>>2]==K[b+8>>2];D=K[q+16>>2];P:{if(!D){break P}while(1){b=K[C+68>>2];if(!(K[b+(t<<2)>>2]?0:b)){i=Ea+12|0;D=0;b=K[A+24>>2];Q:{if(!b){break Q}k=K[C+44>>2];while(1){o=K[A+28>>2]+Q(D,152)|0;n=K[o+24>>2];if(n){l=o+28|0;b=K[o+20>>2];v=K[o+16>>2];j=0;while(1){if(Q(b,v)){s=l+Q(j,36)|0;p=0;while(1){r=K[s+20>>2]+Q(p,40)|0;b=Fb(C,K[A+16>>2],D,K[s+16>>2],K[r>>2],K[r+4>>2],K[r+8>>2],K[r+12>>2]);h=K[r+16>>2];n=K[r+20>>2];g=Q(h,n);R:{if(b){if(!g){break R}h=0;while(1){g=K[r+24>>2]+Q(h,68)|0;S:{if(!Fb(C,K[A+16>>2],D,K[s+16>>2],K[g+8>>2],K[g+12>>2],K[g+16>>2],K[g+20>>2])){b=K[g+60>>2];if(!b){break S}Ga(b);K[g+60>>2]=0;break S}if(!K[C+64>>2]){if(K[g+60>>2]|K[g+16>>2]==K[g+8>>2]|K[g+20>>2]==K[g+12>>2]){break S}}n=Ia(1,44);if(!n){K[Ea+12>>2]=0;break Q}b=K[C+64>>2];K[n+36>>2]=0;K[n+28>>2]=i;K[n+20>>2]=Z;K[n+16>>2]=A;K[n+12>>2]=s;K[n+8>>2]=g;K[n+4>>2]=D;K[n>>2]=b;K[n+40>>2]=m;K[n+32>>2]=f;K[n+24>>2]=K[k+4>>2]>1;lb(k,14,n);if(!K[Ea+12>>2]){break Q}}h=h+1|0;if(h>>>0>2],K[r+16>>2])>>>0){continue}break}break R}if(!g){break R}v=0;while(1){g=K[r+24>>2]+Q(v,68)|0;b=K[g+60>>2];if(b){Ga(b);K[g+60>>2]=0;n=K[r+20>>2];h=K[r+16>>2]}v=v+1|0;if(v>>>0>>0){continue}break}}p=p+1|0;b=K[o+20>>2];v=K[o+16>>2];if(p>>>0>>0){continue}break}n=K[o+24>>2]}j=j+1|0;if(n>>>0>j>>>0){continue}break}b=K[A+24>>2]}D=D+1|0;if(D>>>0>>0){continue}break}}if(!K[Ea+12>>2]){break P}D=K[q+16>>2]}Z=Z+1080|0;A=A+76|0;t=t+1|0;if(D>>>0>t>>>0){continue}break}}Z=0;Xa(K[C+44>>2]);if(!K[Ea+12>>2]){break b}T:{if(K[C+64>>2]){break T}t=K[C+24>>2];if(!K[t+16>>2]){break T}A=0;while(1){j=K[K[K[C+20>>2]>>2]+20>>2]+Q(A,76)|0;b=K[j+28>>2]+Q(K[(K[t+24>>2]+Q(A,52)|0)+36>>2],152)|0;h=K[b+136>>2];i=K[b+144>>2];l=K[b+140>>2];g=K[b+148>>2];Ga(K[j+52>>2]);K[j+52>>2]=0;U:{b=K[C+68>>2];if((h|0)==(i|0)|(g|0)==(l|0)|(K[b+(A<<2)>>2]?0:b)){break U}g=g-l|0;b=i-h|0;Le(g,0,b);if(ua){Fa(f,1,2945,0);break b}b=Q(b,g);if(b>>>0>=1073741824){Fa(f,1,2945,0);break b}b=Ma(b<<2);K[j+52>>2]=b;if(b){break U}Fa(f,1,2945,0);break b}A=A+1|0;t=K[C+24>>2];if(A>>>0>2]){continue}break}}t=K[C+32>>2];v=K[K[C+20>>2]>>2];if(K[v+16>>2]){A=K[v+20>>2];t=K[t+5584>>2];D=K[K[C+24>>2]+24>>2];n=0;while(1){V:{b=K[C+68>>2];if(K[b+(n<<2)>>2]?0:b){break V}i=K[D+36>>2]+1|0;if(K[t+20>>2]==1){M=i;b=0;ta=ra-32|0;ra=ta;W:{X:{if(K[C+64>>2]){g=1;if((i|0)==1){break W}j=K[A+28>>2];b=j+Q(K[A+24>>2],152)|0;s=K[b-144>>2];q=K[b-152>>2];if((s|0)==(q|0)){break W}l=i-1|0;k=l&1;$=K[C+44>>2];x=K[$+4>>2];Y:{if((i|0)==2){b=0;h=j;break Y}m=l&-2;b=0;h=j;g=0;while(1){i=K[h+160>>2]-K[h+152>>2]|0;i=b>>>0>i>>>0?b:i;b=K[h+164>>2]-K[h+156>>2]|0;i=b>>>0>>0?i:b;b=K[h+312>>2]-K[h+304>>2]|0;i=b>>>0>>0?i:b;b=K[h+316>>2]-K[h+308>>2]|0;b=b>>>0>>0?i:b;h=h+304|0;g=g+2|0;if((m|0)!=(g|0)){continue}break}}g=0;if(k){i=K[h+160>>2]-K[h+152>>2]|0;i=b>>>0>i>>>0?b:i;b=K[h+164>>2]-K[h+156>>2]|0;b=b>>>0>>0?i:b}if(b>>>0>134217727){break W}k=K[j+4>>2];i=K[j+12>>2];m=K[j>>2];h=K[j+8>>2];p=b<<5;H=sb(p);K[ta+16>>2]=H;if(!H){break W}K[ta>>2]=H;if(l){y=s-q|0;i=i-k|0;g=h-m|0;while(1){r=K[A+36>>2];m=i;K[ta+8>>2]=i;b=g;K[ta+24>>2]=b;k=K[j+156>>2];h=K[j+164>>2];i=K[j+160>>2];g=K[j+152>>2];K[ta+28>>2]=(g|0)%2;g=i-g|0;K[ta+20>>2]=g-b;q=(x|0)<2;i=h-k|0;Z:{if(!(!q&i>>>0>1)){h=0;if(!i){break Z}while(1){pc(ta+16|0,r+(Q(h,y)<<2)|0);h=h+1|0;if((i|0)!=(h|0)){continue}break}break Z}o=i>>>0>>0?i:x;k=o-1|0;s=(i>>>0)/(o>>>0)|0;b=0;while(1){_=Ja(36);if(!_){break X}h=K[ta+20>>2];K[_>>2]=K[ta+16>>2];K[_+4>>2]=h;h=K[ta+28>>2];K[_+8>>2]=K[ta+24>>2];K[_+12>>2]=h;K[_+28>>2]=Q(b,s);K[_+24>>2]=r;K[_+20>>2]=y;K[_+16>>2]=g;h=(b|0)==(k|0);b=b+1|0;K[_+32>>2]=h?i:Q(s,b);h=sb(p);K[_>>2]=h;if(!h){g=0;Xa($);Ga(_);Ga(H);break W}lb($,10,_);if((b|0)!=(o|0)){continue}break}Xa($)}K[ta+4>>2]=i-m;K[ta+12>>2]=K[j+156>>2]%2;_:{if(!(!q&g>>>0>1)){b=8;h=0;if(g>>>0>=8){while(1){rb(ta,r+(h<<2)|0,y,8);h=b;b=b+8|0;if(g>>>0>=b>>>0){continue}break}}if(g>>>0<=h>>>0){break _}rb(ta,r+(h<<2)|0,y,g-h|0);break _}q=g>>>0>>0?g:x;m=q-1|0;k=(g>>>0)/(q>>>0)|0;b=0;while(1){s=Ja(36);if(!s){break X}h=K[ta+4>>2];K[s>>2]=K[ta>>2];K[s+4>>2]=h;h=K[ta+12>>2];K[s+8>>2]=K[ta+8>>2];K[s+12>>2]=h;K[s+28>>2]=Q(b,k);K[s+24>>2]=r;K[s+20>>2]=y;K[s+16>>2]=i;h=(b|0)==(m|0);b=b+1|0;K[s+32>>2]=h?g:Q(k,b);h=sb(p);K[s>>2]=h;if(!h){g=0;Xa($);Ga(s);Ga(H);break W}lb($,11,s);if((b|0)!=(q|0)){continue}break}Xa($)}j=j+152|0;l=l-1|0;if(l){continue}break}}g=1;Ga(H);break W}g=1;m=K[A+28>>2];Wa=m+Q(M,152)|0;yb=Wa-152|0;if(K[yb>>2]==K[Wa-144>>2]){break W}zb=Wa-148|0;if(K[zb>>2]==K[Wa-140>>2]){break W}o=K[m+4>>2];s=K[m+12>>2];q=K[m>>2];k=K[m+8>>2];qa=K[A+68>>2];ba=K[A+64>>2];ha=K[A+60>>2];ga=K[A+56>>2];Qa=oc(A,M);if(!Qa){g=0;break W}$:{aa:{if((M|0)!=1){g=M-1|0;j=g&1;ba:{if((M|0)==2){h=m;break ba}i=g&-2;h=m;g=0;while(1){l=K[h+160>>2]-K[h+152>>2]|0;l=b>>>0>l>>>0?b:l;b=K[h+164>>2]-K[h+156>>2]|0;l=b>>>0>>0?l:b;b=K[h+312>>2]-K[h+304>>2]|0;l=b>>>0>>0?l:b;b=K[h+316>>2]-K[h+308>>2]|0;b=b>>>0>>0?l:b;h=h+304|0;g=g+2|0;if((i|0)!=(g|0)){continue}break}}if(j){g=K[h+160>>2]-K[h+152>>2]|0;g=b>>>0>g>>>0?b:g;b=K[h+164>>2]-K[h+156>>2]|0;b=b>>>0>>0?g:b}if(b>>>0>=268435456){break $}u=sb(b<<4);if(!u){break $}ca:{if(!M){break ca}r=s-o|0;V=k-q|0;Ra=u-4|0;Nb=u+44|0;Ob=u+40|0;Pb=u+36|0;Ab=u+28|0;_=u+24|0;$=u+20|0;hb=u-12|0;oa=u+12|0;na=u+8|0;ib=u-16|0;ab=u-8|0;ja=u+4|0;cb=1;da:while(1){g=K[m+156>>2];jb=(g|0)%2|0;b=K[m+152>>2];Sa=(b|0)%2|0;G=K[m+164>>2]-g|0;Da=G-r|0;ea=K[m+160>>2]-b|0;ya=ea-V|0;h=ga;g=h;i=ha;q=i;b=ba;wa=b;l=qa;F=l;j=K[A+20>>2];ea:{if((j|0)==(cb|0)){break ea}y=j-cb|0;q=0;g=0;if(h){g=y&31;if((y&63)>>>0>=32){o=-1<>>32-g}b=h+(b^-1)|0;g=o^-1;g=b>>>0>>0?g+1|0:g;l=y&31;if((y&63)>>>0>=32){g=g>>>l|0}else{g=((1<>>l}}if(ha){l=y&31;if((y&63)>>>0>=32){o=-1<>>32-l}b=ha+(b^-1)|0;l=o^-1;l=b>>>0>>0?l+1|0:l;i=y&31;if((y&63)>>>0>=32){q=l>>>i|0}else{q=((1<>>i}}l=0;b=0;if(ba){i=y&31;if((y&63)>>>0>=32){o=-1<>>32-i}b=ba+(b^-1)|0;i=o^-1;i=b>>>0>>0?i+1|0:i;h=y&31;if((y&63)>>>0>=32){b=i>>>h|0}else{b=((1<>>h}}if(qa){i=y&31;if((y&63)>>>0>=32){o=-1<>>32-i}l=qa+(l^-1)|0;i=o^-1;i=l>>>0>>0?i+1|0:i;h=y&31;if((y&63)>>>0>=32){l=i>>>h|0}else{l=((1<>>h}}wa=0;h=0;p=1<>>0>>0){h=y&31;if((y&63)>>>0>=32){o=-1<>>32-h}j=i^-1;i=j+(ga-p|0)|0;h=o^-1;h=i>>>0>>0?h+1|0:h;j=y&31;if((y&63)>>>0>=32){h=h>>>j|0}else{h=((1<>>j}}if(p>>>0>>0){j=y&31;if((y&63)>>>0>=32){o=-1<>>32-j}k=i^-1;i=k+(ba-p|0)|0;j=o^-1;j=i>>>0>>0?j+1|0:j;k=y&31;if((y&63)>>>0>=32){wa=j>>>k|0}else{wa=((1<>>k}}F=0;i=0;if(p>>>0>>0){j=y&31;if((y&63)>>>0>=32){o=-1<>>32-j}k=i^-1;i=k+(ha-p|0)|0;j=o^-1;j=i>>>0>>0?j+1|0:j;k=y&31;if((y&63)>>>0>=32){i=j>>>k|0}else{i=((1<>>k}}if(p>>>0>=qa>>>0){break ea}k=y&31;if((y&63)>>>0>=32){o=-1<>>32-k}s=j^-1;j=s+(qa-p|0)|0;k=o^-1;k=j>>>0>>0?k+1|0:k;s=y&31;if((y&63)>>>0>=32){F=k>>>s|0}else{F=((1<>>s}}s=K[m+180>>2];j=wa-s|0;k=j>>>0<=wa>>>0?j:0;j=k+2|0;j=j>>>0>>0?-1:j;Ka=j>>>0>>0?j:ya;k=K[m+216>>2];j=b-k|0;j=b>>>0>=j>>>0?j:0;b=j+2|0;b=b>>>0>>0?-1:b;Oa=b>>>0>>0?b:V;j=(Sa?Ka:Oa)<<1;b=(Sa?Oa:Ka)<<1|1;eb=b>>>0>>0?j:b;T=eb>>>0>>0;b=h-s|0;h=b>>>0<=h>>>0?b:0;b=h-2|0;o=b>>>0<=h>>>0?b:0;b=g-k|0;g=b>>>0<=g>>>0?b:0;b=g-2|0;p=b>>>0<=g>>>0?b:0;aa=(Sa?o:p)<<1;ka=(Sa?p:o)<<1|1;y=aa>>>0>>0;s=K[m+184>>2];b=q-s|0;g=b>>>0<=q>>>0?b:0;b=g-2|0;k=b>>>0<=g>>>0?b:0;fa=k;h=K[m+220>>2];b=i-h|0;g=b>>>0<=i>>>0?b:0;b=g-2|0;j=b>>>0<=g>>>0?b:0;H=j;b=l-s|0;g=b>>>0<=l>>>0?b:0;b=g+2|0;b=b>>>0>>0?-1:b;da=b>>>0>>0?b:r;x=da;b=F-h|0;g=b>>>0<=F>>>0?b:0;b=g+2|0;b=b>>>0>>0?-1:b;Ta=b>>>0>>0?b:Da;q=Ta;if(jb){H=k;x=q;fa=j;q=da}mb=T?eb:ea;s=y?aa:ka;Bb=r+Ta|0;Cb=j+r|0;if(G){bb=(p<<3)+u|0;l=ya<<3;sa=l+Ra|0;g=(p|0)<(ya|0);za=g?bb+4|0:sa;aa=(V|0)>(Ka|0)?Ka:V-1|0;F=0;Ba=(V|0)>1|(ya|0)>0;b=Sa<<2;w=(ja-b|0)+(o<<3)|0;P=b+bb|0;ka=(ya|0)>(Oa|0)?Oa:ya;y=p+1|0;ia=V+Ka|0;ma=o+V|0;ca=(s<<2)+u|0;b=V<<3;ob=b+ab|0;fb=b+Ra|0;U=l+ab|0;z=!V&(ya|0)==1;b=mb<<2;pa=b+u|0;va=b+Ra|0;xa=((g?p:ya)<<3)+Ra|0;while(1){fa:{if(!(F>>>0>>0&k>>>0<=F>>>0|F>>>0>>0&F>>>0>=Cb>>>0)){T=F+1|0;break fa}if(ea>>>0>eb>>>0){K[va>>2]=0;K[pa>>2]=0}T=F+1|0;Ua(Qa,p,F,Oa,T,P,2,0);Ua(Qa,ma,F,ia,T,w,2,0);ga:{ha:{ia:{if(!Sa){if(!Ba){break ga}if((p|0)>=(Oa|0)){break ha}ja:{ka:{if((p|0)>0){b=K[xa>>2];break ka}b=K[ja>>2];g=b;if((p|0)<0){break ja}}g=b;b=K[za>>2]}K[bb>>2]=K[bb>>2]-((b+g|0)+2>>2);l=p;b=y;g=b;if((b|0)>=(ka|0)){break ia}while(1){b=(g<<3)+u|0;K[b>>2]=K[b>>2]-((K[((l<<3)+u|0)+4>>2]+K[b+4>>2]|0)+2>>2);l=g;g=g+1|0;if((ka|0)!=(g|0)){continue}break}b=ka;break ia}la:{if(!z){b=p;if((Oa|0)<=(b|0)){break la}while(1){g=(b<<3)+u|0;i=g;l=K[g+4>>2];ma:{na:{if((b|0)>=0){wa=K[((b|0)<(ya|0)?g:U)>>2];g=b+1|0;break na}wa=K[u>>2];g=0;b=b+1|0;h=u;if(b){break ma}}if((g|0)>=(ya|0)){b=g;h=U;break ma}b=g;h=(b<<3)+u|0}g=h;K[i+4>>2]=l-((K[g>>2]+wa|0)+2>>2);if((b|0)<(Oa|0)){continue}break}break la}K[u>>2]=K[u>>2]/2;break ga}b=o;if((Ka|0)<=(b|0)){break ga}while(1){g=b<<3;h=g+u|0;l=K[h>>2];oa:{if((b|0)<0){i=K[ja>>2];wa=ja;break oa}i=K[((b|0)<(V|0)?((b<<3)+u|0)+4|0:fb)>>2];wa=ja;if(!b){break oa}wa=fb;if((b|0)>(V|0)){break oa}wa=g+Ra|0}g=wa;K[h>>2]=l+(K[g>>2]+i>>1);b=b+1|0;if((Ka|0)!=(b|0)){continue}break}break ga}if((b|0)>=(Oa|0)){break ha}while(1){g=(b<<3)+u|0;h=g;i=K[g>>2];pa:{qa:{if((b|0)>0){l=K[(((b|0)<(ya|0)?b:ya)<<3)+Ra>>2];break qa}l=K[ja>>2];g=ja;if((b|0)<0){break pa}}g=sa;if((b|0)>=(ya|0)){break pa}g=((b<<3)+u|0)+4|0}K[h>>2]=i-((K[g>>2]+l|0)+2>>2);b=b+1|0;if((Oa|0)!=(b|0)){continue}break}}if((o|0)>=(Ka|0)){break ga}g=o;b=g;if((aa|0)>(b|0)){while(1){g=(b<<3)+u|0;b=b+1|0;K[g+4>>2]=K[g+4>>2]+(K[(b<<3)+u>>2]+K[g>>2]>>1);if((b|0)!=(aa|0)){continue}break}g=aa}if((g|0)>=(Ka|0)){break ga}while(1){b=g;ra:{sa:{if((b|0)>=0){h=K[((b|0)<(V|0)?(b<<3)+u|0:ob)>>2];l=b+1|0;break sa}h=K[u>>2];l=0;g=b+1|0;i=u;if(g){break ra}}if((l|0)>=(V|0)){g=l;i=ob;break ra}g=l;i=(g<<3)+u|0}l=i;b=(b<<3)+u|0;K[b+4>>2]=K[b+4>>2]+(K[l>>2]+h>>1);if((g|0)<(Ka|0)){continue}break}}if(!db(Qa,s,F,mb,T,ca,1,0)){break aa}}F=T;if((G|0)!=(T|0)){continue}break}}m=m+152|0;g=x<<1;b=q<<1|1;b=b>>>0>>0?g:b;Qb=b>>>0>>0?b:G;q=k<<5;g=q|16;b=Da<<5;h=(k|0)<(Da|0);Rb=h?g+oa|0:b+Ra|0;Sb=h?g+na|0:b+ab|0;Tb=h?g+ja|0:b+hb|0;Ub=h?g+u|0:b+ib|0;x=(r|0)>(Ta|0)?Ta:r-1|0;b=(Da|0)>0;Vb=b|(r|0)>1;gb=q+u|0;Wb=gb+(jb<<4)|0;i=r<<3;ub=i-8|0;g=((r|0)<=0?ub:0)<<2;Xb=g+oa|0;Yb=g+na|0;Zb=g+ja|0;_b=g+u|0;l=Da<<3;vb=l-8|0;b=(b?0:vb)<<2;$b=b+oa|0;ya=b+na|0;Ka=b+ja|0;Oa=b+u|0;wa=((4-(jb<<2)<<2)+u|0)+(j<<5)|0;y=(da|0)<(Da|0)?da:Da;o=k+1|0;g=fa<<1;b=H<<1|1;Sa=b>>>0>g>>>0?g:b;bb=(Sa<<4)+u|0;Db=q+oa|0;pb=q+na|0;qb=q+ja|0;b=r<<5;eb=b+oa|0;Eb=i-1|0;ob=b+na|0;Ib=i-2|0;fb=b+ja|0;Jb=i-3|0;U=b+u|0;Kb=i-4|0;sa=l-5|0;za=l-6|0;Ba=l-7|0;w=!r&(Da|0)==1;b=ub<<2;P=b+oa|0;ia=b+na|0;ma=b+ja|0;ca=b+u|0;z=l-4|0;b=z<<2;pa=b+oa|0;va=b+na|0;xa=b+ja|0;F=b+u|0;b=(h?k:Da)<<5;V=b+Ra|0;q=b+ab|0;h=b+hb|0;fa=b+ib|0;b=vb<<2;T=b+oa|0;aa=b+na|0;ka=b+ja|0;H=b+u|0;while(1){ta:{ua:{va:{wa:{p=s;if(p>>>0>>0){b=mb-p|0;s=p+(b>>>0>=4?4:b)|0;Ua(Qa,p,k,s,da,Wb,1,8);Ua(Qa,p,Cb,s,Bb,wa,1,8);if(!jb){if(!Vb){break ta}if((k|0)>=(da|0)){break ua}xa:{if((k|0)>0){b=K[fa>>2];i=q;l=h;g=V;break xa}b=K[u+16>>2];if((k|0)<0){break wa}i=_;l=$;g=Ab}K[gb>>2]=K[gb>>2]-((K[Ub>>2]+b|0)+2>>2);K[qb>>2]=K[qb>>2]-((K[l>>2]+K[Tb>>2]|0)+2>>2);K[pb>>2]=K[pb>>2]-((K[i>>2]+K[Sb>>2]|0)+2>>2);b=K[Rb>>2];g=K[g>>2];break va}if(w){K[u>>2]=K[u>>2]/2;K[u+4>>2]=K[u+4>>2]/2;K[na>>2]=K[na>>2]/2;K[oa>>2]=K[oa>>2]/2;break ta}b=k;if((da|0)>(b|0)){while(1){i=b<<3;ya:{za:{if((b|0)<0){if((b|0)==-1){break za}g=(i<<2)+u|0;K[g+16>>2]=K[g+16>>2]-((K[u>>2]<<1)+2>>2);K[g+20>>2]=K[g+20>>2]-((K[u+4>>2]<<1)+2>>2);K[g+24>>2]=K[g+24>>2]-((K[na>>2]<<1)+2>>2);K[g+28>>2]=K[g+28>>2]-((K[oa>>2]<<1)+2>>2);break ya}Y=(i<<2)+u|0;l=K[Y+16>>2];g=b+1|0;if((g|0)>=(Da|0)){g=(b|0)<(Da|0);K[Y+16>>2]=l-((K[((g?i:vb)<<2)+u>>2]+K[H>>2]|0)+2>>2);K[Y+20>>2]=K[Y+20>>2]-((K[((g?i|1:Ba)<<2)+u>>2]+K[ka>>2]|0)+2>>2);K[Y+24>>2]=K[Y+24>>2]-((K[((g?i|2:za)<<2)+u>>2]+K[aa>>2]|0)+2>>2);K[Y+28>>2]=K[Y+28>>2]-((K[((g?i|3:sa)<<2)+u>>2]+K[T>>2]|0)+2>>2);break ya}g=(g<<5)+u|0;K[Y+16>>2]=l-((K[Y>>2]+K[g>>2]|0)+2>>2);K[Y+20>>2]=K[Y+20>>2]-((K[Y+4>>2]+K[g+4>>2]|0)+2>>2);K[Y+24>>2]=K[Y+24>>2]-((K[Y+8>>2]+K[g+8>>2]|0)+2>>2);K[Y+28>>2]=K[Y+28>>2]-((K[Y+12>>2]+K[g+12>>2]|0)+2>>2);break ya}K[ib>>2]=K[ib>>2]-((K[u>>2]+K[Oa>>2]|0)+2>>2);K[hb>>2]=K[hb>>2]-((K[u+4>>2]+K[Ka>>2]|0)+2>>2);K[ab>>2]=K[ab>>2]-((K[na>>2]+K[ya>>2]|0)+2>>2);K[Ra>>2]=K[Ra>>2]-((K[oa>>2]+K[$b>>2]|0)+2>>2)}b=b+1|0;if((da|0)!=(b|0)){continue}break}}b=j;if((Ta|0)<=(b|0)){break ta}while(1){Y=b<<3;Aa:{if((b|0)<0){g=(Y<<2)+u|0;K[g>>2]=K[g>>2]+(K[u+16>>2]<<1>>1);K[g+4>>2]=K[g+4>>2]+(K[u+20>>2]<<1>>1);K[g+8>>2]=K[g+8>>2]+(K[u+24>>2]<<1>>1);K[g+12>>2]=K[g+12>>2]+(K[u+28>>2]<<1>>1);break Aa}if(b){i=Y<<2;Aa=i+u|0;l=(b|0)>(r|0);g=(b|0)<(r|0);K[Aa>>2]=K[Aa>>2]+(K[(l?U:Aa)-16>>2]+K[((g?Y|4:Kb)<<2)+u>>2]>>1);K[Aa+4>>2]=K[Aa+4>>2]+(K[(l?fb:i+ja|0)-16>>2]+K[((g?Y|5:Jb)<<2)+u>>2]>>1);K[Aa+8>>2]=K[Aa+8>>2]+(K[(l?ob:i+na|0)-16>>2]+K[((g?Y|6:Ib)<<2)+u>>2]>>1);K[Aa+12>>2]=K[Aa+12>>2]+(K[(l?eb:i+oa|0)-16>>2]+K[((g?Y|7:Eb)<<2)+u>>2]>>1);break Aa}g=(b|0)<(r|0);K[u>>2]=K[u>>2]+(K[u+16>>2]+K[((g?4:Kb)<<2)+u>>2]>>1);K[u+4>>2]=K[u+4>>2]+(K[u+20>>2]+K[((g?5:Jb)<<2)+u>>2]>>1);K[na>>2]=K[na>>2]+(K[u+24>>2]+K[((g?6:Ib)<<2)+u>>2]>>1);K[oa>>2]=K[oa>>2]+(K[u+28>>2]+K[((g?7:Eb)<<2)+u>>2]>>1)}b=b+1|0;if((Ta|0)!=(b|0)){continue}break}break ta}V=ea;r=G;cb=cb+1|0;if((M|0)!=(cb|0)){continue da}break ca}K[gb>>2]=K[gb>>2]-((b<<1)+2>>2);K[qb>>2]=K[qb>>2]-((K[$>>2]<<1)+2>>2);K[pb>>2]=K[pb>>2]-((K[_>>2]<<1)+2>>2);b=K[Ab>>2];g=b}K[Db>>2]=K[Db>>2]-((b+g|0)+2>>2);l=k;g=o;b=g;if((y|0)>(b|0)){while(1){i=(g<<5)+u|0;b=l<<5|16;K[i>>2]=K[i>>2]-((K[b+u>>2]+K[i+16>>2]|0)+2>>2);K[i+4>>2]=K[i+4>>2]-((K[b+ja>>2]+K[i+20>>2]|0)+2>>2);K[i+8>>2]=K[i+8>>2]-((K[b+na>>2]+K[i+24>>2]|0)+2>>2);K[i+12>>2]=K[i+12>>2]-((K[b+oa>>2]+K[i+28>>2]|0)+2>>2);l=g;g=g+1|0;if((y|0)!=(g|0)){continue}break}b=y}if((b|0)>=(da|0)){break ua}while(1){Pa=b<<3;Y=Pa|4;Aa=(b|0)<(Da|0);Ba:{if((b|0)<=0){i=K[u+16>>2];if((b|0)>=0){l=Pa<<2;g=l+u|0;Y=(Aa?Y:z)<<2;K[g>>2]=K[g>>2]-((i+K[Y+u>>2]|0)+2>>2);g=l+ja|0;K[g>>2]=K[g>>2]-((K[u+20>>2]+K[Y+ja>>2]|0)+2>>2);g=l+na|0;K[g>>2]=K[g>>2]-((K[u+24>>2]+K[Y+na>>2]|0)+2>>2);l=(K[u+28>>2]+K[Y+oa>>2]|0)+2|0;break Ba}l=Pa<<2;g=l+u|0;K[g>>2]=K[g>>2]-((i<<1)+2>>2);g=l+ja|0;K[g>>2]=K[g>>2]-((K[u+20>>2]<<1)+2>>2);g=l+na|0;K[g>>2]=K[g>>2]-((K[u+24>>2]<<1)+2>>2);l=(K[u+28>>2]<<1)+2|0;break Ba}Ca=((Aa?b:Da)<<3)-4<<2;i=K[Ca+u>>2];if(!Aa){l=Pa<<2;g=l+u|0;K[g>>2]=K[g>>2]-((i+K[F>>2]|0)+2>>2);g=l+ja|0;K[g>>2]=K[g>>2]-((K[ja+Ca>>2]+K[xa>>2]|0)+2>>2);g=l+na|0;K[g>>2]=K[g>>2]-((K[na+Ca>>2]+K[va>>2]|0)+2>>2);l=(K[oa+Ca>>2]+K[pa>>2]|0)+2|0;break Ba}l=Pa<<2;g=l+u|0;Y=Y<<2;K[g>>2]=K[g>>2]-((i+K[Y+u>>2]|0)+2>>2);g=l+ja|0;K[g>>2]=K[g>>2]-((K[ja+Ca>>2]+K[Y+ja>>2]|0)+2>>2);g=l+na|0;K[g>>2]=K[g>>2]-((K[na+Ca>>2]+K[Y+na>>2]|0)+2>>2);l=(K[oa+Ca>>2]+K[Y+oa>>2]|0)+2|0}g=(Pa<<2)+oa|0;K[g>>2]=K[g>>2]-(l>>2);b=b+1|0;if((da|0)!=(b|0)){continue}break}}if((j|0)>=(Ta|0)){break ta}i=j;b=i;if((x|0)>(b|0)){while(1){b=i<<5;g=b+u|0;K[g+16>>2]=K[g+16>>2]+(K[g+32>>2]+K[g>>2]>>1);K[g+20>>2]=K[g+20>>2]+(K[b+Pb>>2]+K[g+4>>2]>>1);K[g+24>>2]=K[g+24>>2]+(K[b+Ob>>2]+K[g+8>>2]>>1);K[g+28>>2]=K[g+28>>2]+(K[b+Nb>>2]+K[g+12>>2]>>1);i=i+1|0;if((x|0)!=(i|0)){continue}break}b=x}if((b|0)>=(Ta|0)){break ta}while(1){g=b<<3;Pa=g|4;i=(Pa<<2)+oa|0;Ca:{if((b|0)<0){Y=K[u>>2];if((b|0)!=-1){l=Pa<<2;g=l+u|0;K[g>>2]=Y+K[g>>2];g=l+ja|0;K[g>>2]=K[g>>2]+K[ja>>2];g=l+na|0;K[g>>2]=K[g>>2]+K[na>>2];g=K[oa>>2];break Ca}l=Pa<<2;g=l+u|0;K[g>>2]=K[g>>2]+(Y+K[_b>>2]>>1);g=l+ja|0;K[g>>2]=K[g>>2]+(K[Zb>>2]+K[ja>>2]>>1);g=l+na|0;K[g>>2]=K[g>>2]+(K[Yb>>2]+K[na>>2]>>1);g=K[Xb>>2]+K[oa>>2]>>1;break Ca}Ca=(((b|0)<(r|0)?g:ub)<<2)+u|0;Aa=K[Ca>>2];l=b+1|0;if((l|0)>=(r|0)){l=Pa<<2;g=l+u|0;K[g>>2]=K[g>>2]+(Aa+K[ca>>2]>>1);g=l+ja|0;K[g>>2]=K[g>>2]+(K[ma>>2]+K[Ca+4>>2]>>1);g=l+na|0;K[g>>2]=K[g>>2]+(K[ia>>2]+K[Ca+8>>2]>>1);g=K[P>>2]+K[Ca+12>>2]>>1;break Ca}Y=Pa<<2;g=Y+u|0;l=(l<<5)+u|0;K[g>>2]=K[g>>2]+(Aa+K[l>>2]>>1);g=Y+ja|0;K[g>>2]=K[g>>2]+(K[l+4>>2]+K[Ca+4>>2]>>1);g=Y+na|0;K[g>>2]=K[g>>2]+(K[l+8>>2]+K[Ca+8>>2]>>1);g=K[l+12>>2]+K[Ca+12>>2]>>1}K[i>>2]=g+K[i>>2];b=b+1|0;if((Ta|0)!=(b|0)){continue}break}}if(db(Qa,p,Sa,s,Qb,bb,1,4)){continue}break}break}break aa}Ga(u);g=1}h=K[Wa-16>>2];i=K[yb>>2];l=K[zb>>2];b=K[Wa-8>>2];Ua(Qa,h-i|0,K[Wa-12>>2]-l|0,b-i|0,K[Wa-4>>2]-l|0,K[A+52>>2],1,b-h|0);_a(Qa);break W}_a(Qa);Ga(u);g=0;break W}_a(Qa);g=0;break W}g=0;Xa($);Ga(H)}ra=ta+32|0;if(g){break V}break b}g=0;p=0;U=ra+-64|0;ra=U;Da:{Ea:{Fa:{if(K[C+64>>2]){h=K[A+28>>2];k=h+Q(K[A+24>>2],152)|0;q=K[k-152>>2];j=1;ia=K[C+44>>2];xa=K[ia+4>>2];if((i|0)==1){break Da}s=i-1|0;m=s&1;Ga:{if((i|0)==2){i=0;b=h;break Ga}j=s&-2;i=0;b=h;while(1){g=K[b+160>>2]-K[b+152>>2]|0;l=g>>>0>>0?i:g;g=K[b+164>>2]-K[b+156>>2]|0;l=g>>>0>>0?l:g;g=K[b+312>>2]-K[b+304>>2]|0;l=g>>>0>>0?l:g;g=K[b+316>>2]-K[b+308>>2]|0;i=g>>>0>>0?l:g;b=b+304|0;p=p+2|0;if((j|0)!=(p|0)){continue}break}}j=0;if(m){g=K[b+160>>2]-K[b+152>>2]|0;g=g>>>0>>0?i:g;b=K[b+164>>2]-K[b+156>>2]|0;i=b>>>0>>0?g:b}if(i>>>0>134217727){break Da}k=K[k-144>>2];m=K[h+4>>2];l=K[h+12>>2];g=K[h>>2];b=K[h+8>>2];qa=i<<5;i=Ma(qa);K[U+32>>2]=i;if(!i){break Da}K[U>>2]=i;if(!s){j=1;Ga(i);break Da}m=l-m|0;i=b-g|0;b=xa>>>1|0;ba=b>>>0<=2?2:b;w=k-q|0;ga=w<<5;G=Q(w,28);ea=Q(w,24);T=Q(w,20);aa=w<<4;ka=Q(w,12);_=w<<3;l=K[A+36>>2];while(1){K[U+8>>2]=m;b=i;K[U+40>>2]=b;pa=K[h+156>>2];va=K[h+164>>2];g=K[h+160>>2];j=K[h+152>>2];K[U+56>>2]=0;K[U+52>>2]=b;K[U+48>>2]=0;q=(j|0)%2|0;K[U+44>>2]=q;i=g-j|0;x=i-b|0;K[U+60>>2]=x;K[U+36>>2]=x;r=(xa|0)<2;m=va-pa|0;Ha:{if(!(!r&m>>>0>15)){j=0;g=l;if(m>>>0<8){break Ha}p=0;k=K[U+32>>2];while(1){b=U+32|0;Hb(b,g,w,8);Za(b);b=0;if(i){while(1){q=(b<<2)+g|0;j=k+(b<<5)|0;O[q>>2]=O[j>>2];O[q+(w<<2)>>2]=O[j+4>>2];O[q+_>>2]=O[j+8>>2];O[q+ka>>2]=O[j+12>>2];b=b+1|0;if((i|0)!=(b|0)){continue}break}b=0;while(1){q=(b<<2)+g|0;j=k+(b<<5)|0;O[q+aa>>2]=O[j+16>>2];O[q+T>>2]=O[j+20>>2];O[q+ea>>2]=O[j+24>>2];O[q+G>>2]=O[j+28>>2];b=b+1|0;if((i|0)!=(b|0)){continue}break}}g=g+ga|0;b=p+15|0;j=p+8|0;p=j;if(b>>>0>>0){continue}break}break Ha}g=m>>>3|0;y=g>>>0>>0?g:xa;o=(m>>>0)/(y>>>0)&-8;j=m&-8;p=0;g=l;while(1){H=Ja(48);if(!H){break Fa}k=Ma(qa);K[H>>2]=k;if(!k){Xa(ia);Ga(H);j=0;break Ea}K[H+40>>2]=g;K[H+36>>2]=w;K[H+32>>2]=i;K[H+28>>2]=x;K[H+24>>2]=0;K[H+20>>2]=b;K[H+16>>2]=0;K[H+12>>2]=q;K[H+8>>2]=b;K[H+4>>2]=x;k=j-Q(o,p)|0;p=p+1|0;k=(y|0)==(p|0)?k:o;K[H+44>>2]=k;lb(ia,12,H);g=(Q(k,w)<<2)+g|0;if((p|0)!=(y|0)){continue}break}Xa(ia)}Ia:{if(j>>>0>=m>>>0){break Ia}b=U+32|0;k=m-j|0;Hb(b,g,w,k);Za(b);if(!i){break Ia}p=k&-4;y=k&3;fa=0;o=K[U+32>>2];q=pa+(j-va|0)>>>0>4294967292;while(1){H=(fa<<2)+g|0;x=o+(fa<<5)|0;b=0;j=0;if(!q){while(1){O[H+(Q(b,w)<<2)>>2]=O[x+(b<<2)>>2];k=b|1;O[H+(Q(k,w)<<2)>>2]=O[x+(k<<2)>>2];k=b|2;O[H+(Q(k,w)<<2)>>2]=O[x+(k<<2)>>2];k=b|3;O[H+(Q(k,w)<<2)>>2]=O[x+(k<<2)>>2];b=b+4|0;j=j+4|0;if((p|0)!=(j|0)){continue}break}}j=0;if(y){while(1){O[H+(Q(b,w)<<2)>>2]=O[x+(b<<2)>>2];b=b+1|0;j=j+1|0;if((y|0)!=(j|0)){continue}break}}fa=fa+1|0;if((fa|0)!=(i|0)){continue}break}}P=K[U+8>>2];ma=m-P|0;K[U+4>>2]=ma;b=K[h+156>>2];K[U+16>>2]=0;K[U+20>>2]=P;K[U+24>>2]=0;K[U+28>>2]=ma;V=(b|0)%2|0;K[U+12>>2]=V;Ja:{if(!(!r&i>>>0>15)){g=l;if(i>>>0<8){break Ja}$=m&-2;H=m&1;x=ma&-2;y=ma&1;r=P&-2;o=P&1;ha=va+(pa^-1)|0;F=K[U>>2];b=V<<5;fa=F+b|0;da=(F-b|0)+32|0;q=Q(w,P)<<2;p=i;while(1){b=0;j=0;Ka:{La:{switch(P|0){default:while(1){z=(Q(b,w)<<2)+g|0;k=K[z+4>>2];M=fa+(b<<6)|0;K[M>>2]=K[z>>2];K[M+4>>2]=k;k=K[z+28>>2];K[M+24>>2]=K[z+24>>2];K[M+28>>2]=k;k=K[z+20>>2];K[M+16>>2]=K[z+16>>2];K[M+20>>2]=k;k=K[z+12>>2];K[M+8>>2]=K[z+8>>2];K[M+12>>2]=k;k=b|1;z=fa+(k<<6)|0;M=(Q(k,w)<<2)+g|0;k=K[M+28>>2];K[z+24>>2]=K[M+24>>2];K[z+28>>2]=k;k=K[M+20>>2];K[z+16>>2]=K[M+16>>2];K[z+20>>2]=k;k=K[M+12>>2];K[z+8>>2]=K[M+8>>2];K[z+12>>2]=k;k=K[M+4>>2];K[z>>2]=K[M>>2];K[z+4>>2]=k;b=b+2|0;j=j+2|0;if((r|0)!=(j|0)){continue}break};break;case 0:break Ka;case 1:break La}}if(!o){break Ka}k=fa+(b<<6)|0;j=(Q(b,w)<<2)+g|0;b=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=b;b=K[j+28>>2];K[k+24>>2]=K[j+24>>2];K[k+28>>2]=b;b=K[j+20>>2];K[k+16>>2]=K[j+16>>2];K[k+20>>2]=b;b=K[j+12>>2];K[k+8>>2]=K[j+8>>2];K[k+12>>2]=b}Ma:{if((m|0)==(P|0)){break Ma}M=g+q|0;b=0;j=0;if((P|0)!=(ha|0)){while(1){ca=M+(Q(b,w)<<2)|0;k=K[ca+4>>2];z=da+(b<<6)|0;K[z>>2]=K[ca>>2];K[z+4>>2]=k;k=K[ca+28>>2];K[z+24>>2]=K[ca+24>>2];K[z+28>>2]=k;k=K[ca+20>>2];K[z+16>>2]=K[ca+16>>2];K[z+20>>2]=k;k=K[ca+12>>2];K[z+8>>2]=K[ca+8>>2];K[z+12>>2]=k;k=b|1;ca=da+(k<<6)|0;z=M+(Q(k,w)<<2)|0;k=K[z+28>>2];K[ca+24>>2]=K[z+24>>2];K[ca+28>>2]=k;k=K[z+20>>2];K[ca+16>>2]=K[z+16>>2];K[ca+20>>2]=k;k=K[z+12>>2];K[ca+8>>2]=K[z+8>>2];K[ca+12>>2]=k;k=K[z+4>>2];K[ca>>2]=K[z>>2];K[ca+4>>2]=k;b=b+2|0;j=j+2|0;if((x|0)!=(j|0)){continue}break}}if(!y){break Ma}k=da+(b<<6)|0;j=M+(Q(b,w)<<2)|0;b=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=b;b=K[j+28>>2];K[k+24>>2]=K[j+24>>2];K[k+28>>2]=b;b=K[j+20>>2];K[k+16>>2]=K[j+16>>2];K[k+20>>2]=b;b=K[j+12>>2];K[k+8>>2]=K[j+8>>2];K[k+12>>2]=b}Za(U);Na:{if(!m){break Na}b=0;j=0;if(ha){while(1){z=F+(b<<5)|0;k=K[z+4>>2];M=(Q(b,w)<<2)+g|0;K[M>>2]=K[z>>2];K[M+4>>2]=k;k=K[z+28>>2];K[M+24>>2]=K[z+24>>2];K[M+28>>2]=k;k=K[z+20>>2];K[M+16>>2]=K[z+16>>2];K[M+20>>2]=k;k=K[z+12>>2];K[M+8>>2]=K[z+8>>2];K[M+12>>2]=k;k=b|1;z=(Q(k,w)<<2)+g|0;M=F+(k<<5)|0;k=K[M+28>>2];K[z+24>>2]=K[M+24>>2];K[z+28>>2]=k;k=K[M+20>>2];K[z+16>>2]=K[M+16>>2];K[z+20>>2]=k;k=K[M+12>>2];K[z+8>>2]=K[M+8>>2];K[z+12>>2]=k;k=K[M+4>>2];K[z>>2]=K[M>>2];K[z+4>>2]=k;b=b+2|0;j=j+2|0;if(($|0)!=(j|0)){continue}break}}if(!H){break Na}k=(Q(b,w)<<2)+g|0;j=F+(b<<5)|0;b=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=b;b=K[j+28>>2];K[k+24>>2]=K[j+24>>2];K[k+28>>2]=b;b=K[j+20>>2];K[k+16>>2]=K[j+16>>2];K[k+20>>2]=b;b=K[j+12>>2];K[k+8>>2]=K[j+8>>2];K[k+12>>2]=b}g=g+32|0;p=p-8|0;if(p>>>0>7){continue}break}break Ja}b=i>>>3|0;o=b>>>0>>0?b:ba;k=o>>>0<=1?1:o;q=(i>>>0)/(o>>>0)&-8;j=i&-8;p=0;g=l;while(1){r=Ja(48);if(!r){break Fa}b=Ma(qa);K[r>>2]=b;if(!b){Xa(ia);Ga(r);j=0;break Ea}K[r+40>>2]=g;K[r+36>>2]=w;K[r+32>>2]=m;K[r+28>>2]=ma;K[r+24>>2]=0;K[r+20>>2]=P;K[r+16>>2]=0;K[r+12>>2]=V;K[r+8>>2]=P;K[r+4>>2]=ma;b=j-Q(p,q)|0;p=p+1|0;b=(o|0)==(p|0)?b:q;K[r+44>>2]=b;lb(ia,13,r);g=(b<<2)+g|0;if((k|0)!=(p|0)){continue}break}Xa(ia)}r=i&7;Oa:{if(!r){break Oa}o=V<<5;x=K[U>>2];Pa:{if(!P){break Pa}p=o+x|0;y=r<<2;b=0;if((P|0)!=1){q=P&-2;j=0;while(1){k=!y;if(!k){E(p+(b<<6)|0,(Q(b,w)<<2)+g|0,y)}if(!k){k=b|1;E(p+(k<<6)|0,(Q(k,w)<<2)+g|0,y)}b=b+2|0;j=j+2|0;if((q|0)!=(j|0)){continue}break}}if(!(P&1)|!y){break Pa}E(p+(b<<6)|0,(Q(b,w)<<2)+g|0,y)}Qa:{if((m|0)==(P|0)){break Qa}p=(x-o|0)+32|0;o=(Q(w,P)<<2)+g|0;y=r<<2;b=0;if((P|0)!=(va+(pa^-1)|0)){q=ma&-2;j=0;while(1){k=!y;if(!k){E(p+(b<<6)|0,o+(Q(b,w)<<2)|0,y)}if(!k){k=b|1;E(p+(k<<6)|0,o+(Q(k,w)<<2)|0,y)}b=b+2|0;j=j+2|0;if((q|0)!=(j|0)){continue}break}}if(!(ma&1)|!y){break Qa}E(p+(b<<6)|0,o+(Q(b,w)<<2)|0,y)}Za(U);if(!m){break Oa}o=r<<2;b=0;if((va|0)!=(pa+1|0)){q=m&-2;j=0;while(1){k=!o;if(!k){E((Q(b,w)<<2)+g|0,x+(b<<5)|0,o)}if(!k){k=b|1;E((Q(k,w)<<2)+g|0,x+(k<<5)|0,o)}b=b+2|0;j=j+2|0;if((q|0)!=(j|0)){continue}break}}if(!(m&1)|!o){break Oa}E((Q(b,w)<<2)+g|0,x+(b<<5)|0,o)}h=h+152|0;s=s-1|0;if(s){continue}break}j=1;break Ea}j=1;l=K[A+28>>2];za=l+Q(i,152)|0;pa=za-152|0;if(K[pa>>2]==K[za-144>>2]){break Da}va=za-148|0;if(K[va>>2]==K[za-140>>2]){break Da}p=K[l+4>>2];o=K[l+12>>2];s=K[l>>2];q=K[l+8>>2];ka=K[A+68>>2];_=K[A+64>>2];$=K[A+60>>2];H=K[A+56>>2];sa=oc(A,i);if(!sa){j=0;break Da}if((i|0)==1){i=K[za-16>>2];l=K[pa>>2];g=K[va>>2];b=K[za-8>>2];Ua(sa,i-l|0,K[za-12>>2]-g|0,b-l|0,K[za-4>>2]-g|0,K[A+52>>2],1,b-i|0);_a(sa);break Da}b=i-1|0;k=b&1;Ra:{if((i|0)==2){j=0;b=l;break Ra}m=b&-2;j=0;b=l;while(1){h=K[b+160>>2]-K[b+152>>2]|0;j=h>>>0>>0?j:h;h=K[b+164>>2]-K[b+156>>2]|0;j=h>>>0>>0?j:h;h=K[b+312>>2]-K[b+304>>2]|0;j=h>>>0>>0?j:h;h=K[b+316>>2]-K[b+308>>2]|0;j=h>>>0>>0?j:h;b=b+304|0;g=g+2|0;if((m|0)!=(g|0)){continue}break}}if(k){g=K[b+160>>2]-K[b+152>>2]|0;g=g>>>0>>0?j:g;b=K[b+164>>2]-K[b+156>>2]|0;j=b>>>0>>0?g:b}Sa:{if(j>>>0>=134217728){break Sa}Ba=Ma(j<<5);K[U+32>>2]=Ba;if(!Ba){break Sa}K[U>>2]=Ba;Ta:{if(i){m=o-p|0;b=q-s|0;xa=Ba+32|0;y=i;F=K[A+20>>2];w=1;ma=0;while(1){K[U+8>>2]=m;K[U+40>>2]=b;h=K[l+164>>2];i=K[l+160>>2];j=K[l+156>>2];g=K[l+152>>2];qa=(g|0)%2|0;K[U+44>>2]=qa;V=(j|0)%2|0;K[U+12>>2]=V;x=i-g|0;T=x-b|0;K[U+36>>2]=T;aa=h-j|0;ba=aa-m|0;K[U+4>>2]=ba;s=H;g=s;h=$;i=h;j=_;fa=j;p=ka;r=p;Ua:{if(!ma&(w|0)==(F|0)){break Ua}G=F-w|0;i=0;g=0;if(s){h=G&31;if((G&63)>>>0>=32){o=-1<>>32-h}g=s+(g^-1)|0;h=o^-1;h=g>>>0>>0?h+1|0:h;j=G&31;if((G&63)>>>0>=32){g=h>>>j|0}else{g=((1<>>j}}if($){h=G&31;if((G&63)>>>0>=32){o=-1<>>32-h}i=$+(i^-1)|0;h=o^-1;h=i>>>0<$>>>0?h+1|0:h;j=G&31;if((G&63)>>>0>=32){i=h>>>j|0}else{i=((1<>>j}}p=0;j=0;if(_){j=G&31;if((G&63)>>>0>=32){o=-1<>>32-j}h=_+(h^-1)|0;j=o^-1;j=h>>>0<_>>>0?j+1|0:j;k=G&31;if((G&63)>>>0>=32){j=j>>>k|0}else{j=((1<>>k}}if(ka){k=G&31;if((G&63)>>>0>=32){o=-1<>>32-k}h=ka+(h^-1)|0;k=o^-1;k=h>>>0>>0?k+1|0:k;q=G&31;if((G&63)>>>0>=32){p=k>>>q|0}else{p=((1<>>q}}fa=0;s=0;ea=1<>>0>>0){k=G&31;if((G&63)>>>0>=32){o=-1<>>32-k}q=h^-1;h=q+(H-ea|0)|0;k=o^-1;k=h>>>0>>0?k+1|0:k;q=G&31;if((G&63)>>>0>=32){s=k>>>q|0}else{s=((1<>>q}}if(_>>>0>ea>>>0){k=G&31;if((G&63)>>>0>=32){o=-1<>>32-k}q=h^-1;h=q+(_-ea|0)|0;k=o^-1;k=h>>>0>>0?k+1|0:k;q=G&31;if((G&63)>>>0>=32){fa=k>>>q|0}else{fa=((1<>>q}}r=0;h=0;if($>>>0>ea>>>0){k=G&31;if((G&63)>>>0>=32){o=-1<>>32-k}q=h^-1;h=q+($-ea|0)|0;k=o^-1;k=h>>>0>>0?k+1|0:k;q=G&31;if((G&63)>>>0>=32){h=k>>>q|0}else{h=((1<>>q}}if(ea>>>0>=ka>>>0){break Ua}q=G&31;if((G&63)>>>0>=32){o=-1<>>32-q}r=k^-1;k=r+(ka-ea|0)|0;q=o^-1;q=k>>>0>>0?q+1|0:q;o=G&31;if((G&63)>>>0>=32){r=q>>>o|0}else{r=((1<>>o}}o=K[l+180>>2];k=fa-o|0;q=k>>>0<=fa>>>0?k:0;k=q+4|0;k=k>>>0>>0?-1:k;M=k>>>0>>0?k:T;q=K[l+216>>2];k=j-q|0;k=j>>>0>=k>>>0?k:0;j=k+4|0;j=j>>>0>>0?-1:j;z=b>>>0>j>>>0?j:b;k=(qa?M:z)<<1;j=(qa?z:M)<<1|1;ha=j>>>0>>0?k:j;ga=ha>>>0>>0;j=s-o|0;k=j>>>0<=s>>>0?j:0;j=k-4|0;da=j>>>0<=k>>>0?j:0;j=g-q|0;j=g>>>0>=j>>>0?j:0;g=j-4|0;ca=g>>>0<=j>>>0?g:0;G=(qa?da:ca)<<1;ea=(qa?ca:da)<<1|1;T=G>>>0>>0;q=K[l+184>>2];g=i-q|0;i=g>>>0<=i>>>0?g:0;g=i-4|0;P=g>>>0<=i>>>0?g:0;j=P;o=K[l+220>>2];g=h-o|0;i=g>>>0<=h>>>0?g:0;g=i-4|0;k=g>>>0<=i>>>0?g:0;s=k;g=p-q|0;i=g>>>0<=p>>>0?g:0;g=i+4|0;g=g>>>0>>0?-1:g;h=g>>>0>>0?g:m;q=h;g=r-o|0;i=g>>>0<=r>>>0?g:0;g=i+4|0;g=g>>>0>>0?-1:g;g=g>>>0>>0?g:ba;r=g;if(V){s=j;q=g;r=h;j=k}ia=ga?ha:x;fa=T?G:ea;K[U+60>>2]=M;K[U+56>>2]=da;K[U+52>>2]=z;K[U+48>>2]=ca;Va:{if(aa>>>0<8){b=7;i=0;break Va}i=qa<<5;qa=(xa-i|0)+(da<<6)|0;ba=(i+Ba|0)+(ca<<6)|0;ha=b+M|0;ga=b+da|0;G=g+m|0;ea=k+m|0;T=Ba+(fa<<5)|0;i=0;while(1){b=i|7;Wa:{if(!(h>>>0>i>>>0&b>>>0>=P>>>0|i>>>0>>0&b>>>0>=ea>>>0)){i=i+8|0;break Wa}b=aa-i|0;p=b>>>0>=8?8:b;b=0;while(1){da=b+i|0;M=da+1|0;o=b<<2;Ua(sa,ca,da,z,M,o+ba|0,16,0);Ua(sa,ga,da,ha,M,o+qa|0,16,0);b=b+1|0;if((p|0)!=(b|0)){continue}break}Za(U+32|0);b=i;i=i+8|0;if(!db(sa,fa,b,ia,i,T,8,1)){break Ta}}b=i|7;if(aa>>>0>b>>>0){continue}break}}if(!(!(h>>>0>i>>>0&b>>>0>=P>>>0)&(g+m>>>0<=i>>>0|k+m>>>0>b>>>0)|i>>>0>=aa>>>0)){ha=U+32|0;ga=0;T=aa-i|0;if(T){while(1){G=i+ga|0;ea=G+1|0;b=K[ha+16>>2];p=ga<<2;Ua(sa,b,G,K[ha+20>>2],ea,p+((K[ha>>2]+(K[ha+12>>2]<<5)|0)+(b<<6)|0)|0,16,0);o=K[ha+24>>2];b=K[ha+8>>2];Ua(sa,o+b|0,G,b+K[ha+28>>2]|0,ea,(p+((K[ha>>2]-(K[ha+12>>2]<<5)|0)+(o<<6)|0)|0)+32|0,16,0);ga=ga+1|0;if((T|0)!=(ga|0)){continue}break}}Za(ha);if(!db(sa,fa,i,ia,aa,Ba+(fa<<5)|0,8,1)){break Ta}}K[U+28>>2]=g;K[U+24>>2]=k;K[U+20>>2]=h;K[U+16>>2]=P;if(fa>>>0>>0){i=q<<1;b=r<<1|1;b=b>>>0>>0?i:b;r=b>>>0>>0?b:aa;b=V<<5;p=(xa-b|0)+(k<<6)|0;o=(b+Ba|0)+(P<<6)|0;q=g+m|0;m=k+m|0;g=j<<1;b=s<<1|1;i=b>>>0>g>>>0?g:b;g=Ba+(i<<5)|0;while(1){b=ia-fa|0;b=(b>>>0>=8?8:b)+fa|0;Ua(sa,fa,P,b,h,o,1,16);Ua(sa,fa,m,b,q,p,1,16);Za(U);if(!db(sa,fa,i,b,r,g,1,8)){break Ta}fa=fa+8|0;if(ia>>>0>fa>>>0){continue}break}}l=l+152|0;b=x;m=aa;w=w+1|0;ma=w?ma:ma+1|0;if(ma|(w|0)!=(y|0)){continue}break}}j=1;i=K[za-16>>2];l=K[pa>>2];g=K[va>>2];b=K[za-8>>2];Ua(sa,i-l|0,K[za-12>>2]-g|0,b-l|0,K[za-4>>2]-g|0,K[A+52>>2],1,b-i|0);_a(sa);Ga(Ba);break Da}_a(sa);Ga(Ba);j=0;break Da}_a(sa);j=0;break Da}Xa(ia);j=0}Ga(K[U+32>>2])}ra=U- -64|0;if(j){break V}break b}t=t+1080|0;D=D+52|0;A=A+76|0;n=n+1|0;if(n>>>0>2]){continue}break}v=K[K[C+20>>2]>>2];t=K[C+32>>2]}i=K[t+16>>2];Xa:{if(K[C+68>>2]|!i){break Xa}D=K[v+20>>2];j=K[D+28>>2];Ya:{Za:{h=K[C+64>>2];if(h){n=K[v+16>>2];if(n>>>0<3){break Ya}l=K[D+24>>2];if(!((l|0)==K[D+100>>2]&(l|0)==K[D+176>>2])){Fa(f,1,10052,0);break b}g=K[K[C+24>>2]+24>>2];b=K[g+36>>2];_a:{if((b|0)!=K[g+88>>2]|(b|0)!=K[g+140>>2]){break _a}g=Q(l,152);b=g+j|0;b=Q(K[b-140>>2]-K[b-148>>2]|0,K[b-144>>2]-K[b-152>>2]|0);l=g+K[D+104>>2]|0;if((b|0)!=(Q(K[l-140>>2]-K[l-148>>2]|0,K[l-144>>2]-K[l-152>>2]|0)|0)){break _a}g=g+K[D+180>>2]|0;if((Q(K[g-140>>2]-K[g-148>>2]|0,K[g-144>>2]-K[g-152>>2]|0)|0)==(b|0)){break Za}}Fa(f,1,10052,0);break b}n=K[v+16>>2];if(n>>>0<3){break Ya}b=K[K[C+24>>2]+24>>2];g=K[b+36>>2];$a:{if((g|0)!=K[b+88>>2]){break $a}l=K[b+140>>2];if((l|0)!=(g|0)){break $a}g=Q(g,152);b=j+g|0;b=Q(K[b+148>>2]-K[b+140>>2]|0,K[b+144>>2]-K[b+136>>2]|0);g=g+K[D+104>>2]|0;if((b|0)!=(Q(K[g+148>>2]-K[g+140>>2]|0,K[g+144>>2]-K[g+136>>2]|0)|0)){break $a}g=K[D+180>>2]+Q(l,152)|0;if((Q(K[g+148>>2]-K[g+140>>2]|0,K[g+144>>2]-K[g+136>>2]|0)|0)==(b|0)){break Za}}Fa(f,1,10052,0);break b}if((i|0)==2){if(!K[t+5608>>2]){break Xa}r=Ja(n<<2);if(!r){break b}y=K[v+16>>2];ab:{if(!y){break ab}bb:{cb:{if(K[C+64>>2]){i=y&3;g=0;if(y>>>0>=4){break cb}A=0;break bb}i=y&3;g=0;db:{if(y>>>0<4){A=0;break db}l=y&-4;A=0;h=0;while(1){j=r+(A<<2)|0;K[j>>2]=K[D+52>>2];K[j+4>>2]=K[D+128>>2];K[j+8>>2]=K[D+204>>2];K[j+12>>2]=K[D+280>>2];A=A+4|0;D=D+304|0;h=h+4|0;if((l|0)!=(h|0)){continue}break}}if(!i){break ab}while(1){K[r+(A<<2)>>2]=K[D+52>>2];A=A+1|0;D=D+76|0;g=g+1|0;if((i|0)!=(g|0)){continue}break}break ab}l=y&-4;A=0;h=0;while(1){j=r+(A<<2)|0;K[j>>2]=K[D+36>>2];K[j+4>>2]=K[D+112>>2];K[j+8>>2]=K[D+188>>2];K[j+12>>2]=K[D+264>>2];A=A+4|0;D=D+304|0;h=h+4|0;if((l|0)!=(h|0)){continue}break}}if(!i){break ab}while(1){K[r+(A<<2)>>2]=K[D+36>>2];A=A+1|0;D=D+76|0;g=g+1|0;if((i|0)!=(g|0)){continue}break}}m=K[t+5608>>2];j=0;p=Ja(y<<3);g=0;eb:{if(!p){break eb}if(!(!b|!y)){n=p+(y<<2)|0;q=y&-4;t=y&3;k=y-1|0;while(1){v=0;l=0;if(k>>>0>=3){while(1){i=v<<2;O[i+p>>2]=O[K[i+r>>2]>>2];g=i|4;O[g+p>>2]=O[K[g+r>>2]>>2];g=i|8;O[g+p>>2]=O[K[g+r>>2]>>2];g=i|12;O[g+p>>2]=O[K[g+r>>2]>>2];v=v+4|0;l=l+4|0;if((q|0)!=(l|0)){continue}break}}g=0;if(t){while(1){l=v<<2;O[l+p>>2]=O[K[l+r>>2]>>2];v=v+1|0;g=g+1|0;if((t|0)!=(g|0)){continue}break}}h=0;v=m;while(1){l=h<<2;o=l+n|0;K[o>>2]=0;la=R(0);g=0;s=0;if(k>>>0>2){while(1){i=p+(g<<2)|0;la=R(R(O[v>>2]*O[i>>2])+la);O[o>>2]=la;la=R(R(O[v+4>>2]*O[i+4>>2])+la);O[o>>2]=la;la=R(R(O[v+8>>2]*O[i+8>>2])+la);O[o>>2]=la;la=R(R(O[v+12>>2]*O[i+12>>2])+la);O[o>>2]=la;g=g+4|0;v=v+16|0;s=s+4|0;if((q|0)!=(s|0)){continue}break}}i=0;if(t){while(1){la=R(R(O[v>>2]*O[p+(g<<2)>>2])+la);O[o>>2]=la;g=g+1|0;v=v+4|0;i=i+1|0;if((t|0)!=(i|0)){continue}break}}g=l+r|0;l=K[g>>2];K[g>>2]=l+4;O[l>>2]=la;h=h+1|0;if((y|0)!=(h|0)){continue}break}j=j+1|0;if((j|0)!=(b|0)){continue}break}}Ga(p);g=1}b=g;Ga(r);if(b){break Xa}break b}if(K[K[t+5584>>2]+20>>2]==1){if(h){sc(K[D+36>>2],K[D+112>>2],K[D+188>>2],b);break Xa}sc(K[D+52>>2],K[D+128>>2],K[D+204>>2],b);break Xa}if(h){rc(K[D+36>>2],K[D+112>>2],K[D+188>>2],b);break Xa}rc(K[D+52>>2],K[D+128>>2],K[D+204>>2],b);break Xa}K[Ea>>2]=n;Fa(f,1,10113,Ea)}r=K[K[C+20>>2]>>2];if(!K[r+16>>2]){Z=1;break b}p=K[C+68>>2];i=K[r+20>>2];b=K[K[C+32>>2]+5584>>2];m=K[K[C+24>>2]+24>>2];l=0;while(1){fb:{if(K[p+(l<<2)>>2]?0:p){break fb}g=K[i+28>>2];n=g+Q(K[m+36>>2],152)|0;gb:{if(!K[C+64>>2]){h=K[n+148>>2]-K[n+140>>2]|0;v=K[n+144>>2]-K[n+136>>2]|0;j=0;n=52;break gb}g=g+Q(K[i+24>>2],152)|0;v=K[n+8>>2]-K[n>>2]|0;j=K[g-144>>2]-(v+K[g-152>>2]|0)|0;h=K[n+12>>2]-K[n+4>>2]|0;n=36}g=K[m+24>>2];hb:{if(K[m+32>>2]){g=1<>2];if(K[b+20>>2]==1){s=v&-2;q=v&1;D=0;g=j<<2;while(1){n=0;if((v|0)!=1){while(1){j=K[b+1076>>2]+K[Z>>2]|0;K[Z>>2]=(j|0)<(k|0)?k:(j|0)<(A|0)?j:A;j=K[b+1076>>2]+K[Z+4>>2]|0;K[Z+4>>2]=(j|0)<(k|0)?k:(j|0)<(A|0)?j:A;Z=Z+8|0;n=n+2|0;if((s|0)!=(n|0)){continue}break}}if(q){j=K[b+1076>>2]+K[Z>>2]|0;K[Z>>2]=(j|0)<(k|0)?k:(j|0)<(A|0)?j:A;Z=Z+4|0}Z=Z+g|0;D=D+1|0;if((D|0)!=(h|0)){continue}break}break fb}o=k>>31;g=0;while(1){n=0;while(1){la=O[Z>>2];q=A;ib:{if(la>R(2147483648)){break ib}q=k;if(la>2];s=q;q=q>>31;tb=R(W(la));Lb=R(la-tb);if(LbR(.5)){break jb}la=R(tb*R(.5));wb=R(la-R(W(la)))==R(0)?tb:wb}la=wb}if(R(S(la))>31)|0;ea=q+1|0;x=q;q=s+t|0;s=t>>>0>q>>>0?ea:x;q=k>>>0>q>>>0&(o|0)>=(s|0)|(o|0)>(s|0)?k:q>>>0>>0&(s|0)<=0|(s|0)<0?q:A}K[Z>>2]=q;Z=Z+4|0;n=n+1|0;if((v|0)!=(n|0)){continue}break}Z=(j<<2)+Z|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}i=i+76|0;b=b+1080|0;m=m+52|0;Z=1;l=l+1|0;if(l>>>0>2]){continue}break}break b}Z=0;Fa(f,1,3335,0)}ra=Ea+16|0;if(!Z){nb(Ya);K[a+8>>2]=K[a+8>>2]|32768;Fa(f,1,11414,0);break a}kb:{if(!c){break kb}b=0;k=K[a+232>>2];g=fc(k,1);if(!((g|0)==-1|d>>>0>>0)){lb:{b=1;d=K[k+24>>2];if(!K[d+16>>2]){break lb}j=K[d+24>>2];m=K[K[K[k+20>>2]>>2]+20>>2];while(1){b=K[j+24>>2];l=b&7;g=b>>>3|0;b=K[m+28>>2];i=b+Q(K[j+36>>2],152)|0;mb:{if(K[k+64>>2]){b=b+Q(K[m+24>>2],152)|0;d=K[i+8>>2]-K[i>>2]|0;n=K[b-144>>2]-(d+K[b-152>>2]|0)|0;s=K[i+12>>2]-K[i+4>>2]|0;b=36;break mb}s=K[i+148>>2]-K[i+140>>2]|0;d=K[i+144>>2]-K[i+136>>2]|0;n=0;b=52}b=K[b+m>>2];nb:{ob:{pb:{qb:{g=g+((l|0)!=0)|0;switch(((g|0)==3?4:g)-1|0){case 0:break pb;case 1:break ob;case 3:break qb;default:break nb}}if(!s){break nb}h=d<<2;if((s|0)!=1){l=s&-2;t=0;while(1){g=!h;if(!g){E(c,b,h)}d=n<<2;i=d+(b+h|0)|0;b=c+h|0;if(!g){E(b,i,h)}c=b+h|0;b=d+(h+i|0)|0;t=t+2|0;if((l|0)!=(t|0)){continue}break}}if(!(s&1)){break nb}if(h){E(c,b,h)}c=c+h|0;break nb}g=!s|!d;if(K[j+32>>2]){if(g){break nb}l=d&-8;i=d&7;t=0;g=d-1>>>0<7;while(1){d=0;if(!g){while(1){I[c|0]=K[b>>2];I[c+1|0]=K[b+4>>2];I[c+2|0]=K[b+8>>2];I[c+3|0]=K[b+12>>2];I[c+4|0]=K[b+16>>2];I[c+5|0]=K[b+20>>2];I[c+6|0]=K[b+24>>2];I[c+7|0]=K[b+28>>2];c=c+8|0;b=b+32|0;d=d+8|0;if((l|0)!=(d|0)){continue}break}}d=0;if(i){while(1){I[c|0]=K[b>>2];c=c+1|0;b=b+4|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}}b=(n<<2)+b|0;t=t+1|0;if((s|0)!=(t|0)){continue}break}break nb}if(g){break nb}i=d&-8;h=d&7;t=0;l=d-1>>>0<7;g=n<<2;while(1){d=0;if(!l){while(1){I[c|0]=K[b>>2];I[c+1|0]=K[b+4>>2];I[c+2|0]=K[b+8>>2];I[c+3|0]=K[b+12>>2];I[c+4|0]=K[b+16>>2];I[c+5|0]=K[b+20>>2];I[c+6|0]=K[b+24>>2];I[c+7|0]=K[b+28>>2];c=c+8|0;b=b+32|0;d=d+8|0;if((i|0)!=(d|0)){continue}break}}d=0;if(h){while(1){I[c|0]=K[b>>2];c=c+1|0;b=b+4|0;d=d+1|0;if((h|0)!=(d|0)){continue}break}}b=b+g|0;t=t+1|0;if((s|0)!=(t|0)){continue}break}break nb}g=!s|!d;if(K[j+32>>2]){if(g){break nb}l=d&-8;i=d&7;t=0;g=d-1>>>0<7;while(1){d=0;if(!g){while(1){J[c>>1]=K[b>>2];J[c+2>>1]=K[b+4>>2];J[c+4>>1]=K[b+8>>2];J[c+6>>1]=K[b+12>>2];J[c+8>>1]=K[b+16>>2];J[c+10>>1]=K[b+20>>2];J[c+12>>1]=K[b+24>>2];J[c+14>>1]=K[b+28>>2];c=c+16|0;b=b+32|0;d=d+8|0;if((l|0)!=(d|0)){continue}break}}d=0;if(i){while(1){J[c>>1]=K[b>>2];c=c+2|0;b=b+4|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}}b=(n<<2)+b|0;t=t+1|0;if((s|0)!=(t|0)){continue}break}break nb}if(g){break nb}l=d&-8;i=d&7;t=0;g=d-1>>>0<7;while(1){d=0;if(!g){while(1){J[c>>1]=K[b>>2];J[c+2>>1]=K[b+4>>2];J[c+4>>1]=K[b+8>>2];J[c+6>>1]=K[b+12>>2];J[c+8>>1]=K[b+16>>2];J[c+10>>1]=K[b+20>>2];J[c+12>>1]=K[b+24>>2];J[c+14>>1]=K[b+28>>2];c=c+16|0;b=b+32|0;d=d+8|0;if((l|0)!=(d|0)){continue}break}}d=0;if(i){while(1){J[c>>1]=K[b>>2];c=c+2|0;b=b+4|0;d=d+1|0;if((i|0)!=(d|0)){continue}break}}b=(n<<2)+b|0;t=t+1|0;if((s|0)!=(t|0)){continue}break}}m=m+76|0;j=j+52|0;b=1;Mb=Mb+1|0;if(Mb>>>0>2]+16>>2]){continue}break}}}if(!b){break a}b=K[Ya+5596>>2];if(!b){break kb}Ga(b);K[Ya+5596>>2]=0;K[Ya+5600>>2]=0}I[a+92|0]=L[a+92|0]&254;K[a+8>>2]=K[a+8>>2]&-129;xb=1;c=Va(e);b=K[a+8>>2];if(!(c|ua)&(b|0)==64|(b|0)==256){break a}if((Na(e,$a+10|0,2,f)|0)!=2){Fa(f,K[a+208>>2]?1:2,2435,0);xb=!K[a+208>>2];break a}Ha($a+10|0,$a+12|0,2);b=K[$a+12>>2];if((b|0)==65424){break a}if((b|0)==65497){K[a+8>>2]=256;K[a+228>>2]=0;break a}if(!(Va(e)|ua)){K[a+8>>2]=64;Fa(f,2,8382,0);break a}xb=0;Fa(f,1,8269,0)}ra=$a+16|0;return xb|0}function ab(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;var l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,y=0,A=0,C=0,D=0,F=0,G=0,H=0,M=0,P=0,S=0,T=0,U=0,V=0,W=0,X=R(0),Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,sa=0,ta=0,wa=0,xa=R(0);s=ra-80|0;ra=s;K[s+40>>2]=65424;w=Q(K[a+132>>2],K[a+128>>2]);a:{b:{c:{l=K[a+8>>2];d:{if((l|0)!=8){j=0;if((l|0)!=256){break a}K[s+40>>2]=65497;break d}if(I[a+92|0]&1){break d}A=w&-2;D=w&1;P=s+77|0;S=s+76|0;T=s+72|0;n=65424;e:{f:{while(1){g:{h:{i:{j:{k:{l:{m:{n:{l=K[a+84>>2];if(!l){break n}p=l;l=K[a+80>>2];if(p>>>0<=l>>>0){break n}o=K[a+88>>2]+(l<<3)|0;n=K[o>>2];o=K[o+4>>2];K[a+80>>2]=l+1;if(!ib(j,n,o,k)){Fa(k,1,5403,0);j=0;break a}if((Na(j,K[a+16>>2],2,k)|0)!=2){Fa(k,1,2435,0);j=0;break a}Ha(K[a+16>>2],s+40|0,2);if(K[s+40>>2]==65424){break m}Fa(k,1,4036,0);j=0;break a}if((n|0)==65427){break l}}while(1){if(!(Va(j)|ua)){K[a+8>>2]=64;break l}if((Na(j,K[a+16>>2],2,k)|0)!=2){Fa(k,1,2435,0);j=0;break a}Ha(K[a+16>>2],s+36|0,2);if(N[s+36>>2]<=1){Fa(k,1,6011,0);j=0;break a}o:{if(K[s+40>>2]!=32896){break o}if(Va(j)|ua){break o}K[a+8>>2]=64;break l}r=K[a+8>>2];p:{if(!(r&16)){n=K[s+36>>2];break p}n=K[s+36>>2];l=K[a+24>>2];if(!l){break p}o=n+2|0;if(o>>>0>l>>>0){Fa(k,1,8333,0);j=0;break a}K[a+24>>2]=l-o}o=n-2|0;K[s+36>>2]=o;l=24864;t=K[s+40>>2];while(1){n=l;m=K[l>>2];if(m){l=l+12|0;if((m|0)!=(t|0)){continue}}break}if(!(r&K[n+4>>2])){Fa(k,1,5360,0);j=0;break a}q:{if(N[a+20>>2]>=o>>>0){l=K[a+16>>2];break q}l=Va(j);r=ua;if((r|0)<0){l=1}else{l=l>>>0>>0&(r|0)<=0}if(l){Fa(k,1,5760,0);j=0;break a}l=La(K[a+16>>2],K[s+36>>2]);if(!l){Ga(K[a+16>>2]);K[a+16>>2]=0;K[a+20>>2]=0;Fa(k,1,4936,0);j=0;break a}K[a+16>>2]=l;o=K[s+36>>2];K[a+20>>2]=o}l=Na(j,l,o,k);if((l|0)!=K[s+36>>2]){Fa(k,1,2435,0);j=0;break a}o=K[n+8>>2];if(!o){Fa(k,1,11688,0);j=0;break a}if(!(va[o|0](a,K[a+16>>2],l,k)|0)){K[s+32>>2]=K[s+40>>2];Fa(k,1,13922,s+32|0);j=0;break a}n=K[j+56>>2];t=K[s+36>>2];y=K[a+224>>2];o=K[y+40>>2];p=K[a+228>>2];v=Q(p,40);l=o+v|0;G=K[l+20>>2];r=G+1|0;q=K[l+28>>2];if(r>>>0>q>>>0){X=R(R(q>>>0)+R(100));if(X=R(0)){o=~~X>>>0}else{o=0}K[l+28>>2]=o;r=La(K[l+24>>2],Q(o,24));o=K[y+40>>2];l=v+o|0;if(!r){break k}K[l+24>>2]=r;G=K[l+20>>2];r=G+1|0}o=o+v|0;l=K[o+24>>2]+Q(G,24)|0;K[l+16>>2]=t+4;n=(n-t|0)-4|0;K[l+8>>2]=n;K[l+12>>2]=n>>31;J[l>>1]=m;K[o+20>>2]=r;r:{if((m|0)!=65424){break r}l=K[o+16>>2];s:{if(!l){break s}p=K[o+4>>2];o=K[o+12>>2];if(p>>>0<=o>>>0){break s}l=l+Q(o,24)|0;K[l>>2]=n;K[l+4>>2]=0}l=(K[j+56>>2]-K[s+36>>2]|0)-4|0;o=K[a+48>>2];n=K[a+52>>2];if((n|0)>0){p=1}else{p=l>>>0<=o>>>0&(n|0)>=0}if(p){break r}K[a+48>>2]=l;K[a+52>>2]=0}if(L[a+92|0]&4){if((vb(j,K[a+24>>2],k)|0)!=K[a+24>>2]|ua){Fa(k,1,2435,0);j=0;break a}K[s+40>>2]=65427;break l}if((Na(j,K[a+16>>2],2,k)|0)!=2){Fa(k,1,2435,0);j=0;break a}Ha(K[a+16>>2],s+40|0,2);if(K[s+40>>2]!=65427){continue}break}}if(!(!(Va(j)|ua)&K[a+8>>2]==64)){l=L[a+92|0];if(!(l&4)){l=Q(K[a+228>>2],5644);o=K[a+180>>2];t:{u:{if(K[a+56>>2]){m=Va(j);break u}m=K[a+24>>2];if(m>>>0<2){break t}}m=m-2|0;K[a+24>>2]=m}y=l+o|0;if(!m){break j}l=Va(j);o=ua;if((o|0)<0){l=1}else{l=l>>>0>>0&(o|0)<=0}if(l){if(K[a+208>>2]){Fa(k,1,5805,0);j=0;break a}Fa(k,2,5805,0)}l=K[a+24>>2];if(l>>>0>=4294967294){Fa(k,1,1443,0);j=0;break a}o=K[y+5596>>2];v:{if(o){n=K[y+5600>>2];if(n>>>0>-3-l>>>0){Fa(k,1,1174,0);j=0;break a}l=La(o,(l+n|0)+2|0);if(l){K[y+5596>>2]=l;break j}Ga(K[y+5596>>2]);K[y+5596>>2]=0;break v}l=Ja(l+2|0);K[y+5596>>2]=l;if(l){break j}}Fa(k,1,6139,0);j=0;break a}K[a+8>>2]=8;I[a+92|0]=l&250;break i}n=K[s+40>>2];break g}Ga(K[l+24>>2]);a=K[y+40>>2]+Q(p,40)|0;K[a+28>>2]=0;K[a+20>>2]=0;K[a+24>>2]=0;Fa(k,1,3826,0);j=0;break a}v=K[j+56>>2];n=v-2|0;t=K[j+60>>2];r=t-(v>>>0<2)|0;p=K[a+224>>2];H=K[p+40>>2];C=K[a+228>>2];q=Q(C,40);o=H+q|0;l=K[o+16>>2]+Q(K[o+12>>2],24)|0;K[l+8>>2]=n;K[l+12>>2]=r;r=l;l=t;u=K[a+24>>2];v=u+v|0;K[r+16>>2]=v;K[r+20>>2]=u>>>0>v>>>0?l+1|0:l;t=K[a+24>>2];G=K[o+20>>2];r=G+1|0;l=K[o+28>>2];w:{if(r>>>0<=l>>>0){l=K[o+24>>2];break w}X=R(R(l>>>0)+R(100));if(X=R(0)){l=~~X>>>0}else{l=0}K[o+28>>2]=l;l=La(K[o+24>>2],Q(l,24));H=K[p+40>>2];o=q+H|0;if(!l){break f}K[o+24>>2]=l;G=K[o+20>>2];r=G+1|0}l=Q(G,24)+l|0;K[l+16>>2]=t+2;K[l+8>>2]=n;K[l+12>>2]=n>>31;J[l>>1]=65427;K[(q+H|0)+20>>2]=r;x:{if(m){m=Na(j,K[y+5596>>2]+K[y+5600>>2]|0,K[a+24>>2],k);l=8;if((m|0)==K[a+24>>2]){break x}l=64;if((m|0)!=-1){break x}Fa(k,1,2435,0);j=0;break a}m=0;l=K[a+24>>2]?64:8}K[a+8>>2]=l;K[y+5600>>2]=K[y+5600>>2]+m;y:{if(I[a+92|0]&1){break y}l=K[a+44>>2];if(K[a+76>>2]|((l|0)<0|(l|0)!=K[a+228>>2])){break y}if(!Ib(j)){break y}o=K[a+228>>2];n=K[a+180>>2]+Q(o,5644)|0;l=K[n+5592>>2];o=K[K[a+224>>2]+40>>2]+Q(o,40)|0;if((l|0)!=K[o+4>>2]){break y}p=l;l=K[n+5588>>2]+1|0;if(p>>>0<=l>>>0){break y}z:{o=K[o+16>>2]+Q(l,24)|0;l=K[o>>2];o=K[o+4>>2];if((l|0)==K[j+56>>2]&(o|0)==K[j+60>>2]){break z}if(ib(j,l,o,k)){break z}Fa(k,1,5403,0);j=0;break a}if((Na(j,K[a+16>>2],2,k)|0)!=2){Fa(k,1,2435,0);j=0;break a}Ha(K[a+16>>2],s+40|0,2);if(K[s+40>>2]==65424){break h}Fa(k,1,4036,0);j=0;break a}l=L[a+92|0];if((l&9)!=1){break i}I[a+92|0]=l|8;r=K[a+228>>2];if(K[(K[a+180>>2]+Q(r,5644)|0)+5592>>2]==1){break i}if(!Ib(j)){break i}n=K[j+60>>2];t=n;o=K[j+56>>2];if((n&o)==-1){break i}A:{while(1){l=1;n=s+70|0;if((Na(j,n,2,k)|0)!=2){break A}Ha(n,s- -64|0,2);if(K[s+64>>2]!=65424){break A}m=2435;if((Na(j,n,2,k)|0)!=2){break c}Ha(n,s+60|0,2);if(K[s+60>>2]!=10){m=6011;break c}K[s+60>>2]=8;n=Na(j,s+70|0,8,k);if((n|0)!=K[s+60>>2]){break c}if((n|0)!=8){m=4010;break c}Ha(s+70|0,s+56|0,2);Ha(T,s+52|0,4);Ha(S,s+48|0,1);Ha(P,s+44|0,1);if((r|0)!=K[s+56>>2]){n=K[s+52>>2];if(n>>>0<14){break A}n=n-12|0;K[s+52>>2]=n;n=vb(j,n,k);if(!ua&K[s+52>>2]==(n|0)){continue}break A}break}l=K[s+48>>2]!=K[s+44>>2]}if(!Dc(j,o,t,k)){break b}if(l){break i}I[a+92|0]=L[a+92|0]&238|16;B:{if(!w){break B}o=K[a+180>>2];n=0;l=0;if((w|0)!=1){while(1){m=o+Q(n,5644)|0;r=K[m+5592>>2];if(r){K[m+5592>>2]=r+1}m=o+Q(n|1,5644)|0;r=K[m+5592>>2];if(r){K[m+5592>>2]=r+1}n=n+2|0;l=l+2|0;if((A|0)!=(l|0)){continue}break}}if(!D){break B}l=o+Q(n,5644)|0;o=K[l+5592>>2];if(!o){break B}K[l+5592>>2]=o+1}Fa(k,2,8998,0)}if(I[a+92|0]&1){break h}if((Na(j,K[a+16>>2],2,k)|0)!=2){if(!(!w|(w|0)!=(K[a+228>>2]+1|0))){j=K[a+180>>2];n=0;while(1){l=j+Q(n,5644)|0;if(!(K[l+5588>>2]|K[l+5592>>2])){break e}n=n+1|0;if((w|0)!=(n|0)){continue}break}}Fa(k,1,2435,0);j=0;break a}Ha(K[a+16>>2],s+40|0,2)}n=K[s+40>>2];if(I[a+92|0]&1){break g}if((n|0)!=65497){continue}}break}if(K[a+8>>2]==256|(n|0)!=65497){break d}K[a+8>>2]=256;K[a+228>>2]=0;break d}Ga(K[o+24>>2]);a=K[p+40>>2]+Q(C,40)|0;K[a+28>>2]=0;K[a+20>>2]=0;K[a+24>>2]=0;Fa(k,1,3826,0);j=0;break a}K[s+16>>2]=n;Fa(k,4,10967,s+16|0);K[a+228>>2]=n;K[s+40>>2]=65497;K[a+8>>2]=256}n=K[a+228>>2];j=K[a+180>>2];C:{D:{if(I[a+92|0]&1){break D}E:{F:{if(n>>>0>=w>>>0){break F}m=j+Q(n,5644)|0;while(1){if(K[m+5596>>2]){break F}n=n+1|0;K[a+228>>2]=n;m=m+5644|0;if((n|0)!=(w|0)){continue}break}break E}if((n|0)!=(w|0)){break D}}K[i>>2]=0;break C}G:{H:{l=j+Q(n,5644)|0;if(K[l+5172>>2]){a=6800}else{if(!(L[l+5640|0]&2)){break G}r=K[l+5160>>2];I:{if(!r){m=0;break I}w=K[l+5164>>2];j=0;m=0;n=0;if(r>>>0>=4){y=r&-4;o=0;while(1){t=w+(n<<3)|0;m=K[t+28>>2]+(K[t+20>>2]+(K[t+12>>2]+(K[t+4>>2]+m|0)|0)|0)|0;n=n+4|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}o=r&3;if(!o){break I}while(1){m=K[(w+(n<<3)|0)+4>>2]+m|0;n=n+1|0;j=j+1|0;if((o|0)!=(j|0)){continue}break}}j=Ja(m);K[l+5172>>2]=j;if(j){break H}a=3972}Fa(k,1,a,0);Fa(k,1,8022,0);j=0;break a}K[l+5180>>2]=m;m=K[l+5164>>2];j=K[l+5160>>2];if(j){o=0;n=0;while(1){r=n<<3;t=r+m|0;w=K[t>>2];if(w){j=K[t+4>>2];if(j){E(K[l+5172>>2]+o|0,w,j)}j=r+K[l+5164>>2]|0;t=K[j+4>>2];Ga(K[j>>2]);m=K[l+5164>>2];j=r+m|0;K[j>>2]=0;K[j+4>>2]=0;o=o+t|0;j=K[l+5160>>2]}n=n+1|0;if(n>>>0>>0){continue}break}}K[l+5160>>2]=0;Ga(m);K[l+5164>>2]=0;K[l+5168>>2]=K[l+5172>>2];K[l+5176>>2]=K[l+5180>>2]}l=K[a+232>>2];Y=K[l+28>>2];o=K[a+228>>2];G=K[(K[Y+76>>2]+Q(o,5644)|0)+5584>>2];j=K[l+24>>2];Z=K[j+24>>2];n=K[Y+24>>2];m=(o>>>0)/(n>>>0)|0;U=K[K[l+20>>2]>>2];l=o-Q(m,n)|0;n=K[Y+12>>2];l=K[Y+4>>2]+Q(l,n)|0;o=K[j>>2];o=l>>>0>o>>>0?l:o;K[U>>2]=o;n=l+n|0;l=l>>>0>n>>>0?-1:n;n=K[j+8>>2];l=l>>>0>>0?l:n;K[U+8>>2]=l;J:{K:{if(!((l|0)>(o|0)&(o|0)>=0)){Fa(k,1,6645,0);break K}n=K[U+20>>2];l=m;m=K[Y+16>>2];l=K[Y+8>>2]+Q(l,m)|0;o=K[j+4>>2];o=l>>>0>o>>>0?l:o;K[U+4>>2]=o;m=l+m|0;l=l>>>0>m>>>0?-1:m;j=K[j+12>>2];j=j>>>0>l>>>0?l:j;K[U+12>>2]=j;if(!((j|0)>(o|0)&(o|0)>=0)){Fa(k,1,6607,0);break K}L:{if(K[G+4>>2]){if(K[U+16>>2]){break L}j=1;break J}Fa(k,1,5321,0);break K}M:{N:{while(1){K[Z+36>>2]=0;j=K[Z>>2];m=j>>31;w=j-1|0;l=K[U>>2];r=l;o=w+l|0;v=m-!j|0;l=v+(l>>31)|0;ta=n,wa=Me(o,o>>>0>>0?l+1|0:l,j,m),K[ta>>2]=wa;o=K[Z+4>>2];t=o>>31;r=o-1|0;l=K[U+4>>2];p=l;y=r+l|0;q=t-!o|0;l=q+(l>>31)|0;ta=n,wa=Me(y,p>>>0>y>>>0?l+1|0:l,o,t),K[ta+4>>2]=wa;l=K[U+8>>2];y=l;w=l+w|0;l=(l>>31)+v|0;ta=n,wa=Me(w,w>>>0>>0?l+1|0:l,j,m),K[ta+8>>2]=wa;j=K[U+12>>2];K[n+16>>2]=ga;l=q+(j>>31)|0;j=j+r|0;l=j>>>0>>0?l+1|0:l;ta=n,wa=Me(j,l,o,t),K[ta+12>>2]=wa;j=K[G+4>>2];K[n+20>>2]=j;l=K[Y+80>>2];K[n+24>>2]=j>>>0>>0?1:j-l|0;Ga(K[n+52>>2]);K[n+68>>2]=0;K[n+60>>2]=0;K[n+64>>2]=0;K[n+52>>2]=0;K[n+56>>2]=0;j=Q(j,152);l=K[n+28>>2];O:{if(!l){l=Ja(j);K[n+28>>2]=l;if(!l){break K}K[n+32>>2]=j;if(!j){break O}B(l,0,j);break O}if(j>>>0<=N[n+32>>2]){break O}l=La(l,j);if(!l){Fa(k,1,3053,0);Ga(K[n+28>>2]);K[n+28>>2]=0;K[n+32>>2]=0;break K}K[n+28>>2]=l;o=K[n+32>>2];m=j-o|0;if(m){B(l+o|0,0,m)}K[n+32>>2]=j}j=K[n+20>>2];if(j){ja=G+944|0;ka=G+812|0;ea=G+28|0;o=K[n+28>>2];_=0;while(1){t=j-1|0;m=t&31;if((t&63)>>>0>=32){l=-1<>>32-m}w=r^-1;r=K[n>>2];m=w+r|0;y=l^-1;l=y+(r>>31)|0;l=m>>>0>>0?l+1|0:l;r=m;m=t&31;if((t&63)>>>0>=32){p=l>>m}else{p=((1<>>m}K[o>>2]=p;l=K[n+4>>2];r=l;m=l+w|0;l=(l>>31)+y|0;l=m>>>0>>0?l+1|0:l;r=m;m=t&31;if((t&63)>>>0>=32){q=l>>m}else{q=((1<>>m}K[o+4>>2]=q;l=K[n+8>>2];r=l;m=l+w|0;l=(l>>31)+y|0;l=m>>>0>>0?l+1|0:l;r=m;m=t&31;if((t&63)>>>0>=32){r=l>>m}else{r=((1<>>m}K[o+8>>2]=r;l=K[n+12>>2];v=l;m=l+w|0;l=(l>>31)+y|0;l=m>>>0>>0?l+1|0:l;v=m;m=t&31;if((t&63)>>>0>=32){v=l>>m}else{v=((1<>>m}K[o+12>>2]=v;A=r>>31;D=_<<2;P=K[D+ka>>2];m=P&31;if((P&63)>>>0>=32){l=1<>>32-m}H=u;m=H+r|0;l=l+A|0;A=m-1|0;m=(m>>>0>>0?l+1|0:l)-!m|0;l=P&31;if((P&63)>>>0>=32){l=m>>l}else{l=((1<>>l}A=l<>31;H=K[D+ja>>2];m=H&31;if((H&63)>>>0>=32){l=-1<>>32-m;m=-1<>>0>>0?l+1|0:l;D=m;m=H&31;if((H&63)>>>0>=32){l=l>>m}else{l=((1<>>m}l=l<>H:0;K[o+20>>2]=v;aa=p&-1<>P:0;K[o+16>>2]=m;Le(m,0,v);if(!(!m|!ua)){break N}ca=Q(m,v);if(ca>>>0>=107374183){break N}V=Q(ca,40);if(_){H=H-1|0;P=P-1|0;l=$>>31;m=$+1|0;$=((m?l:l+1|0)&1)<<31|m>>>1;l=aa>>31;m=aa+1|0;aa=((m?l:l+1|0)&1)<<31|m>>>1;l=3}else{l=1}K[o+24>>2]=l;m=o+28|0;v=j;r=j&31;if((j&63)>>>0>=32){l=1<>>32-r}ia=j;r=l;j=K[G+12>>2];S=j>>>0>>0?j:H;j=S&31;if((S&63)>>>0>=32){l=-1<>>32-j;j=-1<>2];T=j>>>0

>>0?j:P;j=T&31;if((T&63)>>>0>=32){l=-1<>>32-j;j=-1<>2];p=l;j=l+w|0;l=(l>>31)+y|0;l=j>>>0

>>0?l+1|0:l;p=j;j=t&31;if((t&63)>>>0>=32){M=l>>j}else{M=((1<>>j}l=K[n>>2];p=l;j=l+w|0;l=(l>>31)+y|0;l=j>>>0

>>0?l+1|0:l;p=j;j=t&31;if((t&63)>>>0>=32){ba=l>>j}else{ba=((1<>>j}j=0;p=w;A=p;q=y;D=q;l=t;break P}j=fa+1|0;p=j>>>1|0;q=t&31;if((t&63)>>>0>=32){l=p<>>32-q;p=p<>>0>A>>>0?l+1|0:l;q=K[n+4>>2];p=q+A|0;D=l;l=l+(q>>31)|0;l=p>>>0>>0?l+1|0:l;q=p;p=v&31;if((v&63)>>>0>=32){M=l>>p}else{M=((1<>>p}p=j&1;q=t&31;if((t&63)>>>0>=32){l=p<>>32-q;p=p<>2];C=u+p|0;q=p>>>0>>0?l+1|0:l;l=q+(u>>31)|0;l=u>>>0>C>>>0?l+1|0:l;u=C;C=v&31;if((v&63)>>>0>=32){ba=l>>C}else{ba=((1<>>C}l=v}C=l;u=K[n+8>>2];ha=u>>31;F=K[n+12>>2];K[m+4>>2]=M;K[m>>2]=ba;K[m+16>>2]=j;l=(F>>31)+D|0;A=A+F|0;l=A>>>0>>0?l+1|0:l;D=A;A=C&31;if((C&63)>>>0>=32){l=l>>A}else{l=((1<>>A}K[m+12>>2]=l;l=q+ha|0;p=p+u|0;l=p>>>0>>0?l+1|0:l;q=p;p=C&31;if((C&63)>>>0>=32){l=l>>p}else{l=((1<>>p}K[m+8>>2]=l;da=1;p=K[ea>>2];j=(K[Z+24>>2]+(!K[G+20>>2]|!j?0:(j|0)==3?2:1)|0)-p|0;Q:{if((j|0)>=1024){da=898846567431158e293;if(j>>>0<2047){j=j-1023|0;break Q}da=Infinity;j=(j>>>0>=3069?3069:j)-2046|0;break Q}if((j|0)>-1023){break Q}da=2004168360008973e-307;if(j>>>0>4294965304){j=j+969|0;break Q}da=0;j=(j>>>0<=4294964336?-2960:j)+1938|0}pa=+K[ea+4>>2]*.00048828125+1;x(0,0);x(1,j+1023<<20);ta=m,xa=R(pa*(da*+z())),O[ta+32>>2]=xa;K[m+28>>2]=(p+K[G+804>>2]|0)-1;j=K[m+20>>2];R:{S:{if(!(j|!ca)){j=Ja(V);K[m+20>>2]=j;if(!j){Fa(k,1,2817,0);break K}if(V){B(j,0,V)}K[m+24>>2]=V;break S}if(V>>>0>N[m+24>>2]){j=La(j,V);if(!j){Fa(k,1,2817,0);Ga(K[m+20>>2]);K[m+20>>2]=0;K[m+24>>2]=0;break K}K[m+20>>2]=j;l=K[m+24>>2];p=V-l|0;if(p){B(j+l|0,0,p)}K[m+24>>2]=V}if(!ca){break R}}j=K[m+20>>2];A=0;while(1){p=K[o+16>>2];l=(A>>>0)/(p>>>0)|0;p=A-Q(l,p)|0;q=(p<>2];D=(q|0)>(D|0)?q:D;K[j>>2]=D;q=(l<>2];C=(q|0)>(C|0)?q:C;K[j+4>>2]=C;p=(p+1<>2];p=(p|0)<(q|0)?p:q;K[j+8>>2]=p;l=(l+1<>2];q=(l|0)<(q|0)?l:q;K[j+12>>2]=q;l=(p>>31)+oa|0;u=p;p=p+na|0;l=u>>>0>p>>>0?l+1|0:l;D=D>>T;u=p;p=T&31;if((T&63)>>>0>=32){l=l>>p}else{l=((1<>>p}u=l-D<>T;K[j+16>>2]=u;l=(q>>31)+ma|0;p=q+la|0;l=p>>>0>>0?l+1|0:l;C=C>>S;q=p;p=S&31;if((S&63)>>>0>=32){l=l>>p}else{l=((1<>>p}l=l-C<>S;K[j+20>>2]=l;p=Q(l,u);Le(p,0,68);if(ua){Fa(k,1,2898,0);break K}l=Q(p,68);q=K[j+24>>2];T:{U:{if(!(q|!p)){q=Ja(l);K[j+24>>2]=q;if(!q){break K}if(!l){break U}B(q,0,l);break U}if(l>>>0<=N[j+28>>2]){break T}q=La(q,l);if(!q){Ga(K[j+24>>2]);K[j+24>>2]=0;K[j+28>>2]=0;Fa(k,1,2512,0);break K}K[j+24>>2]=q;u=K[j+28>>2];F=l-u|0;if(!F){break U}B(q+u|0,0,F)}K[j+28>>2]=l}l=K[j+20>>2];q=K[j+16>>2];u=K[j+32>>2];V:{if(!u){l=wc(q,l,k);break V}l=uc(u,q,l,k)}K[j+32>>2]=l;l=K[j+20>>2];q=K[j+16>>2];u=K[j+36>>2];W:{if(!u){l=wc(q,l,k);break W}l=uc(u,q,l,k)}K[j+36>>2]=l;if(p){ba=C+1|0;ha=D+1|0;q=0;while(1){W=K[j+16>>2];u=(q>>>0)/(W>>>0)|0;l=K[j+24>>2]+Q(q,68)|0;M=K[l>>2];X:{if(M){qa=K[l+56>>2];F=K[l+48>>2];sa=K[l+4>>2];Ga(K[l+60>>2]);K[l+48>>2]=0;K[l+52>>2]=0;K[l- -64>>2]=0;K[l+56>>2]=0;K[l+60>>2]=0;K[l+40>>2]=0;K[l+44>>2]=0;K[l+32>>2]=0;K[l+36>>2]=0;K[l+24>>2]=0;K[l+28>>2]=0;K[l+16>>2]=0;K[l+20>>2]=0;K[l+8>>2]=0;K[l+12>>2]=0;K[l>>2]=M;K[l+48>>2]=F;Y:{if(!F){break Y}F=Q(F,24);if(!F){break Y}B(M,0,F)}K[l+56>>2]=qa;K[l+4>>2]=sa;break X}F=Ia(10,24);K[l>>2]=F;if(!F){break K}K[l+48>>2]=10}F=q-Q(u,W)|0;M=F+D<>2];K[l+8>>2]=(M|0)>(W|0)?M:W;M=u+C<>2];K[l+12>>2]=(M|0)>(W|0)?M:W;F=F+ha<>2];K[l+16>>2]=(F|0)<(M|0)?F:M;M=l;l=u+ba<>2];K[M+20>>2]=(l|0)<(u|0)?l:u;q=q+1|0;if((p|0)!=(q|0)){continue}break}}j=j+40|0;A=A+1|0;if((A|0)!=(ca|0)){continue}break}}ea=ea+8|0;m=m+36|0;fa=fa+1|0;if(fa>>>0>2]){continue}break}o=o+152|0;j=t;_=_+1|0;if(_>>>0>2]){continue}break}}Z=Z+52|0;n=n+76|0;G=G+1080|0;ga=ga+1|0;if(ga>>>0>2]){continue}break}j=1;break J}Fa(k,1,2945,0);break K}Fa(k,1,2336,0)}j=0}if(!j){Fa(k,1,3631,0);j=0;break a}j=K[a+228>>2];K[s+4>>2]=Q(K[a+128>>2],K[a+132>>2]);K[s>>2]=j+1;Fa(k,4,11788,s);K[b>>2]=K[a+228>>2];K[i>>2]=1;if(c){b=fc(K[a+232>>2],0);K[c>>2]=b;j=0;if((b|0)==-1){break a}}b=K[K[K[a+232>>2]+20>>2]>>2];K[d>>2]=K[b>>2];K[e>>2]=K[b+4>>2];K[f>>2]=K[b+8>>2];K[g>>2]=K[b+12>>2];K[h>>2]=K[b+16>>2];K[a+8>>2]=K[a+8>>2]|128}j=1;break a}Fa(k,1,m,0)}Fa(k,1,3665,0);j=0}ra=s+80|0;return j|0}function jc(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,O=0,P=0,R=0,S=0,T=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{switch(K[a+84>>2]){case 0:k:{c=K[a+52>>2];b=K[a+196>>2];if(c>>>0>>0){q=K[a+64>>2];if(q>>>0>>0){break k}}Fa(K[a+236>>2],1,8454,0);break b}if(!K[a+44>>2]){k=K[a+36>>2];b=0;break i}K[a+44>>2]=0;i=K[a+68>>2];b=1;break i;case 1:l:{c=K[a+52>>2];b=K[a+196>>2];if(c>>>0>>0){q=K[a+64>>2];if(q>>>0>>0){break l}}Fa(K[a+236>>2],1,8499,0);break b}if(!K[a+44>>2]){e=K[a+36>>2];b=0;break e}K[a+44>>2]=0;i=K[a+48>>2];b=1;break e;case 2:m:{A=K[a+52>>2];x=K[a+196>>2];if(A>>>0>>0){r=K[a+64>>2];if(r>>>0>>0){break m}}Fa(K[a+236>>2],1,8634,0);break b}if(!K[a+44>>2]){y=K[a+40>>2];break f}K[a+228>>2]=0;K[a+232>>2]=0;K[a+44>>2]=0;j=K[a+200>>2];while(1){I=j+(u<<4)|0;l=K[I+8>>2];if(l){q=K[I+12>>2];b=0;while(1){g=l+(b^-1)|0;d=q+(b<<4)|0;s=g+K[d>>2]|0;n:{if(s>>>0>31){break n}c=K[I>>2];if(c>>>0>-1>>>s>>>0){break n}c=c<>>0>k>>>0?k:c:c;K[a+228>>2]=k}g=g+K[d+4>>2]|0;o:{if(g>>>0>31){break o}c=K[I+4>>2];if(c>>>0>-1>>>g>>>0){break o}c=c<>>0>i>>>0?i:c:c;K[a+232>>2]=i}b=b+1|0;if((l|0)!=(b|0)){continue}break}}u=u+1|0;if((x|0)!=(u|0)){continue}break};if(!k|!i){break d}if(!L[a|0]){K[a+108>>2]=K[a+208>>2];K[a+100>>2]=K[a+204>>2];K[a+112>>2]=K[a+216>>2];K[a+104>>2]=K[a+212>>2]}o=K[a+48>>2];b=1;break f;case 3:p:{A=K[a+52>>2];l=K[a+196>>2];if(A>>>0>>0){O=K[a+64>>2];if(O>>>0>>0){break p}}Fa(K[a+236>>2],1,8589,0);break b}if(!K[a+44>>2]){B=K[a+200>>2];e=K[a+28>>2];y=B+(e<<4)|0;E=K[a+40>>2];break g}K[a+228>>2]=0;K[a+232>>2]=0;K[a+44>>2]=0;B=K[a+200>>2];while(1){x=(p<<4)+B|0;s=K[x+8>>2];if(s){q=K[x+12>>2];b=0;while(1){g=s+(b^-1)|0;d=q+(b<<4)|0;j=g+K[d>>2]|0;q:{if(j>>>0>31){break q}c=K[x>>2];if(c>>>0>-1>>>j>>>0){break q}c=c<>>0>k>>>0?k:c:c;K[a+228>>2]=k}g=g+K[d+4>>2]|0;r:{if(g>>>0>31){break r}c=K[x+4>>2];if(c>>>0>-1>>>g>>>0){break r}c=c<>>0>i>>>0?i:c:c;K[a+232>>2]=i}b=b+1|0;if((s|0)!=(b|0)){continue}break}}p=p+1|0;if((l|0)!=(p|0)){continue}break};if(!k|!i){break d}s:{if(L[a|0]){p=K[a+108>>2];break s}p=K[a+208>>2];K[a+108>>2]=p;K[a+100>>2]=K[a+204>>2];K[a+112>>2]=K[a+216>>2];K[a+104>>2]=K[a+212>>2]}b=1;break g;case 4:break j;default:break d}}t:{p=K[a+52>>2];b=K[a+196>>2];if(p>>>0>>0){r=K[a+64>>2];if(r>>>0>>0){break t}}Fa(K[a+236>>2],1,8544,0);break d}if(!K[a+44>>2]){p=K[a+28>>2];o=K[a+200>>2]+(p<<4)|0;u=K[a+40>>2];b=0;break h}K[a+28>>2]=p;K[a+44>>2]=0;b=1;break h}u:while(1){v:{w:{if(!b){k=k+1|0;break w}K[a+40>>2]=i;if(N[a+56>>2]<=i>>>0){break b}e=K[a+48>>2];b=0;break v}b=1}x:while(1){y:{z:{A:{B:{if(!b){K[a+32>>2]=e;if(N[a+60>>2]<=e>>>0){break B}K[a+28>>2]=c;b=c;o=0;break y}K[a+36>>2]=k;if(N[a+76>>2]<=k>>>0){b=K[a+28>>2];o=1;break y}b=((Q(K[a+16>>2],K[a+32>>2])+Q(K[a+12>>2],K[a+40>>2])|0)+Q(K[a+20>>2],K[a+28>>2])|0)+Q(K[a+24>>2],k)|0;if(b>>>0>=N[a+8>>2]){break c}b=K[a+4>>2]+(b<<1)|0;if(M[b>>1]){break A}break a}i=K[a+40>>2]+1|0;break z}b=0;continue u}b=1;continue u}while(1){C:{D:{E:{if(!o){if(b>>>0>=q>>>0){break E}g=K[a+32>>2];d=K[a+200>>2]+(b<<4)|0;if(g>>>0>=N[d+8>>2]){break C}if(!L[a|0]){b=K[d+12>>2]+(g<<4)|0;K[a+76>>2]=Q(K[b+12>>2],K[b+8>>2])}k=K[a+72>>2];b=1;continue x}b=b+1|0;K[a+28>>2]=b;break D}e=K[a+32>>2]+1|0;b=0;continue x}o=0;continue}o=1;continue}}}}F:while(1){G:{H:{if(!b){u=u+1|0;K[a+40>>2]=u;break H}if(p>>>0>=r>>>0){break b}K[a+228>>2]=0;K[a+232>>2]=0;o=K[a+200>>2]+(p<<4)|0;s=K[o+8>>2];if(!s){break b}q=K[o+12>>2];k=0;e=0;b=0;while(1){g=s+(b^-1)|0;d=q+(b<<4)|0;j=g+K[d>>2]|0;I:{if(j>>>0>31){break I}c=K[o>>2];if(c>>>0>-1>>>j>>>0){break I}c=c<>>0>e>>>0?e:c:c;K[a+228>>2]=e}g=g+K[d+4>>2]|0;J:{if(g>>>0>31){break J}c=K[o+4>>2];if(c>>>0>-1>>>g>>>0){break J}c=c<>>0>k>>>0?k:c:c;K[a+232>>2]=k}b=b+1|0;if((s|0)!=(b|0)){continue}break}if(!e|!k){break d}K:{if(L[a|0]){k=K[a+108>>2];break K}k=K[a+208>>2];K[a+108>>2]=k;K[a+100>>2]=K[a+204>>2];K[a+112>>2]=K[a+216>>2];K[a+104>>2]=K[a+212>>2]}b=0;break G}b=1}L:while(1){M:{N:{O:{P:{if(!b){K[a+224>>2]=k;if(N[a+112>>2]<=k>>>0){break P}B=K[a+100>>2];b=0;break M}if(N[a+56>>2]<=u>>>0){i=K[a+32>>2];b=1;break M}b=((Q(K[a+16>>2],K[a+32>>2])+Q(K[a+12>>2],u)|0)+Q(K[a+20>>2],p)|0)+Q(K[a+24>>2],K[a+36>>2])|0;if(b>>>0>=N[a+8>>2]){break c}b=K[a+4>>2]+(b<<1)|0;if(M[b>>1]){break O}break a}p=p+1|0;K[a+28>>2]=p;break N}b=0;continue F}b=1;continue F}while(1){Q:{R:{S:{T:{if(!b){K[a+220>>2]=B;if(N[a+104>>2]<=B>>>0){break S}i=K[a+48>>2];break T}i=i+1|0}K[a+32>>2]=i;b=K[a+60>>2];d=K[o+8>>2];if((b>>>0>>0?b:d)>>>0>i>>>0){g=K[o>>2];c=g;n=d+(i^-1)|0;m=n;d=m&31;if((m&63)>>>0>=32){b=c<>>32-d;v=g<>>0>=32){b=b>>>d|0}else{b=((1<>>d}if((q|0)!=(b|0)){break Q}b=m&31;if((m&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}c=K[o+4>>2];if((b&c)!=(c|0)){break Q}d=m&31;if((m&63)>>>0>=32){b=c<>>32-d;w=c<>2];j=F+d|0;I=Ne(j,d>>>0>j>>>0?h+1|0:h,w,b);b=h;G=K[a+208>>2];d=F+G|0;b=G>>>0>d>>>0?b+1|0:b;s=Ne(d,b,w,C);A=v-1|0;j=K[a+212>>2];l=A+j|0;d=f-!v|0;b=d;x=Ne(l,l>>>0>>0?b+1|0:b,v,f);D=K[a+204>>2];j=A+D|0;b=D>>>0>j>>>0?b+1|0:b;j=Ne(j,b,v,f);z=K[o+12>>2]+(i<<4)|0;H=K[z>>2];t=H+n|0;b=t&31;if((t&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}if((g|0)!=(b&g)){break Q}h=c;O=K[z+4>>2];n=O+n|0;e=n&31;if((n&63)>>>0>=32){b=c<>>32-e;e=c<>>0>=32){c=b>>>l|0}else{c=((1<>>l}if((h|0)!=(c|0)){break Q}l=K[a+224>>2];e=!!(Oe(l,e,b)|ua);b=n&31;if((n&63)>>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=n<>>32-e|b<>2];if((t&63)>>>0>=32){b=g<>>32-n;e=g<>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=j<>>32-t|b<>2];if(!n|(!K[z+12>>2]|(j|0)==(x|0))){break Q}if((s|0)==(I|0)){break Q}u=K[a+68>>2];K[a+40>>2]=u;b=d;c=c+A|0;b=c>>>0>>0?b+1|0:b;g=(Ne(c,b,v,f)>>>H)-(j>>>H)|0;b=q;c=l+F|0;b=c>>>0>>0?b+1|0:b;S=a,T=Q(n,(Ne(c,b,w,C)>>>O)-(s>>>O)|0)+g|0,K[S+36>>2]=T;b=1;continue L}c=K[a+220>>2];b=K[a+228>>2];B=c+b-(c>>>0)%(b>>>0)|0;break R}c=K[a+224>>2];b=K[a+232>>2];k=c+b-(c>>>0)%(b>>>0)|0;b=0;continue L}b=0;continue}b=1;continue}}}}U:while(1){V:{W:{if(!b){E=E+1|0;K[a+40>>2]=E;break W}K[a+224>>2]=p;if(N[a+112>>2]<=p>>>0){break b}v=K[a+100>>2];b=0;break V}b=1}X:while(1){Y:{Z:{_:{$:{if(!b){K[a+220>>2]=v;if(N[a+104>>2]<=v>>>0){break $}K[a+28>>2]=A;e=A;b=0;break Y}if(N[a+56>>2]<=E>>>0){u=K[a+32>>2];b=1;break Y}b=((Q(K[a+16>>2],K[a+32>>2])+Q(K[a+12>>2],E)|0)+Q(K[a+20>>2],e)|0)+Q(K[a+24>>2],K[a+36>>2])|0;if(b>>>0>=N[a+8>>2]){break c}b=K[a+4>>2]+(b<<1)|0;if(M[b>>1]){break _}break a}c=K[a+224>>2];b=K[a+232>>2];p=c+b-(c>>>0)%(b>>>0)|0;break Z}b=0;continue U}b=1;continue U}while(1){aa:{ba:{ca:{da:{if(!b){if(e>>>0>=O>>>0){break ca}u=K[a+48>>2];K[a+32>>2]=u;y=(e<<4)+B|0;break da}u=u+1|0;K[a+32>>2]=u}b=K[a+60>>2];d=K[y+8>>2];if((b>>>0>>0?b:d)>>>0>u>>>0){g=K[y>>2];c=g;f=d+(u^-1)|0;i=f;d=f&31;if((f&63)>>>0>=32){b=c<>>32-d;k=g<>>0>=32){b=b>>>d|0}else{b=((1<>>d}if((q|0)!=(b|0)){break aa}b=i&31;if((i&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}c=K[y+4>>2];if((b&c)!=(c|0)){break aa}d=i&31;if((i&63)>>>0>=32){b=c<>>32-d;o=c<>2];j=F+d|0;I=Ne(j,d>>>0>j>>>0?h+1|0:h,o,b);b=h;w=K[a+208>>2];d=w+F|0;b=w>>>0>d>>>0?b+1|0:b;s=Ne(d,b,o,n);C=k-1|0;j=K[a+212>>2];l=C+j|0;d=t-!k|0;b=d;x=Ne(l,l>>>0>>0?b+1|0:b,k,t);G=K[a+204>>2];j=C+G|0;b=G>>>0>j>>>0?b+1|0:b;j=Ne(j,b,k,t);D=K[y+12>>2]+(u<<4)|0;z=K[D>>2];m=z+f|0;b=m&31;if((m&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}if((g|0)!=(b&g)){break aa}h=c;H=K[D+4>>2];f=H+f|0;r=f&31;if((f&63)>>>0>=32){b=c<>>32-r;r=c<>>0>=32){c=b>>>l|0}else{c=((1<>>l}if((h|0)!=(c|0)){break aa}l=K[a+224>>2];r=!!(Oe(l,r,b)|ua);b=f&31;if((f&63)>>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=f<>>32-r|b<>2];if((m&63)>>>0>=32){b=g<>>32-f;f=g<>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=f<>>32-m|b<>2];if(!f|(!K[D+12>>2]|(j|0)==(x|0))){break aa}if((s|0)==(I|0)){break aa}E=K[a+68>>2];K[a+40>>2]=E;b=d;c=c+C|0;b=c>>>0>>0?b+1|0:b;g=(Ne(c,b,k,t)>>>z)-(j>>>z)|0;b=q;c=l+F|0;b=c>>>0>>0?b+1|0:b;S=a,T=Q(f,(Ne(c,b,o,n)>>>H)-(s>>>H)|0)+g|0,K[S+36>>2]=T;b=1;continue X}e=e+1|0;K[a+28>>2]=e;break ba}c=K[a+220>>2];b=K[a+228>>2];v=c+b-(c>>>0)%(b>>>0)|0;b=0;continue X}b=0;continue}b=1;continue}}}}ea:while(1){fa:{ga:{if(!b){y=y+1|0;K[a+40>>2]=y;break ga}K[a+32>>2]=o;if(N[a+60>>2]<=o>>>0){break b}E=K[a+108>>2];b=0;break fa}b=1}ha:while(1){ia:{ja:{ka:{la:{if(!b){K[a+224>>2]=E;if(N[a+112>>2]<=E>>>0){break la}B=K[a+100>>2];b=0;break ia}if(N[a+56>>2]<=y>>>0){p=K[a+28>>2];b=1;break ia}b=((Q(K[a+16>>2],K[a+32>>2])+Q(K[a+12>>2],y)|0)+Q(K[a+20>>2],K[a+28>>2])|0)+Q(K[a+24>>2],K[a+36>>2])|0;if(b>>>0>=N[a+8>>2]){break c}b=K[a+4>>2]+(b<<1)|0;if(M[b>>1]){break ka}break a}o=K[a+32>>2]+1|0;break ja}b=0;continue ea}b=1;continue ea}while(1){ma:{na:{oa:{pa:{if(!b){K[a+220>>2]=B;if(N[a+104>>2]<=B>>>0){break oa}K[a+28>>2]=A;p=A;break pa}p=p+1|0;K[a+28>>2]=p}if(p>>>0>>0){m=K[a+32>>2];e=K[a+200>>2]+(p<<4)|0;b=K[e+8>>2];if(m>>>0>=b>>>0){break ma}g=K[e>>2];c=g;f=b+(m^-1)|0;i=f;d=f&31;if((f&63)>>>0>=32){b=c<>>32-d;v=g<>>0>=32){b=b>>>d|0}else{b=((1<>>d}if((q|0)!=(b|0)){break ma}b=i&31;if((i&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}c=K[e+4>>2];if((b&c)!=(c|0)){break ma}d=i&31;if((i&63)>>>0>=32){b=c<>>32-d;w=c<>2];j=F+d|0;I=Ne(j,d>>>0>j>>>0?h+1|0:h,w,b);b=h;G=K[a+208>>2];d=F+G|0;b=G>>>0>d>>>0?b+1|0:b;s=Ne(d,b,w,n);C=v-1|0;j=K[a+212>>2];l=C+j|0;d=t-!v|0;b=d;x=Ne(l,l>>>0>>0?b+1|0:b,v,t);D=K[a+204>>2];j=C+D|0;b=D>>>0>j>>>0?b+1|0:b;j=Ne(j,b,v,t);z=K[e+12>>2]+(m<<4)|0;H=K[z>>2];m=H+f|0;b=m&31;if((m&63)>>>0>=32){b=-1>>>b|0}else{b=(1<>>b}if((g|0)!=(b&g)){break ma}h=c;O=K[z+4>>2];f=O+f|0;e=f&31;if((f&63)>>>0>=32){b=c<>>32-e;e=c<>>0>=32){c=b>>>l|0}else{c=((1<>>l}if((h|0)!=(c|0)){break ma}l=K[a+224>>2];e=!!(Oe(l,e,b)|ua);b=f&31;if((f&63)>>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=f<>>32-e|b<>2];if((m&63)>>>0>=32){b=g<>>32-f;f=g<>>0>=32){h=-1<>>32-b;b=-1<>>0>=32){h=f<>>32-m|b<>2];if(!f|(!K[z+12>>2]|(j|0)==(x|0))){break ma}if((s|0)==(I|0)){break ma}y=K[a+68>>2];K[a+40>>2]=y;b=d;c=c+C|0;b=c>>>0>>0?b+1|0:b;g=(Ne(c,b,v,t)>>>H)-(j>>>H)|0;b=q;c=l+F|0;b=c>>>0>>0?b+1|0:b;S=a,T=Q(f,(Ne(c,b,w,n)>>>O)-(s>>>O)|0)+g|0,K[S+36>>2]=T;b=1;continue ha}c=K[a+220>>2];b=K[a+228>>2];B=c+b-(c>>>0)%(b>>>0)|0;break na}c=K[a+224>>2];b=K[a+232>>2];E=c+b-(c>>>0)%(b>>>0)|0;b=0;continue ha}b=0;continue}b=1;continue}}}}qa:while(1){ra:{sa:{if(!b){e=e+1|0;break sa}K[a+32>>2]=i;if(N[a+60>>2]<=i>>>0){break b}k=K[a+68>>2];b=0;break ra}b=1}ta:while(1){ua:{va:{wa:{xa:{if(!b){K[a+40>>2]=k;if(N[a+56>>2]<=k>>>0){break xa}K[a+28>>2]=c;b=c;o=0;break ua}K[a+36>>2]=e;if(N[a+76>>2]<=e>>>0){b=K[a+28>>2];o=1;break ua}b=((Q(K[a+16>>2],K[a+32>>2])+Q(K[a+12>>2],K[a+40>>2])|0)+Q(K[a+20>>2],K[a+28>>2])|0)+Q(K[a+24>>2],e)|0;if(b>>>0>=N[a+8>>2]){break c}b=K[a+4>>2]+(b<<1)|0;if(M[b>>1]){break wa}break a}i=K[a+32>>2]+1|0;break va}b=0;continue qa}b=1;continue qa}while(1){ya:{za:{Aa:{if(!o){if(b>>>0>=q>>>0){break Aa}g=K[a+32>>2];d=K[a+200>>2]+(b<<4)|0;if(g>>>0>=N[d+8>>2]){break ya}if(!L[a|0]){b=K[d+12>>2]+(g<<4)|0;K[a+76>>2]=Q(K[b+12>>2],K[b+8>>2])}e=K[a+72>>2];b=1;continue ta}b=b+1|0;K[a+28>>2]=b;break za}k=K[a+40>>2]+1|0;b=0;continue ta}o=0;continue}o=1;continue}}}}return 0}Fa(K[a+236>>2],1,1306,0)}return 0}J[b>>1]=1;return 1}function Cd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=R(0),s=0,t=0,u=0,v=0,w=R(0),x=0,y=0,z=0,A=R(0),C=R(0),D=R(0),F=0,G=0,H=0,J=0,M=0,N=R(0),O=0,P=0,T=0;m=ra-8320|0;ra=m;K[m+64>>2]=0;i=2;f=K[a>>2];a:{b:{if((f|0)==176622093){break b}if((f|0)!=1375686655){if(!((f|0)!=201326592|K[a+4>>2]!=538988650)&K[a+8>>2]==176622093){break b}$(1101);i=1;break a}i=0}f=Ia(1,96);g=0;c:{if(!f){break c}K[f+76>>2]=1;d:{e:{f:{switch(i|0){case 0:K[f+88>>2]=68;K[f+84>>2]=69;K[f+80>>2]=70;K[f+16>>2]=71;K[f+4>>2]=72;K[f+28>>2]=73;K[f+24>>2]=74;K[f+20>>2]=75;K[f>>2]=76;K[f+92>>2]=77;K[f+44>>2]=78;K[f+40>>2]=79;K[f+36>>2]=80;K[f+32>>2]=81;K[f+12>>2]=82;K[f+8>>2]=83;g=Yb();K[f+48>>2]=g;if(g){break e}break d;case 2:break f;default:break d}}K[f+88>>2]=84;K[f+84>>2]=85;K[f+80>>2]=86;K[f+16>>2]=87;K[f+4>>2]=88;K[f+92>>2]=89;K[f+44>>2]=90;K[f+40>>2]=91;K[f+36>>2]=92;K[f+32>>2]=93;K[f+28>>2]=94;K[f+24>>2]=95;K[f+20>>2]=96;K[f+12>>2]=97;K[f+8>>2]=98;K[f>>2]=99;g=Ia(1,136);g:{if(g){j=Yb();K[g>>2]=j;h:{if(!j){break h}K[g+108>>2]=0;K[g+112>>2]=0;I[g+124|0]=0;K[g+116>>2]=0;K[g+120>>2]=0;j=ub();K[g+4>>2]=j;if(!j){break h}j=ub();K[g+8>>2]=j;if(!j){break h}break g}Tc(g)}g=0}K[f+48>>2]=g;if(!g){break d}}K[f+72>>2]=1;K[f+64>>2]=1;K[f+60>>2]=0;K[f+52>>2]=0;K[f+56>>2]=0;K[f+68>>2]=1;g=f;break c}Ga(f);g=0}f=g;if(f){K[f+60>>2]=0;K[f+72>>2]=100}if(f){K[f+56>>2]=0;K[f+68>>2]=101}if(f){K[f+52>>2]=0;K[f+64>>2]=102}g=m+68|0;if(g){B(g,0,8248);K[g+8248>>2]=0;K[g+8200>>2]=-1;K[g+8204>>2]=-1}if(d){K[m+8316>>2]=K[m+8316>>2]|1}K[m+60>>2]=b;K[m+56>>2]=a;K[m+52>>2]=a;i=1;b=0;g=m+52|0;i:{if(!g){break i}a=Ia(1,72);if(a){j:{K[a+64>>2]=1048576;j=Ja(1048576);K[a+32>>2]=j;if(!j){Ga(a);a=0;break j}K[a+36>>2]=j;K[a+28>>2]=2;K[a+24>>2]=3;K[a+20>>2]=4;K[a+16>>2]=5;K[a+44>>2]=6;K[a+40>>2]=8;K[a+68>>2]=K[a+68>>2]|2}}else{a=0}if(!a){break i}if(a){K[a+4>>2]=0;K[a>>2]=g}b=K[g+8>>2];if(a){K[a+8>>2]=b;K[a+12>>2]=0}if(!(!a|!(L[a+68|0]&2))){K[a+16>>2]=64}if(a){K[a+24>>2]=66}if(a){K[a+28>>2]=67}b=a}a=f;f=m+68|0;if(!a|!f){f=0}else{k:{if(!K[a+76>>2]){Fa(a+52|0,1,9865,0);f=0;break k}va[K[a+24>>2]](K[a+48>>2],f);f=1}}if(!f){$(1116);zb(b);Cb(a);break a}if(!b|!a){f=0}else{l:{if(!K[a+76>>2]){Fa(a+52|0,1,9946,0);f=0;break l}f=va[K[a>>2]](b,K[a+48>>2],m- -64|0,a+52|0)|0}}if(!f){$(1144);zb(b);Cb(a);Ya(K[m+64>>2]);break a}g=K[m+64>>2];f=0;m:{if(!K[a+76>>2]|(!a|!b)){g=f}else{g=va[K[a+4>>2]](K[a+48>>2],b,g,a+52|0)|0}if(g){if(!(!K[a+76>>2]|(!a|!b))){f=va[K[a+16>>2]](K[a+48>>2],b,a+52|0)|0}if(f){break m}}$(1279);Cb(a);zb(b);Ya(K[m+64>>2]);break a}zb(b);Cb(a);l=K[m+64>>2];a=K[l+28>>2];if(a){Ga(a);l=K[m+64>>2];K[l+28>>2]=0;K[l+32>>2]=0}v=K[l+16>>2];n:{o:{if(!c){if(!(!e|(v|0)!=4)){k=1;v=4;break n}p:{b=K[l+20>>2];if(!((b|0)==3|(v|0)!=3)){a=K[l+24>>2];if(K[a>>2]!=K[a+4>>2]|K[a+52>>2]==1){break p}K[l+20>>2]=3;break o}if(v>>>0>2){break p}K[l+20>>2]=2;break n}q:{switch(b-3|0){case 2:r:{s:{if(v>>>0<4){break s}f=K[l+24>>2];a=K[f>>2];if((a|0)!=K[f+52>>2]|(a|0)!=K[f+104>>2]|(a|0)!=K[f+156>>2]){break s}a=K[f+4>>2];if((a|0)!=K[f+56>>2]|(a|0)!=K[f+108>>2]){break s}if((a|0)==K[f+160>>2]){break r}}K[m+20>>2]=1053;K[m+16>>2]=1336;Ka(26032,8142,m+16|0);break n}j=Q(K[f+12>>2],K[f+8>>2]);A=R(R(1)/R((-1<>2]^-1)>>>0));C=R(R(1)/R((-1<>2]^-1)>>>0));w=R(R(1)/R((-1<>2]^-1)>>>0));N=R(R(1)/R((-1<>2]^-1)>>>0));a=0;while(1){if((a|0)!=(j|0)){g=a<<2;b=g+K[f+148>>2]|0;p=K[b>>2];c=g+K[f+96>>2]|0;i=K[c>>2];k=g+K[f+44>>2]|0;r=R(R(1)-R(A*R(K[g+K[f+200>>2]>>2])));D=R(R(R(R(1)-R(N*R(K[k>>2])))*R(255))*r);if(R(S(D))>2]=g;D=R(R(R(R(1)-R(w*R(i|0)))*R(255))*r);if(R(S(D))>2]=g;r=R(R(R(R(1)-R(C*R(p|0)))*R(255))*r);if(R(S(r))>2]=c;a=a+1|0;continue}break};Ga(K[f+200>>2]);a=K[l+24>>2];K[a+128>>2]=8;K[a+76>>2]=8;K[a+24>>2]=8;k=0;K[a+200>>2]=0;K[l+20>>2]=1;a=K[l+16>>2]-1|0;K[l+16>>2]=a;h=3;while(1){if(a>>>0<=h>>>0){break n}a=K[l+24>>2]+Q(h,52)|0;E(a,a+52|0,52);h=h+1|0;a=K[l+16>>2];continue};case 0:break o;case 1:break q;default:break n}}j=K[l+24>>2];a=K[j>>2];t:{u:{if((a|0)!=K[j+52>>2]|(a|0)!=K[j+104>>2]){break u}a=K[j+4>>2];if((a|0)!=K[j+56>>2]){break u}if((a|0)==K[j+108>>2]){break t}}K[m+36>>2]=1115;K[m+32>>2]=1336;Ka(26032,8184,m+32|0);break n}a=K[j+24>>2];b=-1<>2]?0:a;i=K[j+84>>2]?0:a;k=Q(K[j+12>>2],K[j+8>>2]);a=0;while(1){if((a|0)!=(k|0)){c=a<<2;h=c+K[j+44>>2]|0;f=c+K[j+148>>2]|0;r=R(K[f>>2]-p|0);g=c+K[j+96>>2]|0;A=R(K[g>>2]-i|0);C=R(K[h>>2]);w=R(R(R(r*R(1.4019900560379028))+R(R(A*R(-3680000008898787e-20))+C))+R(.5));if(R(S(w))>2]=(b|0)<(c|0)?b:(c|0)>0?c:0;w=R(R(R(r*R(-.7141128182411194))+R(R(C*R(1.0003000497817993))+R(A*R(-.34412500262260437))))+R(.5));if(R(S(w))>2]=(b|0)<(c|0)?b:(c|0)>0?c:0;r=R(R(R(r*R(-7999999979801942e-21))+R(R(C*R(.9998229742050171))+R(A*R(1.7720400094985962))))+R(.5));if(R(S(r))>2]=(b|0)<(c|0)?b:(c|0)>0?c:0;a=a+1|0;continue}break}K[l+20>>2]=1;k=0;break n}v=c>>>0>v>>>0?v:c;k=1;break n}v:{w:{c=K[l+24>>2];if(K[c>>2]!=1){break w}x:{switch(K[c+52>>2]-1|0){case 1:if(K[c+104>>2]!=2){break w}if(!(K[c+4>>2]!=1|K[c+56>>2]!=2|K[c+108>>2]!=2)){b=K[c+24>>2];h=K[c+148>>2];a=K[c+96>>2];i=K[c+44>>2];F=K[c+60>>2];q=K[c+8>>2];f=K[c+12>>2];c=Q(q,f)<<2;g=Ma(c);j=Ma(c);p=Ma(c);if(!(!g|!j|!p)){n=-1<>2]&1;J=f-b|0;G=K[l>>2]&1;x=q-G|0;if(!b){c=p;b=j;f=g;break v}c=p;b=j;f=g;while(1){if((k|0)==(q|0)){break v}Oa(o,n,K[i>>2],0,0,f,b,c);k=k+1|0;c=c+4|0;b=b+4|0;f=f+4|0;i=i+4|0;continue}}Ga(g);Ga(j);Ga(p);break n}if(K[c+4>>2]!=1|K[c+56>>2]!=1|K[c+108>>2]!=1){break w}a=K[c+24>>2];b=K[c+148>>2];f=K[c+96>>2];h=K[c+44>>2];s=K[c+60>>2];g=K[c+8>>2];u=K[c+12>>2];c=Q(g,u)<<2;j=Ma(c);p=Ma(c);k=Ma(c);if(!(!j|!p|!k)){n=-1<>2]&1;a=g-x|0;y=a&1;t=a>>>1|0;F=a&-2;a=k;i=p;c=j;while(1){if((q|0)!=(u|0)){if(x){Oa(o,n,K[h>>2],0,0,c,i,a);i=i+4|0;c=c+4|0;h=h+4|0;a=a+4|0}g=0;while(1){if(g>>>0>>0){Oa(o,n,K[h>>2],K[f>>2],K[b>>2],c,i,a);Oa(o,n,K[h+4>>2],K[f>>2],K[b>>2],c+4|0,i+4|0,a+4|0);g=g+2|0;b=b+4|0;f=f+4|0;a=a+8|0;i=i+8|0;c=c+8|0;h=h+8|0;continue}break}y:{if(!y){break y}g=K[h>>2];z:{if((s|0)==(t|0)){Oa(o,n,g,0,0,c,i,a);break z}Oa(o,n,g,K[f>>2],K[b>>2],c,i,a)}a=a+4|0;i=i+4|0;c=c+4|0;h=h+4|0;if(s>>>0<=t>>>0){break y}b=b+4|0;f=f+4|0}q=q+1|0;continue}break}Ga(K[K[l+24>>2]+44>>2]);a=K[l+24>>2];K[a+44>>2]=j;Ga(K[a+96>>2]);a=K[l+24>>2];K[a+96>>2]=p;Ga(K[a+148>>2]);a=K[l+24>>2];K[a+148>>2]=k;b=K[a+8>>2];K[a+112>>2]=b;K[a+60>>2]=b;b=K[a+12>>2];K[a+116>>2]=b;K[a+64>>2]=b;b=K[a>>2];K[a+104>>2]=b;K[a+52>>2]=b;b=K[a+4>>2];K[a+108>>2]=b;K[a+56>>2]=b;K[l+20>>2]=1;k=0;break n}Ga(j);Ga(p);Ga(k);k=0;break n;case 0:break x;default:break w}}if(K[c+104>>2]!=1|K[c+4>>2]!=1|(K[c+56>>2]!=1|K[c+108>>2]!=1)){break w}b=K[c+24>>2];h=K[c+148>>2];a=K[c+96>>2];i=K[c+44>>2];n=Q(K[c+12>>2],K[c+8>>2]);c=n<<2;j=Ma(c);p=Ma(c);k=Ma(c);if(!(!j|!p|!k)){o=-1<>2],K[a>>2],K[h>>2],g,f,b);c=c+1|0;b=b+4|0;f=f+4|0;g=g+4|0;h=h+4|0;a=a+4|0;i=i+4|0;continue}break}Ga(K[K[l+24>>2]+44>>2]);a=K[l+24>>2];K[a+44>>2]=j;Ga(K[a+96>>2]);a=K[l+24>>2];K[a+96>>2]=p;Ga(K[a+148>>2]);K[K[l+24>>2]+148>>2]=k;K[l+20>>2]=1;k=0;break n}Ga(j);Ga(p);Ga(k);k=0;break n}K[m+4>>2]=463;K[m>>2]=1336;Ka(26032,8227,m);break n}H=x>>>1|0;y=x&-2;O=J&-2;u=q<<2;while(1){if(M>>>0>>0){s=c+u|0;q=b+u|0;t=f+u|0;k=i+u|0;if(G){Oa(o,n,K[i>>2],0,0,f,b,c);Oa(o,n,K[k>>2],K[a>>2],K[h>>2],t,q,s);s=s+4|0;q=q+4|0;t=t+4|0;k=k+4|0;c=c+4|0;f=f+4|0;i=i+4|0;b=b+4|0}z=0;while(1){if(y>>>0>z>>>0){Oa(o,n,K[i>>2],K[a>>2],K[h>>2],f,b,c);Oa(o,n,K[i+4>>2],K[a>>2],K[h>>2],f+4|0,b+4|0,c+4|0);Oa(o,n,K[k>>2],K[a>>2],K[h>>2],t,q,s);Oa(o,n,K[k+4>>2],K[a>>2],K[h>>2],t+4|0,q+4|0,s+4|0);z=z+2|0;h=h+4|0;a=a+4|0;s=s+8|0;q=q+8|0;t=t+8|0;k=k+8|0;c=c+8|0;b=b+8|0;f=f+8|0;i=i+8|0;continue}break}A:{if((x|0)==(y|0)){break A}z=K[i>>2];B:{if((F|0)==(H|0)){Oa(o,n,z,0,0,f,b,c);Oa(o,n,K[k>>2],0,0,t,q,s);break B}Oa(o,n,z,K[a>>2],K[h>>2],f,b,c);Oa(o,n,K[k>>2],K[a>>2],K[h>>2],t,q,s)}c=c+4|0;b=b+4|0;f=f+4|0;i=i+4|0;if(F>>>0<=H>>>0){break A}h=h+4|0;a=a+4|0}M=M+2|0;c=c+u|0;b=b+u|0;f=f+u|0;i=i+u|0;continue}break}C:{if(!(J&1)){break C}if(G){Oa(o,n,K[i>>2],0,0,f,b,c);c=c+4|0;f=f+4|0;i=i+4|0;b=b+4|0}k=0;while(1){if(k>>>0>>0){Oa(o,n,K[i>>2],K[a>>2],K[h>>2],f,b,c);Oa(o,n,K[i+4>>2],K[a>>2],K[h>>2],f+4|0,b+4|0,c+4|0);k=k+2|0;h=h+4|0;a=a+4|0;c=c+8|0;b=b+8|0;f=f+8|0;i=i+8|0;continue}break}if((x|0)==(y|0)){break C}i=K[i>>2];if((F|0)==(H|0)){Oa(o,n,i,0,0,f,b,c);break C}Oa(o,n,i,K[a>>2],K[h>>2],f,b,c)}Ga(K[K[l+24>>2]+44>>2]);a=K[l+24>>2];K[a+44>>2]=g;Ga(K[a+96>>2]);a=K[l+24>>2];K[a+96>>2]=j;Ga(K[a+148>>2]);a=K[l+24>>2];K[a+148>>2]=p;b=K[a+8>>2];K[a+112>>2]=b;K[a+60>>2]=b;b=K[a+12>>2];K[a+116>>2]=b;K[a+64>>2]=b;b=K[a>>2];K[a+104>>2]=b;K[a+52>>2]=b;b=K[a+4>>2];K[a+108>>2]=b;K[a+56>>2]=b;K[l+20>>2]=1;k=0}c=K[m+64>>2];D:{if(d){break D}f=0;while(1){if((f|0)==(v|0)){break D}d=K[c+24>>2]+Q(f,52)|0;a=K[d+24>>2];if((a|0)!=8){E:{if(a>>>0<=7){g=Q(K[d+12>>2],K[d+8>>2]);j=K[d+44>>2];if(K[d+32>>2]){b=1<>2];i=a>>31<<7|a>>>25;P=p,T=Me(a<<7,i,b,0),K[P>>2]=T;h=h+1|0;continue}}a=-1<>2],0,255),ua,a,0);K[b>>2]=p;h=h+1|0;continue}}a=a-8|0;b=Q(K[d+12>>2],K[d+8>>2]);g=K[d+44>>2];h=0;if(K[d+32>>2]){while(1){if((b|0)==(h|0)){break E}j=g+(h<<2)|0;K[j>>2]=K[j>>2]>>a;h=h+1|0;continue}}while(1){if((b|0)==(h|0)){break E}j=g+(h<<2)|0;K[j>>2]=K[j>>2]>>>a;h=h+1|0;continue}}K[d+24>>2]=8}f=f+1|0;continue}}a=Q(K[c+12>>2],K[c+8>>2]);F:{if(!k){if(K[c+20>>2]==2){if(K[c+16>>2]==1){qa(K[K[c+24>>2]+44>>2],a|0);break F}if(!e){break F}b=K[c+24>>2];ha(K[b+44>>2],K[b+96>>2],a|0);break F}b=K[c+24>>2];ga(K[b+44>>2],K[b+96>>2],K[b+148>>2],a|0);break F}G:{switch(v-1|0){case 0:fa(K[K[c+24>>2]+44>>2],a|0);break F;case 2:b=K[c+24>>2];ea(K[b+44>>2],K[b+96>>2],K[b+148>>2],a|0);break F;case 3:break G;default:break F}}b=K[c+24>>2];da(K[b+44>>2],K[b+96>>2],K[b+148>>2],K[b+200>>2],a|0)}Ya(K[m+64>>2]);i=0}ra=m+8320|0;return i|0}function qc(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,F=0,G=0,H=0,I=0,J=0,L=0;j=K[a>>2];a:{if(j>>>0>>0|b>>>0>=d>>>0|b>>>0>=j>>>0){break a}j=K[a+4>>2];if(j>>>0>>0|c>>>0>=e>>>0|c>>>0>=j>>>0){break a}A=(c>>>0)/N[a+12>>2]|0;s=K[a+8>>2];F=(b>>>0)/(s>>>0)|0;I=(Q(s,F)-b|0)+s|0;x=c;while(1){k=K[a+12>>2];j=k;j=(c|0)==(x|0)?j-((c>>>0)%(j>>>0)|0)|0:j;u=e-x|0;r=j>>>0>>0?j:u;y=r&-4;v=r&3;J=r&-8;G=r&7;w=r-1|0;L=(g|0)==2&(r|0)==1;H=Q(k-j|0,s);z=(Q(x-c|0,h)<<2)+f|0;C=F;u=b;while(1){j=(b|0)==(u|0)?I:s;k=d-u|0;q=j>>>0>>0?j:k;k=s-j|0;l=C<<2;j=K[l+(K[a+24>>2]+(Q(K[a+16>>2],A)<<2)|0)>>2];b:{c:{d:{e:{f:{g:{if(i){h:{i:{j:{k:{if(j){l=((H<<2)+j|0)+(k<<2)|0;j=u-b|0;if((g|0)==1){break h}m=(Q(g,j)<<2)+z|0;if((q|0)==1){break i}if(L){break j}if((g|0)!=8|q>>>0<=7){break k}if(!r){break b}o=q&-4;k=0;while(1){j=0;while(1){K[(j<<5)+m>>2]=K[(j<<2)+l>>2];n=j|1;K[(n<<5)+m>>2]=K[(n<<2)+l>>2];n=j|2;K[(n<<5)+m>>2]=K[(n<<2)+l>>2];n=j|3;K[(n<<5)+m>>2]=K[(n<<2)+l>>2];j=j+4|0;if(o>>>0>j>>>0){continue}break}if(j>>>0>>0){while(1){K[(j<<5)+m>>2]=K[(j<<2)+l>>2];j=j+1|0;if((q|0)!=(j|0)){continue}break}}l=(s<<2)+l|0;m=(h<<2)+m|0;k=k+1|0;if((r|0)!=(k|0)){continue}break}break b}if((g|0)!=1){if(!r){break b}p=q&-4;n=q&3;l=(Q(u-b|0,g)<<2)+z|0;o=0;while(1){l:{if(!q){break l}m=0;j=0;k=0;if(q>>>0>=4){while(1){K[(Q(g,j)<<2)+l>>2]=0;K[(Q(j|1,g)<<2)+l>>2]=0;K[(Q(j|2,g)<<2)+l>>2]=0;K[(Q(j|3,g)<<2)+l>>2]=0;j=j+4|0;k=k+4|0;if((p|0)!=(k|0)){continue}break}}if(!n){break l}while(1){K[(Q(g,j)<<2)+l>>2]=0;j=j+1|0;m=m+1|0;if((n|0)!=(m|0)){continue}break}}l=(h<<2)+l|0;o=o+1|0;if((r|0)!=(o|0)){continue}break}break b}if(!r){break b}l=q<<2;k=(u-b<<2)+z|0;o=0;if(w>>>0>=7){break g}break f}if(!r){break b}D=q&-4;p=q&3;n=0;break c}j=0;k=q&-4;if(k){while(1){K[(j<<3)+m>>2]=K[(j<<2)+l>>2];o=j|1;K[(o<<3)+m>>2]=K[(o<<2)+l>>2];o=j|2;K[(o<<3)+m>>2]=K[(o<<2)+l>>2];o=j|3;K[(o<<3)+m>>2]=K[(o<<2)+l>>2];j=j+4|0;if(k>>>0>j>>>0){continue}break}}if(j>>>0>=q>>>0){break b}o=0;k=j;n=q-j&3;if(n){while(1){K[(k<<3)+m>>2]=K[(k<<2)+l>>2];k=k+1|0;o=o+1|0;if((n|0)!=(o|0)){continue}break}}if(j-q>>>0>4294967292){break b}while(1){K[(k<<3)+m>>2]=K[(k<<2)+l>>2];j=k+1|0;K[(j<<3)+m>>2]=K[(j<<2)+l>>2];j=k+2|0;K[(j<<3)+m>>2]=K[(j<<2)+l>>2];j=k+3|0;K[(j<<3)+m>>2]=K[(j<<2)+l>>2];k=k+4|0;if((q|0)!=(k|0)){continue}break}break b}if(!r){break b}k=0;if(w>>>0>=3){while(1){K[m>>2]=K[l>>2];j=h<<2;m=j+m|0;p=l;l=s<<2;o=p+l|0;K[m>>2]=K[o>>2];m=j+m|0;o=l+o|0;K[m>>2]=K[o>>2];m=j+m|0;o=l+o|0;K[m>>2]=K[o>>2];l=l+o|0;m=j+m|0;k=k+4|0;if((y|0)!=(k|0)){continue}break}}j=0;if(!v){break b}while(1){K[m>>2]=K[l>>2];l=(s<<2)+l|0;m=(h<<2)+m|0;j=j+1|0;if((v|0)!=(j|0)){continue}break}break b}j=(j<<2)+z|0;if((q|0)!=4){if(!r){break b}m=q<<2;o=0;if(w>>>0>=3){break e}break d}if(!r){break b}o=0;if(w>>>0>=3){while(1){k=K[l+4>>2];K[j>>2]=K[l>>2];K[j+4>>2]=k;k=K[l+12>>2];K[j+8>>2]=K[l+8>>2];K[j+12>>2]=k;k=l;l=s<<2;k=k+l|0;n=K[k+12>>2];m=h<<2;j=m+j|0;K[j+8>>2]=K[k+8>>2];K[j+12>>2]=n;n=K[k+4>>2];K[j>>2]=K[k>>2];K[j+4>>2]=n;k=l+k|0;n=K[k+12>>2];j=j+m|0;K[j+8>>2]=K[k+8>>2];K[j+12>>2]=n;n=K[k+4>>2];K[j>>2]=K[k>>2];K[j+4>>2]=n;k=l+k|0;n=K[k+12>>2];j=j+m|0;K[j+8>>2]=K[k+8>>2];K[j+12>>2]=n;n=K[k+4>>2];K[j>>2]=K[k>>2];K[j+4>>2]=n;l=l+k|0;j=j+m|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}m=0;if(!v){break b}while(1){k=K[l+4>>2];K[j>>2]=K[l>>2];K[j+4>>2]=k;k=K[l+12>>2];K[j+8>>2]=K[l+8>>2];K[j+12>>2]=k;l=(s<<2)+l|0;j=(h<<2)+j|0;m=m+1|0;if((v|0)!=(m|0)){continue}break}break b}if(!j){j=Ia(1,Q(K[a+8>>2],K[a+12>>2])<<2);if(!j){return 0}K[l+(K[a+24>>2]+(Q(K[a+16>>2],A)<<2)|0)>>2]=j}l=((H<<2)+j|0)+(k<<2)|0;j=u-b|0;m:{n:{o:{p:{q:{r:{if((g|0)!=1){m=(Q(g,j)<<2)+z|0;if((q|0)==1){break r}if((g|0)!=8|q>>>0<=7){break q}if(!r){break b}o=q&-4;k=0;while(1){j=0;while(1){K[(j<<2)+l>>2]=K[(j<<5)+m>>2];n=j|1;K[(n<<2)+l>>2]=K[(n<<5)+m>>2];n=j|2;K[(n<<2)+l>>2]=K[(n<<5)+m>>2];n=j|3;K[(n<<2)+l>>2]=K[(n<<5)+m>>2];j=j+4|0;if(o>>>0>j>>>0){continue}break}if(j>>>0>>0){while(1){K[(j<<2)+l>>2]=K[(j<<5)+m>>2];j=j+1|0;if((q|0)!=(j|0)){continue}break}}l=(s<<2)+l|0;m=(h<<2)+m|0;k=k+1|0;if((r|0)!=(k|0)){continue}break}break b}j=(j<<2)+z|0;if((q|0)==4){break p}if(!r){break b}m=q<<2;o=0;if(w>>>0>=3){break o}break n}if(!r){break b}o=0;if(w>>>0>=3){while(1){K[l>>2]=K[m>>2];j=s<<2;l=j+l|0;k=h<<2;m=k+m|0;K[l>>2]=K[m>>2];l=j+l|0;m=k+m|0;K[l>>2]=K[m>>2];l=j+l|0;m=k+m|0;K[l>>2]=K[m>>2];l=j+l|0;m=k+m|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}j=0;if(!v){break b}while(1){K[l>>2]=K[m>>2];l=(s<<2)+l|0;m=(h<<2)+m|0;j=j+1|0;if((v|0)!=(j|0)){continue}break}break b}if(!r){break b}D=q&-4;p=q&3;n=0;break m}if(!r){break b}o=0;if(w>>>0>=3){while(1){k=K[j+4>>2];K[l>>2]=K[j>>2];K[l+4>>2]=k;k=K[j+12>>2];K[l+8>>2]=K[j+8>>2];K[l+12>>2]=k;m=h<<2;j=m+j|0;n=K[j+12>>2];k=l;l=s<<2;k=k+l|0;K[k+8>>2]=K[j+8>>2];K[k+12>>2]=n;n=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=n;j=j+m|0;n=K[j+12>>2];k=l+k|0;K[k+8>>2]=K[j+8>>2];K[k+12>>2]=n;n=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=n;j=j+m|0;n=K[j+12>>2];k=l+k|0;K[k+8>>2]=K[j+8>>2];K[k+12>>2]=n;n=K[j+4>>2];K[k>>2]=K[j>>2];K[k+4>>2]=n;j=j+m|0;l=l+k|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}m=0;if(!v){break b}while(1){k=K[j+4>>2];K[l>>2]=K[j>>2];K[l+4>>2]=k;k=K[j+12>>2];K[l+8>>2]=K[j+8>>2];K[l+12>>2]=k;j=(h<<2)+j|0;l=(s<<2)+l|0;m=m+1|0;if((v|0)!=(m|0)){continue}break}break b}while(1){k=!m;if(!k){E(l,j,m)}p=j;j=h<<2;n=p+j|0;p=l;l=s<<2;p=p+l|0;if(!k){E(p,n,m)}n=j+n|0;p=l+p|0;if(!k){E(p,n,m)}n=j+n|0;p=l+p|0;if(!k){E(p,n,m)}j=j+n|0;l=l+p|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}k=0;if(!v){break b}while(1){if(m){E(l,j,m)}j=(h<<2)+j|0;l=(s<<2)+l|0;k=k+1|0;if((v|0)!=(k|0)){continue}break}break b}while(1){s:{if(!q){break s}k=0;j=0;o=0;if(q>>>0>=4){while(1){K[(j<<2)+l>>2]=K[(Q(g,j)<<2)+m>>2];t=j|1;K[(t<<2)+l>>2]=K[(Q(g,t)<<2)+m>>2];t=j|2;K[(t<<2)+l>>2]=K[(Q(g,t)<<2)+m>>2];t=j|3;K[(t<<2)+l>>2]=K[(Q(g,t)<<2)+m>>2];j=j+4|0;o=o+4|0;if((D|0)!=(o|0)){continue}break}}if(!p){break s}while(1){K[(j<<2)+l>>2]=K[(Q(g,j)<<2)+m>>2];j=j+1|0;k=k+1|0;if((p|0)!=(k|0)){continue}break}}l=(s<<2)+l|0;m=(h<<2)+m|0;n=n+1|0;if((r|0)!=(n|0)){continue}break}break b}while(1){j=!l;if(!j){B(k,0,l)}p=k;k=h<<2;m=p+k|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}m=k+m|0;if(!j){B(m,0,l)}k=k+m|0;o=o+8|0;if((J|0)!=(o|0)){continue}break}}j=0;if(!G){break b}while(1){if(l){B(k,0,l)}k=(h<<2)+k|0;j=j+1|0;if((G|0)!=(j|0)){continue}break}break b}while(1){k=!m;if(!k){E(j,l,m)}p=l;l=s<<2;n=p+l|0;p=j;j=h<<2;p=p+j|0;if(!k){E(p,n,m)}n=l+n|0;p=j+p|0;if(!k){E(p,n,m)}n=l+n|0;p=j+p|0;if(!k){E(p,n,m)}l=l+n|0;j=j+p|0;o=o+4|0;if((y|0)!=(o|0)){continue}break}}k=0;if(!v){break b}while(1){if(m){E(j,l,m)}l=(s<<2)+l|0;j=(h<<2)+j|0;k=k+1|0;if((v|0)!=(k|0)){continue}break}break b}while(1){t:{if(!q){break t}k=0;j=0;o=0;if(q>>>0>=4){while(1){K[(Q(g,j)<<2)+m>>2]=K[(j<<2)+l>>2];t=j|1;K[(Q(t,g)<<2)+m>>2]=K[(t<<2)+l>>2];t=j|2;K[(Q(t,g)<<2)+m>>2]=K[(t<<2)+l>>2];t=j|3;K[(Q(t,g)<<2)+m>>2]=K[(t<<2)+l>>2];j=j+4|0;o=o+4|0;if((D|0)!=(o|0)){continue}break}}if(!p){break t}while(1){K[(Q(g,j)<<2)+m>>2]=K[(j<<2)+l>>2];j=j+1|0;k=k+1|0;if((p|0)!=(k|0)){continue}break}}l=(s<<2)+l|0;m=(h<<2)+m|0;n=n+1|0;if((r|0)!=(n|0)){continue}break}}C=C+1|0;u=q+u|0;if(u>>>0>>0){continue}break}A=A+1|0;x=r+x|0;if(x>>>0>>0){continue}break}}return 1}function Uc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;h=ra-240|0;ra=h;r=1;a:{if(K[K[a>>2]+60>>2]|K[a+128>>2]){break a}b:{k=K[a+116>>2];c:{if(!k){d=K[a+120>>2];break c}f=K[b+16>>2];g=M[k+4>>1];d=K[a+120>>2];if(!(!d|!K[d+12>>2])){f=L[d+18|0]}d:{if(g){k=K[k>>2];while(1){i=k+Q(e,6)|0;j=M[i>>1];if(j>>>0>=f>>>0){K[h+180>>2]=f;K[h+176>>2]=j;Fa(c,1,13678,h+176|0);r=0;break a}e:{i=M[i+4>>1];if(!i|(i|0)==65535){break e}i=i-1|0;if(i>>>0>>0){break e}K[h+164>>2]=f;K[h+160>>2]=i;Fa(c,1,13678,h+160|0);r=0;break a}e=e+1|0;if((g|0)!=(e|0)){continue}break}break d}if(f){break b}break c}while(1){f=f-1|0;e=0;while(1){if(M[k+Q(e,6)>>1]!=(f|0)){e=e+1|0;if((g|0)!=(e|0)){continue}break b}break}if(f){continue}break}}f:{if(!d){break f}k=K[d+12>>2];if(!k){break f}g:{d=L[d+18|0];h:{if(d){e=0;j=1;while(1){g=K[b+16>>2];f=M[k+(e<<2)>>1];if(g>>>0<=f>>>0){K[h+148>>2]=g;K[h+144>>2]=f;Fa(c,1,13678,h+144|0);j=0}e=e+1|0;if((d|0)!=(e|0)){continue}break}g=Ia(d,4);if(!g){break h}e=0;while(1){f=k+(e<<2)|0;i=L[f+2|0];i:{if(i>>>0>=2){K[h+68>>2]=i;K[h+64>>2]=e;Fa(c,1,12057,h- -64|0);j=0;break i}f=L[f+3|0];if(f>>>0>=d>>>0){K[h+128>>2]=f;Fa(c,1,12001,h+128|0);j=0;break i}l=(i|0)!=1;m=(f<<2)+g|0;if(!(l|!K[m>>2])){K[h+80>>2]=f;Fa(c,1,11490,h+80|0);j=0;break i}if(!(i|!f)){K[h+100>>2]=f;K[h+96>>2]=e;Fa(c,1,11864,h+96|0);j=0;break i}if(!(l|(e|0)==(f|0))){K[h+120>>2]=f;K[h+116>>2]=e;K[h+112>>2]=e;Fa(c,1,11900,h+112|0);j=0;break i}K[m>>2]=1}e=e+1|0;if((d|0)!=(e|0)){continue}break}j=!j;e=0;while(1){j:{f=e<<2;if(L[(f+k|0)+2|0]?K[f+g>>2]:1){e=e+1|0;if((d|0)!=(e|0)){continue}if(j&1){break j}if(K[b+16>>2]!=1){break g}e=0;while(1){if(K[(e<<2)+g>>2]){e=e+1|0;if((d|0)!=(e|0)){continue}break g}break}i=0;Fa(c,2,9216,0);e=0;if(d>>>0>=4){j=d&252;f=0;while(1){m=k+(e<<2)|0;I[m+3|0]=e;I[m+2|0]=1;m=e|1;l=k+(m<<2)|0;I[l+3|0]=m;I[l+2|0]=1;m=e|2;l=k+(m<<2)|0;I[l+3|0]=m;I[l+2|0]=1;m=e|3;l=k+(m<<2)|0;I[l+3|0]=m;I[l+2|0]=1;e=e+4|0;f=f+4|0;if((j|0)!=(f|0)){continue}break}}d=d&3;if(!d){break g}while(1){f=k+(e<<2)|0;I[f+3|0]=e;I[f+2|0]=1;e=e+1|0;i=i+1|0;if((d|0)!=(i|0)){continue}break}break g}K[h+48>>2]=e;j=1;Fa(c,1,11064,h+48|0);e=e+1|0;if((d|0)!=(e|0)){continue}}break}Ga(g);r=0;break a}g=Ia(d,4);if(g){break g}}r=0;Fa(c,1,12248,0);break a}Ga(g)}d=K[a+120>>2];k:{if(!d){break k}t=K[d+12>>2];if(!t){Ga(K[d+4>>2]);Ga(K[K[a+120>>2]+8>>2]);Ga(K[K[a+120>>2]>>2]);d=K[a+120>>2];g=K[d+12>>2];if(g){Ga(g);d=K[a+120>>2]}Ga(d);K[a+120>>2]=0;break k}m=K[b+24>>2];l:{k=L[d+18|0];m:{if(k){v=K[d>>2];j=K[d+4>>2];l=K[d+8>>2];e=0;n:{while(1){if(K[(m+Q(M[t+(e<<2)>>1],52)|0)+44>>2]){e=e+1|0;if((k|0)!=(e|0)){continue}break n}break}K[h+32>>2]=e;Fa(c,1,13840,h+32|0);r=0;break a}g=Ja(Q(k,52));if(!g){break m}i=0;while(1){d=t+(i<<2)|0;e=M[d>>1];f=Q(L[d+2|0]?L[d+3|0]:i,52)+g|0;d=m+Q(e,52)|0;e=K[d+4>>2];K[f>>2]=K[d>>2];K[f+4>>2]=e;K[f+48>>2]=K[d+48>>2];e=K[d+44>>2];K[f+40>>2]=K[d+40>>2];K[f+44>>2]=e;e=K[d+36>>2];K[f+32>>2]=K[d+32>>2];K[f+36>>2]=e;e=K[d+28>>2];K[f+24>>2]=K[d+24>>2];K[f+28>>2]=e;e=K[d+20>>2];K[f+16>>2]=K[d+16>>2];K[f+20>>2]=e;e=K[d+12>>2];K[f+8>>2]=K[d+8>>2];K[f+12>>2]=e;f=Q(i,52)+g|0;d=Ma(Q(K[d+8>>2],K[d+12>>2])<<2);K[f+44>>2]=d;if(!d){if(i){a=i&65535;while(1){Ga(K[(Q(a,52)+g|0)-8>>2]);a=a-1|0;if(a){continue}break}}Ga(g);r=0;Fa(c,1,13788,0);break a}K[f+24>>2]=L[i+l|0];K[f+32>>2]=L[i+j|0];i=i+1|0;if((k|0)!=(i|0)){continue}break}u=M[K[a+120>>2]+16>>1];n=u-1|0;while(1){d=Q(o,52)+g|0;i=Q(K[d+12>>2],K[d+8>>2]);f=t+(o<<2)|0;e=K[(m+Q(M[f>>1],52)|0)+44>>2];o:{if(!L[f+2|0]){if(!i){break o}l=K[d+44>>2];j=0;f=0;if(i>>>0>=4){q=i&-4;d=0;while(1){p=f<<2;K[p+l>>2]=K[e+p>>2];s=p|4;K[s+l>>2]=K[e+s>>2];s=p|8;K[s+l>>2]=K[e+s>>2];p=p|12;K[p+l>>2]=K[e+p>>2];f=f+4|0;d=d+4|0;if((q|0)!=(d|0)){continue}break}}d=i&3;if(!d){break o}while(1){i=f<<2;K[i+l>>2]=K[e+i>>2];f=f+1|0;j=j+1|0;if((d|0)!=(j|0)){continue}break}break o}if(!i){break o}d=L[f+3|0];j=(d<<2)+v|0;l=K[(Q(d,52)+g|0)+44>>2];f=0;if((i|0)!=1){s=i&-2;d=0;while(1){q=f<<2;p=K[q+e>>2];K[l+q>>2]=K[j+(Q(k,(p|0)>=0?(p|0)<(u|0)?p:n:0)<<2)>>2];q=q|4;p=K[q+e>>2];K[l+q>>2]=K[j+(Q(k,(p|0)>=0?(p|0)<(u|0)?p:n:0)<<2)>>2];f=f+2|0;d=d+2|0;if((s|0)!=(d|0)){continue}break}}if(!(i&1)){break o}f=f<<2;d=K[f+e>>2];K[f+l>>2]=K[j+(Q(k,(d|0)>=0?(d|0)<(u|0)?d:n:0)<<2)>>2]}o=o+1|0;if((k|0)!=(o|0)){continue}break}break l}g=Ja(Q(k,52));if(g){break l}}r=0;Fa(c,1,13788,0);break a}d=K[b+16>>2];if(d){e=0;while(1){f=K[(m+Q(e,52)|0)+44>>2];if(f){Ga(f)}e=e+1|0;if((d|0)!=(e|0)){continue}break}}Ga(m);K[b+16>>2]=k;K[b+24>>2]=g}e=K[a+116>>2];if(!e){break a}j=K[e>>2];l=M[e+4>>1];if(l){t=j+6|0;e=0;u=l-2&65535;i=1;while(1){d=K[b+16>>2];p=Q(e,6)+j|0;f=M[p>>1];p:{if(d>>>0<=f>>>0){K[h+20>>2]=d;K[h+16>>2]=f;Fa(c,2,7297,h+16|0);break p}g=M[p+4>>1];if((g+1&65535)>>>0<=1){J[(K[b+24>>2]+Q(f,52)|0)+48>>1]=M[p+2>>1];break p}k=g-1|0;m=k&65535;if(m>>>0>=d>>>0){K[h+4>>2]=d;K[h>>2]=m;Fa(c,2,7256,h);break p}q:{if(M[p+2>>1]|(f|0)==(m|0)){break q}g=K[b+24>>2];d=g+Q(f,52)|0;K[h+232>>2]=K[d+48>>2];n=K[d+44>>2];K[h+224>>2]=K[d+40>>2];K[h+228>>2]=n;n=K[d+36>>2];K[h+216>>2]=K[d+32>>2];K[h+220>>2]=n;n=K[d+28>>2];K[h+208>>2]=K[d+24>>2];K[h+212>>2]=n;n=K[d+20>>2];K[h+200>>2]=K[d+16>>2];K[h+204>>2]=n;n=K[d+12>>2];K[h+192>>2]=K[d+8>>2];K[h+196>>2]=n;n=K[d+4>>2];K[h+184>>2]=K[d>>2];K[h+188>>2]=n;n=Q(m,52);g=n+g|0;K[d+48>>2]=K[g+48>>2];o=K[g+44>>2];K[d+40>>2]=K[g+40>>2];K[d+44>>2]=o;o=K[g+36>>2];K[d+32>>2]=K[g+32>>2];K[d+36>>2]=o;o=K[g+28>>2];K[d+24>>2]=K[g+24>>2];K[d+28>>2]=o;o=K[g+20>>2];K[d+16>>2]=K[g+16>>2];K[d+20>>2]=o;o=K[g+12>>2];K[d+8>>2]=K[g+8>>2];K[d+12>>2]=o;o=K[g+4>>2];K[d>>2]=K[g>>2];K[d+4>>2]=o;g=K[h+188>>2];d=n+K[b+24>>2]|0;K[d>>2]=K[h+184>>2];K[d+4>>2]=g;K[d+48>>2]=K[h+232>>2];g=K[h+228>>2];K[d+40>>2]=K[h+224>>2];K[d+44>>2]=g;g=K[h+220>>2];K[d+32>>2]=K[h+216>>2];K[d+36>>2]=g;g=K[h+212>>2];K[d+24>>2]=K[h+208>>2];K[d+28>>2]=g;g=K[h+204>>2];K[d+16>>2]=K[h+200>>2];K[d+20>>2]=g;g=K[h+196>>2];K[d+8>>2]=K[h+192>>2];K[d+12>>2]=g;if(l>>>0<=e+1>>>0){break q}g=i;if(!(e-l&1)){g=k;d=Q(i,6)+j|0;n=M[d>>1];r:{if((n|0)!=(f|0)){g=f;if((n|0)!=(m|0)){break r}}J[d>>1]=g}g=i+1|0}if((u|0)==(e&65535)){break q}while(1){d=k;n=Q(g,6);o=n+j|0;q=M[o>>1];s:{if((q|0)!=(f|0)){d=f;if((m|0)!=(q|0)){break s}}J[o>>1]=d}d=k;n=n+t|0;o=M[n>>1];t:{if((o|0)!=(f|0)){d=f;if((m|0)!=(o|0)){break t}}J[n>>1]=d}g=g+2|0;if((l|0)!=(g&65535)){continue}break}}J[(K[b+24>>2]+Q(f,52)|0)+48>>1]=M[p+2>>1]}i=i+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}e=K[a+116>>2];j=K[e>>2]}if(j){Ga(j);e=K[a+116>>2]}Ga(e);K[a+116>>2]=0;break a}r=0;Fa(c,1,9462,0)}ra=h+240|0;return r}function dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=R(0);k=ra-48|0;ra=k;K[a+8>>2]=1;a:{b:{d=k+40|0;c:{if((Na(b,d,2,c)|0)!=2){break c}Ha(d,k+44|0,2);if(K[k+44>>2]!=65359){break c}K[a+8>>2]=2;d=K[b+56>>2];e=d-2|0;d=K[b+60>>2]-(d>>>0<2)|0;g=K[a+224>>2];K[g>>2]=e;K[g+4>>2]=d;K[k+16>>2]=e;K[k+20>>2]=d;Fa(c,4,12732,k+16|0);f=K[a+224>>2];j=K[f>>2];e=K[f+24>>2];d=e+1|0;g=K[f+32>>2];if(d>>>0<=g>>>0){g=K[f+28>>2];break b}o=R(R(g>>>0)+R(100));if(o=R(0)){d=~~o>>>0}else{d=0}K[f+32>>2]=d;g=La(K[f+28>>2],Q(d,24));if(g){K[f+28>>2]=g;e=K[f+24>>2];d=e+1|0;break b}Ga(K[f+28>>2]);K[f+32>>2]=0;K[f+24>>2]=0;K[f+28>>2]=0;Fa(c,1,3862,0)}Fa(c,1,15619,0);a=0;break a}e=Q(e,24)+g|0;K[e+16>>2]=2;K[e+8>>2]=j;K[e+12>>2]=j>>31;J[e>>1]=65359;K[f+24>>2]=d;if((Na(b,K[a+16>>2],2,c)|0)!=2){Fa(c,1,2435,0);a=0;break a}Ha(K[a+16>>2],k+40|0,2);d:{e:{g=K[k+40>>2];if((g|0)!=65424){while(1){e=24864;if(g>>>0<=65279){K[k>>2]=g;Fa(c,1,2231,k);a=0;break a}while(1){d=e;f=K[d>>2];if(f){e=d+12|0;if((f|0)!=(g|0)){continue}}break}f:{g:{if(f){break g}h=2;Fa(c,2,3810,0);e=2435;h:{i:{if((Na(b,K[a+16>>2],2,c)|0)!=2){break i}while(1){Ha(K[a+16>>2],k+44|0,2);f=24864;g=K[k+44>>2];if(g>>>0>=65280){while(1){d=f;i=K[d>>2];if(i){f=d+12|0;if((g|0)!=(i|0)){continue}}break}if(!(K[d+4>>2]&K[a+8>>2])){e=5360;break i}if(i){if((i|0)==65424){K[k+40>>2]=65424;break f}j=K[b+56>>2];f=K[a+224>>2];d=K[f+24>>2];g=d+1|0;e=K[f+32>>2];if(g>>>0<=e>>>0){e=K[f+28>>2];break h}o=R(R(e>>>0)+R(100));if(o=R(0)){d=~~o>>>0}else{d=0}K[f+32>>2]=d;e=La(K[f+28>>2],Q(d,24));if(e){K[f+28>>2]=e;d=K[f+24>>2];g=d+1|0;break h}Ga(K[f+28>>2]);K[f+32>>2]=0;K[f+24>>2]=0;K[f+28>>2]=0;e=3862;break i}h=h+2|0}if((Na(b,K[a+16>>2],2,c)|0)==2){continue}break}}Fa(c,1,e,0);Fa(c,1,9810,0);a=0;break a}d=Q(d,24)+e|0;K[d+16>>2]=h;e=j-h|0;K[d+8>>2]=e;K[d+12>>2]=e>>31;J[d>>1]=0;K[f+24>>2]=g;K[k+40>>2]=i;g=24864;while(1){d=g;f=K[d>>2];if(!f){break g}g=d+12|0;if((f|0)!=(i|0)){continue}break}}if(!(K[d+4>>2]&K[a+8>>2])){Fa(c,1,5360,0);a=0;break a}if((Na(b,K[a+16>>2],2,c)|0)!=2){Fa(c,1,2435,0);a=0;break a}Ha(K[a+16>>2],k+36|0,2);e=K[k+36>>2];if(e>>>0<=1){Fa(c,1,6037,0);a=0;break a}e=e-2|0;K[k+36>>2]=e;g=K[a+16>>2];if(N[a+20>>2]>>0){g=La(g,e);if(!g){Ga(K[a+16>>2]);K[a+16>>2]=0;K[a+20>>2]=0;Fa(c,1,4936,0);a=0;break a}K[a+16>>2]=g;e=K[k+36>>2];K[a+20>>2]=e}e=Na(b,g,e,c);if((e|0)!=K[k+36>>2]){Fa(c,1,2435,0);a=0;break a}if(!(va[K[d+8>>2]](a,K[a+16>>2],e,c)|0)){Fa(c,1,2453,0);a=0;break a}j=K[b+56>>2];i=K[k+36>>2];d=K[a+224>>2];h=K[d+24>>2];e=h+1|0;g=K[d+32>>2];j:{if(e>>>0<=g>>>0){g=K[d+28>>2];break j}o=R(R(g>>>0)+R(100));if(o=R(0)){e=~~o>>>0}else{e=0}K[d+32>>2]=e;g=La(K[d+28>>2],Q(e,24));if(!g){break d}K[d+28>>2]=g;h=K[d+24>>2];e=h+1|0}g=Q(h,24)+g|0;K[g+16>>2]=i+4;j=(j-i|0)-4|0;K[g+8>>2]=j;K[g+12>>2]=j>>31;J[g>>1]=f;K[d+24>>2]=e;if((Na(b,K[a+16>>2],2,c)|0)!=2){Fa(c,1,2435,0);a=0;break a}m=(f|0)==65372?1:m;l=(f|0)==65362?1:l;n=(f|0)==65361?1:n;Ha(K[a+16>>2],k+40|0,2);g=K[k+40>>2];if((g|0)!=65424){continue}}break}if(n){break e}}Fa(c,1,4748,0);a=0;break a}if(!l){Fa(c,1,4794,0);a=0;break a}if(!m){Fa(c,1,4840,0);a=0;break a}d=0;e=0;h=0;j=ra-16|0;ra=j;m=1;k:{if(!(I[a+212|0]&1)){break k}l:{f=K[a+136>>2];if(!f){break l}m:{while(1){g=K[a+140>>2]+(h<<3)|0;i=K[g>>2];if(i){l=K[g+4>>2];g=d-l|0;g=d>>>0>=g>>>0?g:0;if(d>>>0>>0){f=l-d|0;l=d+i|0;while(1){if(f>>>0<4){d=5634;break m}Ha(l,j+12|0,4);d=K[j+12>>2];if((d^-1)>>>0>>0){d=5608;break m}i=f-4|0;n=i>>>0>>0;g=n?d-i|0:g;e=d+e|0;f=i-d|0;l=((n?0:d)+l|0)+4|0;if(d>>>0>>0){continue}break}f=K[a+136>>2]}d=g}h=h+1|0;if(h>>>0>>0){continue}break}if(!d){break l}m=0;Fa(c,1,3030,0);break k}m=0;Fa(c,1,d,0);break k}d=Ja(e);K[a+160>>2]=d;if(!d){m=0;Fa(c,1,4300,0);break k}K[a+148>>2]=e;h=K[a+140>>2];n:{f=K[a+136>>2];if(f){e=0;d=0;g=0;while(1){i=g<<3;n=i+h|0;l=K[n>>2];if(l){h=K[a+160>>2]+d|0;f=K[n+4>>2];o:{if(f>>>0<=e>>>0){if(f){E(h,l,f)}d=d+f|0;e=e-f|0;break o}if(e){E(h,l,e)}d=d+e|0;h=f-e|0;e=e+l|0;while(1){if(h>>>0<4){break n}Ha(e,j+8|0,4);e=e+4|0;l=K[a+160>>2]+d|0;f=h-4|0;h=K[j+8>>2];if(f>>>0>>0){if(f){E(l,e,f)}d=d+f|0;e=K[j+8>>2]-f|0;break o}if(h){E(l,e,h)}h=K[j+8>>2];d=h+d|0;e=e+h|0;h=f-h|0;if(h){continue}break}e=0}Ga(K[i+K[a+140>>2]>>2]);h=K[a+140>>2];f=i+h|0;K[f>>2]=0;K[f+4>>2]=0;f=K[a+136>>2]}g=g+1|0;if(g>>>0>>0){continue}break}e=K[a+148>>2];d=K[a+160>>2]}K[a+168>>2]=e;K[a+144>>2]=d;K[a+136>>2]=0;Ga(h);K[a+140>>2]=0;break k}m=0;Fa(c,1,5634,0)}ra=j+16|0;if(!m){Fa(c,1,8048,0);a=0;break a}Fa(c,4,11717,0);d=K[a+224>>2];e=K[b+56>>2];e=e-2|0;K[d+8>>2]=e;K[d+12>>2]=0;b=0;h=0;l=ra-16|0;ra=l;g=K[a+68>>2];p:{if(!g){K[a+76>>2]=1;break p}if(K[a+76>>2]){break p}d=K[a+72>>2];j=K[a+224>>2];e=K[j+40>>2];if((g|0)!=1){m=g&-2;while(1){i=(b<<3)+d|0;n=M[i>>1];f=e+Q(n,40)|0;K[f>>2]=n;K[f+8>>2]=K[f+8>>2]+1;i=M[i+8>>1];f=e+Q(i,40)|0;K[f>>2]=i;K[f+8>>2]=K[f+8>>2]+1;b=b+2|0;h=h+2|0;if((m|0)!=(h|0)){continue}break}}if(g&1){f=M[(b<<3)+d>>1];b=e+Q(f,40)|0;K[b>>2]=f;K[b+8>>2]=K[b+8>>2]+1}f=K[j+36>>2];q:{if(f){b=0;while(1){if(!K[(e+Q(b,40)|0)+8>>2]){K[l>>2]=b;Fa(c,1,9267,l);break q}b=b+1|0;if((f|0)!=(b|0)){continue}break}}f=K[j+8>>2];b=K[j+12>>2];e=0;while(1){r:{i=e<<3;m=K[K[a+224>>2]+40>>2]+Q(M[i+d>>1],40)|0;h=K[m+16>>2];if(!h){h=Ia(K[m+8>>2],24);K[m+16>>2]=h;if(!h){break r}g=K[a+68>>2];d=K[a+72>>2]}n=h;h=K[m+4>>2];j=n+Q(h,24)|0;K[j>>2]=f;K[j+4>>2]=b;i=K[(d+i|0)+4>>2];f=i+f|0;K[j+16>>2]=f;b=f>>>0>>0?b+1|0:b;K[j+20>>2]=b;K[m+4>>2]=h+1;e=e+1|0;if(e>>>0>>0){continue}break p}break}Fa(c,1,6845,0)}K[a+76>>2]=1;if(!K[a+68>>2]){break p}d=K[K[a+224>>2]+40>>2];b=0;while(1){c=Q(M[K[a+72>>2]+(b<<3)>>1],40);d=c+d|0;K[d+8>>2]=0;Ga(K[d+16>>2]);d=K[K[a+224>>2]+40>>2];K[(c+d|0)+16>>2]=0;b=b+1|0;if(b>>>0>2]){continue}break}}ra=l+16|0;K[a+8>>2]=8;a=1;break a}Ga(K[d+28>>2]);K[d+32>>2]=0;K[d+24>>2]=0;K[d+28>>2]=0;Fa(c,1,3862,0);a=0}ra=k+48|0;return a|0}function ze(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;f=ra-160|0;ra=f;a:{if(c>>>0<=35){c=0;Fa(d,1,6058,0);break a}c=c-36|0;h=(c>>>0)/3|0;if((Q(h,3)|0)!=(c|0)){c=0;Fa(d,1,6058,0);break a}j=K[a+96>>2];c=f+156|0;Ha(b,c,2);J[a+104>>1]=K[f+156>>2];Ha(b+2|0,j+8|0,4);Ha(b+6|0,j+12|0,4);Ha(b+10|0,j,4);Ha(b+14|0,j+4|0,4);Ha(b+18|0,a+116|0,4);Ha(b+22|0,a+120|0,4);Ha(b+26|0,a+108|0,4);Ha(b+30|0,a+112|0,4);Ha(b+34|0,c,2);b:{c:{d:{c=K[f+156>>2];if(c>>>0<=16384){K[j+16>>2]=c;if((c|0)!=(h|0)){K[f+132>>2]=h;K[f+128>>2]=c;Fa(d,1,14943,f+128|0);c=0;break a}c=K[j+4>>2];g=K[j+12>>2];l=K[j+8>>2];e=K[j>>2];if(!(c>>>0>>0&l>>>0>e>>>0)){K[f+120>>2]=g-c;K[f+124>>2]=0-(c>>>0>g>>>0);K[f+112>>2]=l-e;K[f+116>>2]=0-(e>>>0>l>>>0);Fa(d,1,14505,f+112|0);c=0;break a}i=K[a+116>>2];k=K[a+120>>2];if(!(k?i:0)){K[f+4>>2]=k;K[f>>2]=i;Fa(d,1,15057,f);c=0;break a}e:{n=K[a+108>>2];f:{if(n>>>0>e>>>0){break f}i=i+n|0;if(e>>>0>=(i>>>0>>0?-1:i)>>>0){break f}i=K[a+112>>2];if(i>>>0>c>>>0){break f}k=i+k|0;if(c>>>0<(i>>>0>k>>>0?-1:k)>>>0){break e}}c=0;Fa(d,1,2755,0);break a}g:{if(K[a+248>>2]){break g}i=K[a+240>>2];if(!i){break g}k=K[a+244>>2];if(!k){break g}e=l-e|0;c=g-c|0;if((e|0)==(i|0)&(c|0)==(k|0)){break g}K[f+108>>2]=c;K[f+104>>2]=e;K[f+100>>2]=k;K[f+96>>2]=i;Fa(d,1,13969,f+96|0);c=0;break a}e=Ia(h,52);K[j+24>>2]=e;if(!e){break d}h:{if(!K[j+16>>2]){break h}c=f+152|0;Ha(b+36|0,c,1);h=K[f+152>>2];k=h>>>7|0;K[e+32>>2]=k;n=(h&127)+1|0;K[e+24>>2]=n;l=K[a+248>>2];Ha(b+37|0,c,1);K[e>>2]=K[f+152>>2];Ha(b+38|0,c,1);g=K[f+152>>2];K[e+4>>2]=g;c=0;i=K[e>>2];if(i-256>>>0<4294967041){h=0;break b}h=0;if(g-256>>>0<4294967041){break b}g=K[e+24>>2];if(g>>>0>31){break c}K[e+36>>2]=0;K[e+40>>2]=K[a+184>>2];h=1;if(N[j+16>>2]<=1){break h}k=l?0:k;l=l?0:n;b=b+39|0;while(1){Ha(b,f+152|0,1);i=K[f+152>>2];g=i>>>7|0;K[e+84>>2]=g;i=(i&127)+1|0;K[e+76>>2]=i;if(!(K[a+248>>2]|(L[a+212|0]&4|(i|0)==(l|0)&(g|0)==(k|0)))){K[f+84>>2]=g;K[f+80>>2]=i;K[f+76>>2]=h;K[f+72>>2]=k;K[f+68>>2]=l;K[f+64>>2]=h;Fa(d,2,14741,f- -64|0)}g=f+152|0;Ha(b+1|0,g,1);K[e+52>>2]=K[f+152>>2];Ha(b+2|0,g,1);g=K[f+152>>2];K[e+56>>2]=g;i=K[e+52>>2];if(i-256>>>0<4294967041|g-256>>>0<=4294967040){break b}g=K[e+76>>2];if(g>>>0>=32){break c}b=b+3|0;K[e+88>>2]=0;K[e+92>>2]=K[a+184>>2];e=e+52|0;h=h+1|0;if(h>>>0>2]){continue}break}}c=0;h=K[a+116>>2];if(!h){break a}g=K[a+120>>2];if(!g){break a}l=0-!h|0;e=l;p=K[a+108>>2];k=K[j+8>>2]-p|0;i=h-1|0;b=k+i|0;e=k>>>0>b>>>0?e+1|0:e;b=Ne(b,e,h,0);K[a+128>>2]=b;n=0-!g|0;e=n;q=K[a+112>>2];o=K[j+12>>2]-q|0;m=o;k=g-1|0;o=o+k|0;e=m>>>0>o>>>0?e+1|0:e;e=Ne(o,e,g,0);K[a+132>>2]=e;i:{if(!(!b|!e)){if(b>>>0<=65535/(e>>>0)>>>0){break i}}K[f+20>>2]=e;K[f+16>>2]=b;Fa(d,1,14083,f+16|0);break a}o=Q(b,e);j:{if(L[a+92|0]&2){K[a+28>>2]=(K[a+28>>2]-p>>>0)/(h>>>0);K[a+32>>2]=(K[a+32>>2]-q>>>0)/(g>>>0);e=l;b=K[a+36>>2]-p|0;m=b;b=b+i|0;e=m>>>0>b>>>0?e+1|0:e;v=a,w=Ne(b,e,h,0),K[v+36>>2]=w;e=n;b=K[a+40>>2]-q|0;m=b;b=b+k|0;e=m>>>0>b>>>0?e+1|0:e;v=a,w=Ne(b,e,g,0),K[v+40>>2]=w;break j}K[a+40>>2]=e;K[a+36>>2]=b;K[a+28>>2]=0;K[a+32>>2]=0}b=Ia(o,5644);K[a+180>>2]=b;if(!b){Fa(d,1,3898,0);break a}b=Ia(K[j+16>>2],1080);K[K[a+12>>2]+5584>>2]=b;if(!K[K[a+12>>2]+5584>>2]){Fa(d,1,3898,0);break a}b=Ia(10,20);K[K[a+12>>2]+5616>>2]=b;b=K[a+12>>2];if(!K[b+5616>>2]){Fa(d,1,3898,0);break a}K[b+5624>>2]=10;b=Ia(10,20);K[K[a+12>>2]+5628>>2]=b;b=K[a+12>>2];if(!K[b+5628>>2]){Fa(d,1,3898,0);break a}K[b+5636>>2]=10;h=K[j+16>>2];k:{if(!h){break k}g=K[j+24>>2];b=0;if((h|0)!=1){l=h&-2;e=0;while(1){i=g+Q(b,52)|0;if(!K[i+32>>2]){K[(K[K[a+12>>2]+5584>>2]+Q(b,1080)|0)+1076>>2]=1<>2]-1}i=b|1;k=g+Q(i,52)|0;if(!K[k+32>>2]){K[(K[K[a+12>>2]+5584>>2]+Q(i,1080)|0)+1076>>2]=1<>2]-1}b=b+2|0;e=e+2|0;if((l|0)!=(e|0)){continue}break}}if(!(h&1)){break k}e=g+Q(b,52)|0;if(K[e+32>>2]){break k}K[(K[K[a+12>>2]+5584>>2]+Q(b,1080)|0)+1076>>2]=1<>2]-1}if(o){b=K[a+180>>2];e=0;while(1){h=Ia(K[j+16>>2],1080);K[b+5584>>2]=h;if(!h){Fa(d,1,3898,0);break a}b=b+5644|0;e=e+1|0;if(o>>>0>e>>>0){continue}break}}b=Q(K[a+132>>2],K[a+128>>2]);K[K[a+224>>2]+36>>2]=b;b=Ia(b,40);d=K[a+224>>2];K[d+40>>2]=b;e=0;l:{if(!b){break l}e=1;if(!K[d+36>>2]){break l}d=0;while(1){m:{e=0;g=Q(d,40);b=g+b|0;K[b+20>>2]=0;K[b+28>>2]=100;h=Ia(100,24);l=K[a+224>>2];b=K[l+40>>2];K[(g+b|0)+24>>2]=h;if(!h){break m}e=1;d=d+1|0;if(d>>>0>2]){continue}}break}}if(!e){break a}K[a+8>>2]=4;r=K[j+16>>2];if(r){b=K[a+112>>2];d=K[a+120>>2];c=b+Q(d,K[a+132>>2]-1|0)|0;d=c+d|0;c=c>>>0>d>>>0?-1:d;d=K[j+12>>2];c=c>>>0>>0?c:d;l=c-1|0;k=0-!c|0;c=K[a+108>>2];d=K[a+116>>2];a=c+Q(d,K[a+128>>2]-1|0)|0;d=a+d|0;a=a>>>0>d>>>0?-1:d;d=K[j+8>>2];a=a>>>0>>0?a:d;i=a-1|0;n=0-!a|0;a=K[j+4>>2];b=a>>>0>>0?b:a;o=b-1|0;p=0-!b|0;a=K[j>>2];b=a>>>0>>0?c:a;q=b-1|0;u=0-!b|0;a=K[j+24>>2];b=0;while(1){e=p;d=K[a+4>>2];c=d+o|0;j=Ne(c,c>>>0>>0?e+1|0:e,d,0);K[a+20>>2]=j;e=u;h=K[a>>2];c=h+q|0;s=Ne(c,c>>>0>>0?e+1|0:e,h,0);K[a+16>>2]=s;c=K[a+40>>2];g=c&31;if((c&63)>>>0>=32){e=-1<>>32-g}g=m^-1;e=e^-1;m=e;e=k;t=d+l|0;e=t>>>0>>0?e+1|0:e;e=Ne(t,e,d,0)-j|0;d=m;j=e;e=e+g|0;d=j>>>0>e>>>0?d+1|0:d;j=e;e=c&31;if((c&63)>>>0>=32){d=d>>>e|0}else{d=((1<>>e}K[a+12>>2]=d;e=n;d=h+i|0;e=d>>>0>>0?e+1|0:e;d=Ne(d,e,h,0)-s|0;e=m;d=d+g|0;e=d>>>0>>0?e+1|0:e;h=d;d=c&31;if((c&63)>>>0>=32){c=e>>>d|0}else{c=((1<>>d}K[a+8>>2]=c;a=a+52|0;b=b+1|0;if((r|0)!=(b|0)){continue}break}}c=1;break a}K[f+144>>2]=c;Fa(d,1,7895,f+144|0);c=0;break a}c=0;K[j+16>>2]=0;Fa(d,1,3898,0);break a}K[f+52>>2]=g;K[f+48>>2]=h;Fa(d,1,15365,f+48|0);break a}K[f+40>>2]=g;K[f+36>>2]=i;K[f+32>>2]=h;Fa(d,1,14303,f+32|0)}ra=f+160|0;return c|0}function Jc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;j=ra+-64|0;ra=j;K[j+60>>2]=b;z=j+39|0;t=j+40|0;a:{b:{c:{d:{e:while(1){h=0;f:while(1){k=b;if((o^2147483647)<(h|0)){break d}o=h+o|0;g:{h:{i:{j:{h=b;i=L[h|0];if(i){while(1){k:{b=i&255;l:{if(!b){b=h;break l}if((b|0)!=37){break k}i=h;while(1){if(L[i+1|0]!=37){b=i;break l}h=h+1|0;n=L[i+2|0];b=i+2|0;i=b;if((n|0)==37){continue}break}}h=h-k|0;y=o^2147483647;if((h|0)>(y|0)){break d}if(a){Pa(a,k,h)}if(h){continue f}K[j+60>>2]=b;h=b+1|0;q=-1;i=I[b+1|0]-48|0;if(!(L[b+2|0]!=36|i>>>0>9)){x=1;q=i;h=b+3|0}K[j+60>>2]=h;l=0;i=I[h|0];b=i-32|0;m:{if(b>>>0>31){n=h;break m}n=h;b=1<>2]=n;l=b|l;i=I[h+1|0];b=i-32|0;if(b>>>0>=32){break m}h=n;b=1<>>0>9)){p:{if(!a){K[(b<<2)+e>>2]=10;b=0;break p}b=K[(b<<3)+d>>2]}p=b;b=n+3|0;i=1;break o}if(x){break j}b=n+1|0;if(!a){K[j+60>>2]=b;x=0;p=0;break n}h=K[c>>2];K[c>>2]=h+4;p=K[h>>2];i=0}x=i;K[j+60>>2]=b;if((p|0)>=0){break n}p=0-p|0;l=l|8192;break n}p=Ic(j+60|0);if((p|0)<0){break d}b=K[j+60>>2]}h=0;m=-1;u=0;q:{if(L[b|0]!=46){break q}if(L[b+1|0]==42){i=I[b+2|0]-48|0;r:{if(!(L[b+3|0]!=36|i>>>0>9)){b=b+4|0;s:{if(!a){K[(i<<2)+e>>2]=10;m=0;break s}m=K[(i<<3)+d>>2]}break r}if(x){break j}b=b+2|0;m=0;if(!a){break r}i=K[c>>2];K[c>>2]=i+4;m=K[i>>2]}K[j+60>>2]=b;u=(m|0)>=0;break q}K[j+60>>2]=b+1;m=Ic(j+60|0);b=K[j+60>>2];u=1}while(1){v=h;n=28;r=b;i=I[b|0];if(i-123>>>0<4294967238){break c}b=b+1|0;h=L[(i+Q(h,58)|0)+25215|0];if((h-1&255)>>>0<8){continue}break}K[j+60>>2]=b;t:{if((h|0)!=27){if(!h){break c}if((q|0)>=0){if(!a){K[(q<<2)+e>>2]=h;continue e}h=(q<<3)+d|0;i=K[h+4>>2];K[j+48>>2]=K[h>>2];K[j+52>>2]=i;break t}if(!a){break g}Hc(j+48|0,h,c,g);break t}if((q|0)>=0){break c}h=0;if(!a){continue f}}if(L[a|0]&32){break b}i=l&-65537;l=l&8192?i:l;q=0;w=1072;n=t;u:{v:{w:{x:{y:{z:{A:{B:{C:{D:{E:{F:{G:{H:{I:{J:{K:{r=L[r|0];h=r<<24>>24;h=v?(r&15)==3?h&-45:h:h;switch(h-88|0){case 0:case 32:break G;case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 10:case 16:case 18:case 19:case 20:case 21:case 25:case 26:case 28:case 30:case 31:break h;case 9:case 13:case 14:case 15:break u;case 11:break B;case 12:case 17:break E;case 22:break I;case 23:break F;case 24:break H;case 27:break A;case 29:break J;default:break K}}L:{switch(h-65|0){case 1:case 3:break h;case 0:case 4:case 5:case 6:break u;case 2:break z;default:break L}}if((h|0)==83){break y}break h}i=K[j+48>>2];r=K[j+52>>2];w=1072;break D}h=0;M:{switch(v|0){case 0:K[K[j+48>>2]>>2]=o;continue f;case 1:K[K[j+48>>2]>>2]=o;continue f;case 2:k=K[j+48>>2];K[k>>2]=o;K[k+4>>2]=o>>31;continue f;case 3:J[K[j+48>>2]>>1]=o;continue f;case 4:I[K[j+48>>2]]=o;continue f;case 6:K[K[j+48>>2]>>2]=o;continue f;case 7:break M;default:continue f}}k=K[j+48>>2];K[k>>2]=o;K[k+4>>2]=o>>31;continue f}m=m>>>0<=8?8:m;l=l|8;h=120}b=t;k=K[j+52>>2];r=k;i=K[j+48>>2];s=i;if(i|k){A=h&32;while(1){b=b-1|0;I[b|0]=A|L[(s&15)+25744|0];v=!k&s>>>0>15|(k|0)!=0;s=(k&15)<<28|s>>>4;k=k>>>4|0;if(v){continue}break}}k=b;if(!(l&8)|!(i|r)){break C}w=(h>>>4|0)+1072|0;q=2;break C}b=t;k=K[j+52>>2];r=k;i=K[j+48>>2];s=i;if(i|k){while(1){b=b-1|0;I[b|0]=s&7|48;v=!k&s>>>0>7|(k|0)!=0;s=(k&7)<<29|s>>>3;k=k>>>3|0;if(v){continue}break}}k=b;if(!(l&8)){break C}b=t-b|0;m=(b|0)<(m|0)?m:b+1|0;break C}i=K[j+48>>2];b=K[j+52>>2];r=b;if((b|0)<0){h=0-(b+((i|0)!=0)|0)|0;r=h;i=0-i|0;K[j+48>>2]=i;K[j+52>>2]=h;q=1;w=1072;break D}if(l&2048){q=1;w=1073;break D}q=l&1;w=q?1074:1072}k=fb(i,r,t)}if((m|0)<0&u){break d}l=u?l&-65537:l;if(!((i|r)!=0|m)){k=t;m=0;break h}b=!(i|r)+(t-k|0)|0;m=(b|0)<(m|0)?m:b;break h}h=L[j+48|0];break i}h=m>>>0>=2147483647?2147483647:m;l=h;n=(h|0)!=0;b=K[j+48>>2];k=b?b:1649;b=k;N:{O:{P:{Q:{if(!(b&3)|!h){break Q}while(1){if(!L[b|0]){break P}l=l-1|0;n=(l|0)!=0;b=b+1|0;if(!(b&3)){break Q}if(l){continue}break}}if(!n){break O}if(!(!L[b|0]|l>>>0<4)){while(1){n=K[b>>2];if(((16843008-n|n)&-2139062144)!=-2139062144){break P}b=b+4|0;l=l-4|0;if(l>>>0>3){continue}break}}if(!l){break O}}while(1){if(!L[b|0]){break N}b=b+1|0;l=l-1|0;if(l){continue}break}}b=0}b=b?b-k|0:h;n=b+k|0;if((m|0)>=0){l=i;m=b;break h}l=i;m=b;if(L[n|0]){break d}break h}h=K[j+48>>2];if(h|K[j+52>>2]){break x}h=0;break i}if(m){i=K[j+48>>2];break w}h=0;Ra(a,32,p,0,l);break v}K[j+12>>2]=0;K[j+8>>2]=h;i=j+8|0;K[j+48>>2]=i;m=-1}h=0;while(1){R:{k=K[i>>2];if(!k){break R}k=Gc(j+4|0,k);if((k|0)<0){break b}if(k>>>0>m-h>>>0){break R}i=i+4|0;h=h+k|0;if(m>>>0>h>>>0){continue}}break}n=61;if((h|0)<0){break c}Ra(a,32,p,h,l);if(!h){h=0;break v}n=0;i=K[j+48>>2];while(1){k=K[i>>2];if(!k){break v}m=j+4|0;k=Gc(m,k);n=k+n|0;if(n>>>0>h>>>0){break v}Pa(a,m,k);i=i+4|0;if(h>>>0>n>>>0){continue}break}}Ra(a,32,p,h,l^8192);h=(h|0)<(p|0)?p:h;continue f}if((m|0)<0&u){break d}n=61;h=va[f|0](a,P[j+48>>3],p,m,l,h)|0;if((h|0)>=0){continue f}break c}i=L[h+1|0];h=h+1|0;continue}}if(a){break a}if(!x){break g}h=1;while(1){a=K[(h<<2)+e>>2];if(a){Hc((h<<3)+d|0,a,c,g);o=1;h=h+1|0;if((h|0)!=10){continue}break a}break}if(h>>>0>=10){o=1;break a}while(1){if(K[(h<<2)+e>>2]){break j}o=1;h=h+1|0;if((h|0)!=10){continue}break}break a}n=28;break c}I[j+39|0]=h;m=1;k=z;l=i}i=n-k|0;m=(i|0)<(m|0)?m:i;if((m|0)>(q^2147483647)){break d}n=61;b=m+q|0;h=(b|0)<(p|0)?p:b;if((y|0)<(h|0)){break c}Ra(a,32,h,b,l);Pa(a,w,q);Ra(a,48,h,b,l^65536);Ra(a,48,m,i,0);Pa(a,k,i);Ra(a,32,h,b,l^8192);b=K[j+60>>2];continue}break}break}o=0;break a}n=61}K[6585]=n}o=-1}ra=j- -64|0;return o}function ud(a,b,c,d,e,f){a=a|0;b=+b;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0;n=ra-560|0;ra=n;K[n+44>>2]=0;A(+b);h=v(1)|0;v(0)|0;a:{if((h|0)<0){t=1;y=1082;b=-b;A(+b);h=v(1)|0;v(0)|0;break a}if(e&2048){t=1;y=1085;break a}t=e&1;y=t?1088:1083;z=!t}b:{if((h&2146435072)==2146435072){h=t+3|0;Ra(a,32,c,h,e&-65537);Pa(a,y,t);d=f&32;Pa(a,b!=b?d?1170:1398:d?1275:1439,3);Ra(a,32,c,h,e^8192);m=(c|0)>(h|0)?c:h;break b}w=n+16|0;c:{d:{e:{b=Fc(b,n+44|0);b=b+b;if(b!=0){h=K[n+44>>2];K[n+44>>2]=h-1;x=f|32;if((x|0)!=97){break e}break c}x=f|32;if((x|0)==97){break c}l=K[n+44>>2];break d}l=h-29|0;K[n+44>>2]=l;b=b*268435456}k=(d|0)<0?6:d;r=(n+48|0)+((l|0)>=0?288:0)|0;h=r;while(1){d=b<4294967295&b>=0?~~b>>>0:0;K[h>>2]=d;h=h+4|0;b=(b-+(d>>>0))*1e9;if(b!=0){continue}break}f:{if((l|0)<=0){i=l;g=h;j=r;break f}j=r;i=l;while(1){o=i>>>0>=29?29:i;g=h-4|0;g:{if(j>>>0>g>>>0){break g}p=0;while(1){q=0;d=K[g>>2];i=o&31;m=p;if((o&63)>>>0>=32){p=d<>>32-i;d=d<>>0>i>>>0?q+1|0:q;p=Ne(i,q,1e9,0);m=Le(p,ua,-1e9);d=q;q=i+m|0;K[g>>2]=q;g=g-4|0;if(j>>>0<=g>>>0){continue}break}if(!d&i>>>0<1e9){break g}j=j-4|0;K[j>>2]=p}while(1){g=h;if(j>>>0>>0){h=g-4|0;if(!K[h>>2]){continue}}break}i=K[n+44>>2]-o|0;K[n+44>>2]=i;h=g;if((i|0)>0){continue}break}}if((i|0)<0){u=((k+25>>>0)/9|0)+1|0;p=(x|0)==102;while(1){d=0-i|0;m=d>>>0>=9?9:d;h:{if(g>>>0<=j>>>0){h=!K[j>>2]<<2;break h}q=1e9>>>m|0;o=-1<>2];K[h>>2]=(d>>>m|0)+i;i=Q(q,d&o);h=h+4|0;if(h>>>0>>0){continue}break}h=!K[j>>2]<<2;if(!i){break h}K[g>>2]=i;g=g+4|0}i=m+K[n+44>>2]|0;K[n+44>>2]=i;j=h+j|0;d=p?r:j;g=g-d>>2>(u|0)?d+(u<<2)|0:g;if((i|0)<0){continue}break}}i=0;i:{if(g>>>0<=j>>>0){break i}i=Q(r-j>>2,9);h=10;d=K[j>>2];if(d>>>0<10){break i}while(1){i=i+1|0;h=Q(h,10);if(d>>>0>=h>>>0){continue}break}}d=(k-((x|0)!=102?i:0)|0)-((x|0)==103&(k|0)!=0)|0;if((d|0)<(Q(g-r>>2,9)-9|0)){h=(n+48|0)+((l|0)<0?-4092:-3804)|0;l=d+9216|0;d=(l|0)/9|0;m=h+(d<<2)|0;h=10;d=l+Q(d,-9)|0;if((d|0)<=7){while(1){h=Q(h,10);d=d+1|0;if((d|0)!=8){continue}break}}l=K[m>>2];u=(l>>>0)/(h>>>0)|0;o=Q(u,h);d=m+4|0;j:{if((l|0)==(o|0)&(d|0)==(g|0)){break j}l=l-o|0;k:{if(!(u&1)){b=9007199254740992;if(!(I[m-4|0]&1)|((h|0)!=1e9|j>>>0>=m>>>0)){break k}}b=9007199254740994}s=(d|0)==(g|0)?1:1.5;d=h>>>1|0;s=d>>>0>l>>>0?.5:(d|0)==(l|0)?s:1.5;if(!(L[y|0]!=45|z)){s=-s;b=-b}K[m>>2]=o;if(b+s==b){break j}d=h+o|0;K[m>>2]=d;if(d>>>0>=1e9){while(1){K[m>>2]=0;m=m-4|0;if(m>>>0>>0){j=j-4|0;K[j>>2]=0}d=K[m>>2]+1|0;K[m>>2]=d;if(d>>>0>999999999){continue}break}}i=Q(r-j>>2,9);h=10;d=K[j>>2];if(d>>>0<10){break j}while(1){i=i+1|0;h=Q(h,10);if(d>>>0>=h>>>0){continue}break}}d=m+4|0;g=d>>>0>>0?d:g}while(1){l=g;o=g>>>0<=j>>>0;if(!o){g=g-4|0;if(!K[g>>2]){continue}}break}l:{if((x|0)!=103){p=e&8;break l}h=k?k:1;d=(h|0)>(i|0)&(i|0)>-5;k=(d?i^-1:-1)+h|0;f=(d?-1:-2)+f|0;p=e&8;if(p){break l}g=-9;m:{if(o){break m}o=K[l-4>>2];if(!o){break m}d=10;g=0;if((o>>>0)%10|0){break m}while(1){h=g;g=g+1|0;d=Q(d,10);if(!((o>>>0)%(d>>>0)|0)){continue}break}g=h^-1}d=Q(l-r>>2,9);if((f&-33)==70){p=0;d=(d+g|0)-9|0;d=(d|0)>0?d:0;k=(d|0)>(k|0)?k:d;break l}p=0;d=((d+i|0)+g|0)-9|0;d=(d|0)>0?d:0;k=(d|0)>(k|0)?k:d}m=-1;o=k|p;if(((o?2147483645:2147483646)|0)<(k|0)){break b}q=(((o|0)!=0)+k|0)+1|0;h=f&-33;n:{if((h|0)==70){if((q^2147483647)<(i|0)){break b}g=(i|0)>0?i:0;break n}d=i>>31;g=fb((d^i)-d|0,0,w);if((w-g|0)<=1){while(1){g=g-1|0;I[g|0]=48;if((w-g|0)<2){continue}break}}u=g-2|0;I[u|0]=f;I[g-1|0]=(i|0)<0?45:43;g=w-u|0;if((g|0)>(q^2147483647)){break b}}d=g+q|0;if((d|0)>(t^2147483647)){break b}i=d+t|0;Ra(a,32,c,i,e);Pa(a,y,t);Ra(a,48,c,i,e^65536);o:{p:{q:{if((h|0)==70){h=n+16|9;f=j>>>0>r>>>0?r:j;j=f;while(1){g=fb(K[j>>2],0,h);r:{if((f|0)!=(j|0)){if(n+16>>>0>=g>>>0){break r}while(1){g=g-1|0;I[g|0]=48;if(n+16>>>0>>0){continue}break}break r}if((g|0)!=(h|0)){break r}g=g-1|0;I[g|0]=48}Pa(a,g,h-g|0);j=j+4|0;if(r>>>0>=j>>>0){continue}break}if(o){Pa(a,1647,1)}if((k|0)<=0|j>>>0>=l>>>0){break q}while(1){g=fb(K[j>>2],0,h);if(g>>>0>n+16>>>0){while(1){g=g-1|0;I[g|0]=48;if(n+16>>>0>>0){continue}break}}Pa(a,g,(k|0)>=9?9:k);g=k-9|0;j=j+4|0;if(l>>>0<=j>>>0){break p}d=(k|0)>9;k=g;if(d){continue}break}break p}s:{if((k|0)<0){break s}f=j>>>0>>0?l:j+4|0;l=n+16|9;h=j;while(1){g=fb(K[h>>2],0,l);if((l|0)==(g|0)){g=g-1|0;I[g|0]=48}t:{if((h|0)!=(j|0)){if(n+16>>>0>=g>>>0){break t}while(1){g=g-1|0;I[g|0]=48;if(n+16>>>0>>0){continue}break}break t}Pa(a,g,1);g=g+1|0;if(!(k|p)){break t}Pa(a,1647,1)}d=l-g|0;Pa(a,g,(d|0)<(k|0)?d:k);k=k-d|0;h=h+4|0;if(f>>>0<=h>>>0){break s}if((k|0)>=0){continue}break}}Ra(a,48,k+18|0,18,0);Pa(a,u,w-u|0);break o}g=k}Ra(a,48,g+9|0,9,0)}Ra(a,32,c,i,e^8192);m=(c|0)>(i|0)?c:i;break b}i=(f<<26>>31&9)+y|0;u:{if(d>>>0>11){break u}g=12-d|0;s=16;while(1){s=s*16;g=g-1|0;if(g){continue}break}if(L[i|0]==45){b=-(s+(-b-s));break u}b=b+s-s}k=K[n+44>>2];h=k>>31;g=fb((h^k)-h|0,0,w);if((w|0)==(g|0)){g=g-1|0;I[g|0]=48}r=t|2;j=f&32;l=g-2|0;I[l|0]=f+15;I[g-1|0]=(k|0)<0?45:43;g=!(e&8)&(d|0)<=0;h=n+16|0;while(1){f=h;k=S(b)<2147483647?~~b:-2147483648;I[h|0]=j|L[k+25744|0];b=(b-+(k|0))*16;h=h+1|0;if(!(g&b==0|(h-(n+16|0)|0)!=1)){I[f+1|0]=46;h=f+2|0}if(b!=0){continue}break}m=-1;g=w-l|0;f=g+r|0;if((2147483645-f|0)<(d|0)){break b}k=f;f=n+16|0;j=h-f|0;d=d?(j-2|0)<(d|0)?d+2|0:j:j;h=k+d|0;Ra(a,32,c,h,e);Pa(a,i,r);Ra(a,48,c,h,e^65536);Pa(a,f,j);Ra(a,48,d-j|0,0,0);Pa(a,l,g);Ra(a,32,c,h,e^8192);m=(c|0)>(h|0)?c:h}ra=n+560|0;return m|0}function cb(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=K[a+32>>2];a:{if(e){break a}b:{h=K[a+16>>2];if((h|0)>5){e=h;break b}c=K[a+20>>2];c:{d:{if((c|0)>=5){b=K[a>>2];e=K[b>>2];K[a>>2]=b+4;i=c-4|0;break d}if((c|0)<=0){e=-1;break c}b=K[a>>2];e:{if((c|0)==1){g=-1;c=0;break e}g=-1;f=c-1|0;k=f&1;f:{if((c|0)==2){e=0;d=c;break f}j=f&-2;e=0;f=b;d=c;while(1){K[a>>2]=f+1;l=L[f|0];b=f+2|0;K[a>>2]=b;K[a+20>>2]=d-1;f=L[f+1|0];d=d-2|0;K[a+20>>2]=d;g=((255<>2]=f;b=L[b|0];K[a+20>>2]=d-1;g=(255<>2]=b+1;e=(255<>2]=i}b=K[a+24>>2];c=e>>>24|0;K[a+24>>2]=(c|0)==255;i=e>>>16&255;k=(i|0)==255;g=e&255;f=(g|0)==255;j=b+f|0;b=e>>>8&255;d=(b|0)==255;j=k+(j+d|0)|0;e=(h-j|0)+32|0;K[a+16>>2]=e;l=K[a+12>>2];b=c|(i|(b|g<<(f?7:8))<<(d?7:8))<<(k?7:8);c=(j-h|0)+32|0;g=c&31;if((c&63)>>>0>=32){c=b<>>32-g;f=b<>2]=f|K[a+8>>2];K[a+12>>2]=c|l;if((e|0)>=6){break b}e=0;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;g:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break g}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;h=f;d=c&31;if((c&63)>>>0>=32){c=f<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2]|b>>31;K[a+40>>2]=K[a+40>>2]&-64|b;K[a+44>>2]=g;if((e|0)<6){e=1;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;h:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break h}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;h=f;d=c&31;if((c&63)>>>0>=32){c=f<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2];K[a+40>>2]=K[a+40>>2]&-8065|b<<7;K[a+44>>2]=b>>31<<7|b>>>25|g;if((e|0)<6){e=2;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;i:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break i}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;h=f;d=c&31;if((c&63)>>>0>=32){c=f<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2];K[a+40>>2]=K[a+40>>2]&-1032193|b<<14;K[a+44>>2]=b>>31<<14|b>>>18|g;if((e|0)<6){e=3;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;j:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break j}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;h=f;d=c&31;if((c&63)>>>0>=32){c=f<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2];K[a+40>>2]=K[a+40>>2]&-132120577|b<<21;K[a+44>>2]=b>>31<<21|b>>>11|g;if((e|0)<6){e=4;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;k:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break k}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;h=f;d=c&31;if((c&63)>>>0>=32){c=f<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2]&-4;K[a+40>>2]=K[a+40>>2]&268435455|b<<28;K[a+44>>2]=b>>31<<28|b>>>4|g;if((e|0)<6){e=5;break a}h=K[a+28>>2];c=K[(h<<2)+20704>>2];d=K[a+8>>2];b=K[a+12>>2];l:{if((b|0)<0){f=e-1|0;g=(-1<=11?11:h)+1|0;break l}i=d;f=63-c|0;g=f&31;if((f&63)>>>0>=32){f=b>>>g|0}else{f=((1<>>g}g=(f&(-1<>2]=f;K[a+28>>2]=e;h=d;e=c&31;if((c&63)>>>0>=32){c=d<>>32-e|b<>2]=d;K[a+12>>2]=c;d=K[a+44>>2]&-505;K[a+40>>2]=K[a+40>>2];K[a+44>>2]=g<<3|d;e=6;if((f|0)<6){break a}h=K[a+28>>2];c=K[(h<<2)+20704>>2];d=K[a+8>>2];b=K[a+12>>2];m:{if((b|0)<0){e=f-1|0;g=(-1<=11?11:h)+1|0;break m}i=d;e=63-c|0;g=e&31;if((e&63)>>>0>=32){i=b>>>g|0}else{i=((1<>>g}g=(i&(-1<>2]=e;K[a+28>>2]=f;h=d;f=c&31;if((c&63)>>>0>=32){c=d<>>32-f|b<>2]=f;K[a+12>>2]=c;f=K[a+44>>2]&-64513;K[a+40>>2]=K[a+40>>2];K[a+44>>2]=g<<10|f;if((e|0)<6){e=7;break a}d=K[a+28>>2];c=K[(d<<2)+20704>>2];f=K[a+8>>2];b=K[a+12>>2];g=b;n:{if((b|0)<0){e=e-1|0;b=(-1<=11?11:d)+1|0;break n}i=f;h=63-c|0;b=h&31;if((h&63)>>>0>=32){b=g>>>b|0}else{b=((1<>>b}b=(b&(-1<>2]=e;K[a+28>>2]=d;e=f;d=c&31;if((c&63)>>>0>=32){c=e<>>32-d|g<>2]=f;K[a+12>>2]=c;g=K[a+44>>2]&-8257537;K[a+40>>2]=K[a+40>>2];K[a+44>>2]=b<<17|g;e=8}K[a+32>>2]=e-1;g=K[a+44>>2];c=g>>>7|0;b=K[a+40>>2];K[a+40>>2]=(g&127)<<25|b>>>7;K[a+44>>2]=c;return b&127}function bd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;j=ra-80|0;ra=j;K[j+76>>2]=1;a:{b:{if(K[a+128>>2]!=1|K[a+132>>2]!=1|(K[a+108>>2]|K[a+112>>2])){break b}k=K[a+100>>2];if(K[k>>2]|K[k+4>>2]|(K[k+8>>2]!=K[a+116>>2]|K[k+12>>2]!=K[a+120>>2])){break b}if(!ab(a,j+72|0,0,j+68|0,j- -64|0,j+60|0,j+56|0,j+52|0,j+76|0,b,c)){break a}c:{d:{if(!K[j+76>>2]){break d}if(!jb(a,K[j+72>>2],0,0,b,c)){break d}b=K[a+100>>2];if(K[b+16>>2]){break c}d=1;break a}Fa(c,1,8739,0);break a}e=K[b+24>>2];while(1){b=Q(h,52);Ga(K[(b+e|0)+44>>2]);c=K[a+100>>2];e=K[c+24>>2];k=b+e|0;d=K[a+232>>2];m=K[K[K[d+20>>2]>>2]+20>>2]+Q(h,76)|0;K[k+44>>2]=K[m+36>>2];K[k+36>>2]=K[(b+K[K[d+24>>2]+24>>2]|0)+36>>2];K[m+36>>2]=0;d=1;h=h+1|0;if(h>>>0>2]){continue}break}break a}K[a+80>>2]=0;K[a+84>>2]=0;Ga(K[a+88>>2]);K[a+88>>2]=0;e:{if(!(K[a+28>>2]|K[a+32>>2]|K[a+36>>2]!=K[a+128>>2])){k=2;if(K[a+40>>2]==K[a+132>>2]){break e}}k=2;if(K[a+76>>2]){break e}if(!Ib(b)){break e}q=K[a+128>>2];k=Q(q,K[a+132>>2]);if(k){i=k&1;g=K[K[a+224>>2]+40>>2];f:{if((k|0)==1){k=0;break f}o=k&-2;k=0;while(1){f=g+Q(d,40)|0;l=K[f+4>>2];if(l){l=(K[f+16>>2]+Q(l,24)|0)-8|0;f=K[l>>2];n=f;p=f>>>0>k>>>0;f=K[l+4>>2];l=p&(f|0)>=(m|0)|(f|0)>(m|0);k=l?n:k;m=l?f:m}f=g+Q(d|1,40)|0;l=K[f+4>>2];if(l){l=(K[f+16>>2]+Q(l,24)|0)-8|0;f=K[l>>2];n=f;p=f>>>0>k>>>0;f=K[l+4>>2];l=p&(f|0)>=(m|0)|(f|0)>(m|0);k=l?n:k;m=l?f:m}d=d+2|0;e=e+2|0;if((o|0)!=(e|0)){continue}break}}g:{if(!i){break g}d=g+Q(d,40)|0;g=K[d+4>>2];if(!g){break g}g=(K[d+16>>2]+Q(g,24)|0)-8|0;d=K[g>>2];f=d;n=d>>>0>k>>>0;d=K[g+4>>2];g=n&(d|0)>=(m|0)|(d|0)>(m|0);k=g?f:k;m=g?d:m}k=k+2|0;m=k>>>0<2?m+1|0:m}else{k=2;m=0}f=K[a+32>>2];t=K[a+40>>2];h:{if(f>>>0>=t>>>0){break h}g=K[a+28>>2];i=K[a+36>>2];if(g>>>0>=i>>>0){break h}o=i-g&3;r=K[K[a+224>>2]+40>>2];n=g-i>>>0>4294967292;while(1){l=r+Q(Q(f,q),40)|0;d=g;e=0;if(o){while(1){h=K[(l+Q(d,40)|0)+4>>2]+h|0;d=d+1|0;e=e+1|0;if((o|0)!=(e|0)){continue}break}}if(!n){while(1){e=l+Q(d,40)|0;h=K[e+124>>2]+(K[e+84>>2]+(K[e+44>>2]+(K[e+4>>2]+h|0)|0)|0)|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}}f=f+1|0;if((t|0)!=(f|0)){continue}break}}f=Ja(h<<3);K[a+88>>2]=f;if(!h|!f){break e}h=0;d=K[a+40>>2];i=K[a+32>>2];i:{if(d>>>0<=i>>>0){break i}e=K[a+36>>2];if(e>>>0<=N[a+28>>2]){break i}while(1){f=K[a+28>>2];if(f>>>0>>0){t=K[K[a+224>>2]+40>>2]+Q(Q(K[a+128>>2],i),40)|0;while(1){g=t+Q(f,40)|0;d=K[g+4>>2];if(d){o=d&3;g=K[g+16>>2];l=0;j:{if(d>>>0<4){d=0;break j}r=d&-4;d=0;q=0;while(1){p=g+Q(d,24)|0;s=K[p+4>>2];e=h<<3;n=e+K[a+88>>2]|0;K[n>>2]=K[p>>2];K[n+4>>2]=s;p=g+Q(d|1,24)|0;s=K[p+4>>2];n=e+K[a+88>>2]|0;K[n+8>>2]=K[p>>2];K[n+12>>2]=s;p=g+Q(d|2,24)|0;s=K[p+4>>2];n=e+K[a+88>>2]|0;K[n+16>>2]=K[p>>2];K[n+20>>2]=s;n=g+Q(d|3,24)|0;p=K[n+4>>2];e=e+K[a+88>>2]|0;K[e+24>>2]=K[n>>2];K[e+28>>2]=p;d=d+4|0;h=h+4|0;q=q+4|0;if((r|0)!=(q|0)){continue}break}}if(o){while(1){q=g+Q(d,24)|0;r=K[q+4>>2];e=K[a+88>>2]+(h<<3)|0;K[e>>2]=K[q>>2];K[e+4>>2]=r;d=d+1|0;h=h+1|0;l=l+1|0;if((o|0)!=(l|0)){continue}break}}e=K[a+36>>2]}f=f+1|0;if(f>>>0>>0){continue}break}d=K[a+40>>2]}i=i+1|0;if(i>>>0>>0){continue}break}f=K[a+88>>2]}K[a+84>>2]=h;e=ra-208|0;ra=e;K[e+8>>2]=1;K[e+12>>2]=0;o=h<<3;k:{if(!o){break k}K[e+16>>2]=8;K[e+20>>2]=8;d=8;h=8;i=2;while(1){g=d;d=(h+8|0)+d|0;K[(e+16|0)+(i<<2)>>2]=d;i=i+1|0;h=g;if(d>>>0>>0){continue}break}g=(f+o|0)-8|0;l:{if(g>>>0<=f>>>0){i=1;d=1;g=0;break l}i=1;d=1;while(1){m:{if((i&3)==3){Jb(f,d,e+16|0);yb(e+8|0,2);d=d+2|0;break m}o=e+16|0;h=d-1|0;n:{if(N[o+(h<<2)>>2]>=g-f>>>0){xb(f,i,K[e+12>>2],d,0,o);break n}Jb(f,d,e+16|0)}if((d|0)==1){wb(e+8|0,1);d=0;break m}wb(e+8|0,h);d=1}i=K[e+8>>2]|1;K[e+8>>2]=i;f=f+8|0;if(g>>>0>f>>>0){continue}break}g=K[e+12>>2]}xb(f,i,g,d,0,e+16|0);h=K[e+12>>2];i=K[e+8>>2];if(!(h|((d|0)!=1|(i|0)!=1))){break k}while(1){o:{if((d|0)<=1){g=Nc(i,h);yb(e+8|0,g);d=d+g|0;break o}h=e+8|0;wb(h,2);K[e+8>>2]=K[e+8>>2]^7;yb(h,1);o=f-8|0;i=e+16|0;g=d-2|0;xb(o-K[i+(g<<2)>>2]|0,K[e+8>>2],K[e+12>>2],d-1|0,1,i);wb(h,1);d=K[e+8>>2]|1;K[e+8>>2]=d;xb(o,d,K[e+12>>2],g,1,i);d=g}f=f-8|0;h=K[e+12>>2];i=K[e+8>>2];if(h|((d|0)!=1|(i|0)!=1)){continue}break}}ra=e+208|0}d=K[a+128>>2];e=0;p:{while(1){q:{if(!(!K[K[a+180>>2]+5596>>2]|((d|0)!=1|K[a+132>>2]!=1))){K[j+72>>2]=0;K[a+228>>2]=0;K[a+8>>2]=K[a+8>>2]|128;d=0;break q}d=0;if(!ab(a,j+72|0,0,j+68|0,j- -64|0,j+60|0,j+56|0,j+52|0,j+76|0,b,c)){break a}if(!K[j+76>>2]){break p}d=K[j+72>>2]}g=d+1|0;f=jb(a,d,0,0,b,c);h=Q(K[a+128>>2],K[a+132>>2]);if(!f){K[j+4>>2]=h;K[j>>2]=g;Fa(c,1,7500,j);d=0;break a}K[j+36>>2]=h;K[j+32>>2]=g;Fa(c,4,11758,j+32|0);if(!Wc(K[a+232>>2],K[K[a+100>>2]+24>>2])){d=0;break a}r:{if(!(K[a+128>>2]!=1|K[a+132>>2]!=1)){h=K[a+100>>2];f=K[a+96>>2];if(K[h>>2]!=K[f>>2]|K[h+4>>2]!=K[f+4>>2]|(K[h+8>>2]!=K[f+8>>2]|K[h+12>>2]!=K[f+12>>2])){break r}}d=K[a+180>>2]+Q(d,5644)|0;h=K[d+5596>>2];if(!h){break r}Ga(h);K[d+5596>>2]=0;K[d+5600>>2]=0}K[j+16>>2]=g;Fa(c,4,16564,j+16|0);if(!(Va(b)|ua)&K[a+8>>2]==64){break p}e=e+1|0;d=K[a+128>>2];if((e|0)==(Q(d,K[a+132>>2])|0)){break p}g=K[a+84>>2];if(!g|(g|0)!=K[a+80>>2]){continue}break}Dc(b,k,m,c)}d=Vc(a,c)}ra=j+80|0;return d|0}function ic(a,b,c,d,e,f,g,h,i){var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;p=ra-32|0;ra=p;K[p+24>>2]=f;r=K[(Q(K[d+28>>2],76)+b|0)+28>>2]+Q(K[d+32>>2],152)|0;a:{if(!(K[d+40>>2]|!K[r+24>>2])){k=r+28|0;while(1){b:{if(ec(k)){break b}b=K[d+36>>2];if(b>>>0>=N[k+24>>2]/40>>>0){Fa(i,1,2799,0);break a}b=K[k+20>>2]+Q(b,40)|0;vc(K[b+32>>2]);vc(K[b+36>>2]);o=Q(K[b+20>>2],K[b+16>>2]);if(!o){break b}b=K[b+24>>2];if(o>>>0>=8){q=o&-8;j=0;while(1){K[b+516>>2]=0;K[b+520>>2]=0;K[b+448>>2]=0;K[b+452>>2]=0;K[b+380>>2]=0;K[b+384>>2]=0;K[b+312>>2]=0;K[b+316>>2]=0;K[b+244>>2]=0;K[b+248>>2]=0;K[b+176>>2]=0;K[b+180>>2]=0;K[b+108>>2]=0;K[b+112>>2]=0;K[b+40>>2]=0;K[b+44>>2]=0;b=b+544|0;j=j+8|0;if((q|0)!=(j|0)){continue}break}}j=0;o=o&7;if(!o){break b}while(1){K[b+40>>2]=0;K[b+44>>2]=0;b=b+68|0;j=j+1|0;if((o|0)!=(j|0)){continue}break}}k=k+36|0;n=n+1|0;if(n>>>0>2]){continue}break}}q=f;c:{if(!(L[c|0]&2)){break c}if(h>>>0<=5){Fa(i,2,4159,0);break c}if(!(L[f|0]==255&L[f+1|0]==145)){Fa(i,2,4201,0);break c}q=f+6|0;K[p+24>>2]=q}l=Ja(20);if(!l){break a}d:{if(I[a+108|0]&1){q=K[a+40>>2];o=a+44|0;h=a+40|0;break d}if(L[c+5640|0]&2){q=K[c+5168>>2];o=c+5180|0;h=c+5168|0;break d}K[p+28>>2]=(f+h|0)-q;o=p+28|0;h=p+24|0}a=K[o>>2];K[l+12>>2]=0;K[l+16>>2]=0;K[l+8>>2]=q;K[l>>2]=q;K[l+4>>2]=a+q;if(!Wa(l,1)){xc(l);a=yc(l);kb(l);a=a+q|0;b=K[h>>2];d=K[o>>2];if(L[c|0]&4){if(b+(d-a|0)>>>0<=1){Fa(i,1,4385,0);break a}if(!(L[a|0]==255&L[a+1|0]==146)){Fa(i,1,4364,0);break a}a=a+2|0}a=a-b|0;K[o>>2]=d-a;K[h>>2]=a+b;K[e>>2]=0;K[g>>2]=K[p+24>>2]-f;x=1;break a}if(K[r+24>>2]){t=r+28|0;while(1){a=K[d+36>>2];b=K[t+20>>2];e:{if(ec(t)){break e}u=b+Q(a,40)|0;y=Q(K[u+20>>2],K[u+16>>2]);if(!y){break e}k=K[u+24>>2];v=0;while(1){f:{g:{if(!K[k+40>>2]){a=tc(l,K[u+32>>2],v,K[d+40>>2]+1|0);break g}a=Wa(l,1)}if(!a){K[k+36>>2]=0;break f}if(!K[k+40>>2]){b=0;while(1){a=b;b=b+1|0;if(!tc(l,K[u+36>>2],v,a)){continue}break}b=K[t+28>>2];K[k+32>>2]=3;K[k+24>>2]=b;K[k+28>>2]=(b-a|0)+1}a=1;h:{if(!Wa(l,1)){break h}a=2;if(!Wa(l,1)){break h}a=Wa(l,2);if((a|0)!=3){a=a+3|0;break h}a=Wa(l,5);if((a|0)!=31){a=a+6|0;break h}a=Wa(l,7)+37|0}K[k+36>>2]=a;b=0;while(1){a=b;b=b+1|0;if(Wa(l,1)){continue}break}K[k+32>>2]=a+K[k+32>>2];i:{a=K[k+40>>2];j:{k:{if(!a){a=K[(K[c+5584>>2]+Q(K[d+28>>2],1080)|0)+16>>2];if(!K[k+48>>2]){b=La(K[k>>2],240);if(!b){break i}K[k>>2]=b;B(b+Q(K[k+48>>2],24)|0,0,240);K[k+48>>2]=10}j=K[k>>2];ob(j);b=a&4?1:a&1?10:109;a=0;break k}b=K[k>>2];n=a-1|0;j=b+Q(n,24)|0;if(K[j+4>>2]!=K[j+12>>2]){break j}n=K[(K[c+5584>>2]+Q(K[d+28>>2],1080)|0)+16>>2];j=K[k+48>>2];if(j>>>0>>0){j=j+10|0;b=La(b,Q(j,24));if(!b){break i}K[k>>2]=b;B(b+Q(K[k+48>>2],24)|0,0,240);K[k+48>>2]=j;b=K[k>>2]}j=Q(a,24)+b|0;ob(j);b=1;l:{if(n&4){break l}b=109;if(!(n&1)){break l}b=K[j-12>>2];b=(b|0)==1?2:(b|0)==10?2:1}}n=a;K[j+12>>2]=b}a=K[k+36>>2];if(L[(K[c+5584>>2]+Q(K[d+28>>2],1080)|0)+16|0]&64){while(1){m=Q(n,24);s=n?a:1;K[(m+K[k>>2]|0)+16>>2]=s;w=K[k+32>>2];j=0;b=a;if(s>>>0>=2){while(1){j=j+1|0;s=b>>>0>3;b=b>>>1|0;if(s){continue}break}}b=j+w|0;if(b>>>0>=33){K[p+16>>2]=b;Fa(i,1,15498,p+16|0);break i}j=Wa(l,b);b=K[k>>2];m=m+b|0;K[m+20>>2]=j;a=a-K[m+16>>2]|0;if((a|0)<=0){break f}j=K[(K[c+5584>>2]+Q(K[d+28>>2],1080)|0)+16>>2];m=K[k+48>>2];if(m>>>0>>0){m=m+10|0;b=La(b,Q(m,24));if(!b){break i}K[k>>2]=b;B(b+Q(K[k+48>>2],24)|0,0,240);K[k+48>>2]=m;b=K[k>>2]}n=n+1|0;b=b+Q(n,24)|0;ob(b);if(j&4){K[b+12>>2]=1;continue}if(j&1){j=b;b=K[b-12>>2];K[j+12>>2]=(b|0)==1?2:(b|0)==10?2:1}else{K[b+12>>2]=109}continue}}while(1){m=Q(n,24);j=m+K[k>>2]|0;b=K[j+12>>2]-K[j+4>>2]|0;b=(a|0)>(b|0)?b:a;K[j+16>>2]=b;s=K[k+32>>2];j=0;if(b>>>0>=2){while(1){j=j+1|0;w=b>>>0>3;b=b>>>1|0;if(w){continue}break}}b=j+s|0;if(b>>>0>=33){K[p>>2]=b;Fa(i,1,15498,p);break i}j=Wa(l,b);b=K[k>>2];m=m+b|0;K[m+20>>2]=j;a=a-K[m+16>>2]|0;if((a|0)<=0){break f}j=K[(K[c+5584>>2]+Q(K[d+28>>2],1080)|0)+16>>2];m=K[k+48>>2];if(m>>>0>>0){m=m+10|0;b=La(b,Q(m,24));if(!b){break i}K[k>>2]=b;B(b+Q(K[k+48>>2],24)|0,0,240);K[k+48>>2]=m;b=K[k>>2]}n=n+1|0;b=b+Q(n,24)|0;ob(b);if(j&4){K[b+12>>2]=1;continue}if(j&1){j=b;b=K[b-12>>2];K[j+12>>2]=(b|0)==1?2:(b|0)==10?2:1}else{K[b+12>>2]=109}continue}}kb(l);break a}k=k+68|0;v=v+1|0;if((y|0)!=(v|0)){continue}break}}t=t+36|0;z=z+1|0;if(z>>>0>2]){continue}break}}if(!xc(l)){kb(l);break a}a=yc(l);kb(l);b=a+q|0;a=K[h>>2];if(L[c|0]&4){if(a+(K[o>>2]-b|0)>>>0<=1){Fa(i,1,4385,0);break a}if(!(L[b|0]==255&L[b+1|0]==146)){Fa(i,1,4364,0);break a}b=b+2|0}if((a|0)==(b|0)){break a}K[o>>2]=K[o>>2]+(a-b|0);K[h>>2]=b;x=1;K[e>>2]=1;K[g>>2]=K[p+24>>2]-f}ra=p+32|0;return x}function Hb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;o=Q(c,5);j=(c<<2)+b|0;e=K[a>>2];f=K[a+12>>2]<<5;h=e+f|0;l=e-f|0;e=K[a+16>>2];k=K[a+28>>2];i=K[a+20>>2];q=K[a+8>>2];a:{b:{if(h&15|(b&15|d>>>0<8)){if(e>>>0>=i>>>0){break a}c:{switch(d-1|0){case 1:f=e+1|0;if(i-e&1){g=h+(e<<6)|0;e=(e<<2)+b|0;O[g>>2]=O[e>>2];O[g+4>>2]=O[e+(c<<2)>>2];e=f}if((f|0)==(i|0)){break a}while(1){f=h+(e<<6)|0;g=(e<<2)+b|0;O[f>>2]=O[g>>2];r=f;f=c<<2;O[r+4>>2]=O[f+g>>2];g=e+1|0;j=h+(g<<6)|0;g=(g<<2)+b|0;O[j>>2]=O[g>>2];O[j+4>>2]=O[f+g>>2];e=e+2|0;if((i|0)!=(e|0)){continue}break};break a;case 0:break c;default:break b}}f=e;j=i-e&3;if(j){while(1){O[h+(f<<6)>>2]=O[(f<<2)+b>>2];f=f+1|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}if(e-i>>>0>4294967292){break a}while(1){O[h+(f<<6)>>2]=O[(f<<2)+b>>2];e=f+1|0;O[h+(e<<6)>>2]=O[(e<<2)+b>>2];e=f+2|0;O[h+(e<<6)>>2]=O[(e<<2)+b>>2];e=f+3|0;O[h+(e<<6)>>2]=O[(e<<2)+b>>2];f=f+4|0;if((i|0)!=(f|0)){continue}break}break a}if(e>>>0>=i>>>0){break a}n=c<<4;m=Q(c,12);s=c<<3;while(1){f=h+(e<<6)|0;g=(e<<2)+b|0;O[f>>2]=O[g>>2];p=c<<2;O[f+4>>2]=O[p+g>>2];O[f+8>>2]=O[g+s>>2];O[f+12>>2]=O[g+m>>2];O[f+16>>2]=O[g+n>>2];g=e+o<<2;O[f+20>>2]=O[g+b>>2];g=g+j|0;O[f+24>>2]=O[g>>2];O[f+28>>2]=O[g+p>>2];e=e+1|0;if((i|0)!=(e|0)){continue}break}break a}n=c<<4;m=Q(c,12);s=c<<3;p=(d|0)==5;r=(d|0)==7;while(1){f=h+(e<<6)|0;g=(e<<2)+b|0;O[f>>2]=O[g>>2];t=c<<2;O[f+4>>2]=O[g+t>>2];O[f+8>>2]=O[g+s>>2];d:{if((d|0)==3){break d}O[f+12>>2]=O[g+m>>2];if((d|0)==4){break d}O[f+16>>2]=O[g+n>>2];if(p){break d}g=e+o<<2;O[f+20>>2]=O[g+b>>2];if((d|0)==6){break d}g=g+j|0;O[f+24>>2]=O[g>>2];if(r){break d}O[f+28>>2]=O[g+t>>2]}e=e+1|0;if((i|0)!=(e|0)){continue}break}}b=(q<<2)+b|0;i=b+(c<<2)|0;e=K[a+24>>2];h=l+32|0;e:{if(h&15|(b&15|d>>>0<8)){if(e>>>0>=k>>>0){break e}f:{switch(d-1|0){case 1:a=e+1|0;if(k-e&1){d=h+(e<<6)|0;e=b+(e<<2)|0;O[d>>2]=O[e>>2];O[d+4>>2]=O[e+(c<<2)>>2];e=a}if((a|0)==(k|0)){break e}while(1){a=h+(e<<6)|0;d=b+(e<<2)|0;O[a>>2]=O[d>>2];f=a;a=c<<2;O[f+4>>2]=O[a+d>>2];d=e+1|0;f=h+(d<<6)|0;d=b+(d<<2)|0;O[f>>2]=O[d>>2];O[f+4>>2]=O[a+d>>2];e=e+2|0;if((k|0)!=(e|0)){continue}break};break e;case 0:f=e;a=k-e&3;if(a){g=0;while(1){O[h+(f<<6)>>2]=O[b+(f<<2)>>2];f=f+1|0;g=g+1|0;if((a|0)!=(g|0)){continue}break}}if(e-k>>>0>4294967292){break e}while(1){O[h+(f<<6)>>2]=O[b+(f<<2)>>2];a=f+1|0;O[h+(a<<6)>>2]=O[b+(a<<2)>>2];a=f+2|0;O[h+(a<<6)>>2]=O[b+(a<<2)>>2];a=f+3|0;O[h+(a<<6)>>2]=O[b+(a<<2)>>2];f=f+4|0;if((k|0)!=(f|0)){continue}break};break e;default:break f}}g=c<<4;j=Q(c,12);l=c<<3;q=(d|0)==5;n=(d|0)==7;while(1){a=h+(e<<6)|0;f=b+(e<<2)|0;O[a>>2]=O[f>>2];m=c<<2;O[a+4>>2]=O[m+f>>2];O[a+8>>2]=O[f+l>>2];g:{if((d|0)==3){break g}O[a+12>>2]=O[f+j>>2];if((d|0)==4){break g}O[a+16>>2]=O[f+g>>2];if(q){break g}f=e+o<<2;O[a+20>>2]=O[f+b>>2];if((d|0)==6){break g}f=f+i|0;O[a+24>>2]=O[f>>2];if(n){break g}O[a+28>>2]=O[f+m>>2]}e=e+1|0;if((k|0)!=(e|0)){continue}break}break e}if(e>>>0>=k>>>0){break e}f=c<<4;g=Q(c,12);j=c<<3;while(1){a=h+(e<<6)|0;d=b+(e<<2)|0;O[a>>2]=O[d>>2];l=c<<2;O[a+4>>2]=O[l+d>>2];O[a+8>>2]=O[d+j>>2];O[a+12>>2]=O[d+g>>2];O[a+16>>2]=O[d+f>>2];d=e+o<<2;O[a+20>>2]=O[d+b>>2];d=d+i|0;O[a+24>>2]=O[d>>2];O[a+28>>2]=O[d+l>>2];e=e+1|0;if((k|0)!=(e|0)){continue}break}}}function Xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;d=ra-176|0;ra=d;a:{if(b&384){Sa(5906,11,c);break a}b:{if(!(b&1)){break b}e=K[a+96>>2];if(!e){break b}f=ra-80|0;ra=f;Sa(1755,13,c);I[f+79|0]=0;I[f+78|0]=9;g=K[e+4>>2];K[f+68>>2]=K[e>>2];K[f+72>>2]=g;j=f+78|0;K[f+64>>2]=j;Ka(c,7483,f- -64|0);g=K[e+12>>2];K[f+52>>2]=K[e+8>>2];K[f+56>>2]=g;K[f+48>>2]=j;Ka(c,7466,f+48|0);K[f+36>>2]=K[e+16>>2];K[f+32>>2]=j;Ka(c,7240,f+32|0);if(!(!K[e+24>>2]|!K[e+16>>2])){while(1){l=f+78|0;K[f+16>>2]=l;K[f+20>>2]=m;Ka(c,1787,f+16|0);j=K[e+24>>2];g=ra-48|0;ra=g;I[g+46|0]=9;I[g+47|0]=0;I[g+45|0]=9;n=Q(m,52)+j|0;j=K[n+4>>2];K[g+36>>2]=K[n>>2];K[g+40>>2]=j;j=g+45|0;K[g+32>>2]=j;Ka(c,7172,g+32|0);K[g+20>>2]=K[n+24>>2];K[g+16>>2]=j;Ka(c,7418,g+16|0);K[g+4>>2]=K[n+32>>2];K[g>>2]=j;Ka(c,7391,g);ra=g+48|0;K[f>>2]=l;Ka(c,1665,f);m=m+1|0;if(m>>>0>2]){continue}break}}Sa(1673,2,c);ra=f+80|0}if(!(!(b&2)|!K[a+96>>2])){Sa(1894,36,c);e=K[a+112>>2];K[d+160>>2]=K[a+108>>2];K[d+164>>2]=e;Ka(c,2388,d+160|0);e=K[a+120>>2];K[d+144>>2]=K[a+116>>2];K[d+148>>2]=e;Ka(c,2354,d+144|0);e=K[a+132>>2];K[d+128>>2]=K[a+128>>2];K[d+132>>2]=e;Ka(c,2372,d+128|0);Wb(K[a+12>>2],K[K[a+96>>2]+16>>2],c);Sa(1673,2,c)}c:{if(!(b&8)|!K[a+96>>2]){break c}e=Q(K[a+128>>2],K[a+132>>2]);if(!e){break c}h=K[a+180>>2];while(1){Wb(h,K[K[a+96>>2]+16>>2],c);h=h+5644|0;k=k+1|0;if((e|0)!=(k|0)){continue}break}}if(!(b&16)){break a}i=K[a+224>>2];Sa(1856,37,c);e=K[i>>2];b=K[i+4>>2];a=K[i+12>>2];K[d+120>>2]=K[i+8>>2];K[d+124>>2]=a;K[d+112>>2]=e;K[d+116>>2]=b;Ka(c,5693,d+112|0);Sa(1838,17,c);if(!(!K[i+28>>2]|!K[i+24>>2])){h=0;while(1){a=K[i+28>>2]+Q(h,24)|0;g=M[a>>1];e=K[a+8>>2];b=K[a+12>>2];K[d+96>>2]=K[a+16>>2];K[d+88>>2]=e;K[d+92>>2]=b;K[d+80>>2]=g;Ka(c,7360,d+80|0);h=h+1|0;if(h>>>0>2]){continue}break}}Sa(1671,4,c);j=K[i+40>>2];d:{if(!j){break d}g=K[i+36>>2];if(!g){break d}k=0;h=0;while(1){a=j+Q(h,40)|0;e=K[a+4>>2];e:{if(!e){break e}l=K[a+16>>2];if(!l){break e}b=K[l>>2];a=K[l+4>>2];if((a|0)<0){a=1}else{a=!b&(a|0)<=0}if(a|(K[l+8>>2]|K[l+12>>2])){break e}if(Oc(1402)){break d}}k=e+k|0;h=h+1|0;if((g|0)!=(h|0)){continue}break}if(!k){break d}Sa(1821,16,c);if(K[i+36>>2]){k=K[i+40>>2];n=0;while(1){f=Q(n,40);l=K[(f+k|0)+4>>2];K[d+68>>2]=l;K[d+64>>2]=n;Ka(c,7430,d- -64|0);k=K[i+40>>2];f:{if(!l){break f}h=0;if(!K[(f+k|0)+16>>2]){break f}while(1){m=K[(f+K[i+40>>2]|0)+16>>2]+Q(h,24)|0;j=K[m>>2];g=K[m+4>>2];e=K[m+8>>2];b=K[m+12>>2];a=K[m+20>>2];K[d+56>>2]=K[m+16>>2];K[d+60>>2]=a;K[d+48>>2]=e;K[d+52>>2]=b;K[d+40>>2]=j;K[d+44>>2]=g;K[d+32>>2]=h;Ka(c,10901,d+32|0);h=h+1|0;if((l|0)!=(h|0)){continue}break}k=K[i+40>>2]}a=f+k|0;g:{if(!K[a+24>>2]){break g}h=0;if(!K[a+20>>2]){break g}while(1){a=K[(f+k|0)+24>>2]+Q(h,24)|0;g=M[a>>1];e=K[a+8>>2];b=K[a+12>>2];K[d+16>>2]=K[a+16>>2];K[d+8>>2]=e;K[d+12>>2]=b;K[d>>2]=g;Ka(c,7360,d);h=h+1|0;k=K[i+40>>2];if(h>>>0>2]){continue}break}}n=n+1|0;if(n>>>0>2]){continue}break}}Sa(1671,4,c)}Sa(1673,2,c)}ra=d+176|0}function He(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=ra-128|0;ra=e;K[e+120>>2]=0;a:{if((c|0)!=8){Fa(d,1,4010,0);Fa(d,1,4010,0);break a}Ha(b,a+228|0,2);Ha(b+2|0,e+124|0,4);Ha(b+6|0,e+116|0,1);Ha(b+7|0,e+120|0,1);c=K[a+228>>2];i=K[a+128>>2];if(c>>>0>=Q(i,K[a+132>>2])>>>0){K[e+112>>2]=c;Fa(d,1,7806,e+112|0);break a}h=K[a+180>>2]+Q(c,5644)|0;j=(c>>>0)/(i>>>0)|0;b=K[e+116>>2];b:{f=K[a+44>>2];if((f|0)>=0&(c|0)!=(f|0)){break b}f=K[h+5588>>2]+1|0;if((f|0)==(b|0)){break b}K[e+104>>2]=f;K[e+100>>2]=b;K[e+96>>2]=c;Fa(d,1,7830,e+96|0);f=0;break a}K[h+5588>>2]=b;c:{b=K[e+124>>2];if(b-1>>>0<=12){if((b|0)!=12){break c}K[e+64>>2]=12;Fa(d,2,11827,e- -64|0);b=K[e+124>>2]}if(!b){Fa(d,4,10658,0);K[a+56>>2]=1}d:{e:{f:{g:{g=K[h+5592>>2];if(g){b=K[e+116>>2];if(b>>>0>>0){break g}K[e+52>>2]=g;K[e+48>>2]=b;Fa(d,1,5113,e+48|0);K[a+56>>2]=1;f=0;break a}f=K[e+120>>2];if(f){break f}break d}f=K[e+120>>2];if(!f){break e}}g=(L[a+92|0]>>>4&1)+f|0;K[e+120>>2]=g;b=K[e+116>>2];f=K[h+5592>>2];if(b>>>0>f-1>>>0){K[e+20>>2]=f;K[e+16>>2]=b;Fa(d,1,5014,e+16|0);K[a+56>>2]=1;f=0;break a}if(b>>>0>=g>>>0){K[e+36>>2]=g;K[e+32>>2]=b;Fa(d,1,5213,e+32|0);K[a+56>>2]=1;f=0;break a}K[h+5592>>2]=g}if((K[e+116>>2]+1|0)!=(g|0)){break d}I[a+92|0]=L[a+92|0]|1}b=K[e+124>>2];K[a+8>>2]=16;K[a+24>>2]=K[a+56>>2]?0:b-12|0;f=K[a+44>>2];h:{if((f|0)==-1){f=4;b=c-Q(j,i)|0;if(!(b>>>0>2]|b>>>0>=N[a+36>>2]|j>>>0>2])){f=(j>>>0>=N[a+40>>2])<<2}I[a+92|0]=L[a+92|0]&251|f;b=K[a+228>>2];break h}b=K[a+228>>2];I[a+92|0]=L[a+92|0]&251|((f|0)!=(b|0))<<2}c=K[K[a+224>>2]+40>>2]+Q(b,40)|0;K[c>>2]=b;K[c+12>>2]=K[e+116>>2];f=K[e+120>>2];if(!K[a+76>>2]){if(N[c+4>>2]>=f>>>0){f=1;break a}K[e>>2]=b;Fa(d,2,1575,e);K[a+76>>2]=1;f=K[e+120>>2]}b=K[a+228>>2];c=K[K[a+224>>2]+40>>2];if(f){b=Q(b,40)+c|0;K[b+4>>2]=f;c=K[e+120>>2];K[b+8>>2]=c;b=K[b+16>>2];if(!b){b=Ia(c,24);K[(K[K[a+224>>2]+40>>2]+Q(K[a+228>>2],40)|0)+16>>2]=b;if(b){f=1;break a}f=0;Fa(d,1,6910,0);break a}b=La(b,Q(c,24));c=K[K[a+224>>2]+40>>2]+Q(K[a+228>>2],40)|0;if(!b){Ga(K[c+16>>2]);f=0;K[(K[K[a+224>>2]+40>>2]+Q(K[a+228>>2],40)|0)+16>>2]=0;Fa(d,1,6910,0);break a}K[c+16>>2]=b;f=1;break a}i:{f=Q(b,40)+c|0;g=K[f+16>>2];if(g){break i}K[f+8>>2]=10;g=Ia(10,24);c=K[K[a+224>>2]+40>>2];b=K[a+228>>2];K[(c+Q(b,40)|0)+16>>2]=g;if(g){break i}f=0;K[(Q(b,40)+c|0)+8>>2]=0;Fa(d,1,6910,0);break a}b=Q(b,40)+c|0;c=K[e+116>>2];if(N[b+8>>2]>c>>>0){f=1;break a}f=1;h=b;b=c+1|0;K[h+8>>2]=b;b=La(g,Q(b,24));c=K[K[a+224>>2]+40>>2]+Q(K[a+228>>2],40)|0;if(!b){Ga(K[c+16>>2]);f=0;a=K[K[a+224>>2]+40>>2]+Q(K[a+228>>2],40)|0;K[a+8>>2]=0;K[a+16>>2]=0;Fa(d,1,6910,0);break a}K[c+16>>2]=b;break a}K[e+80>>2]=b;Fa(d,1,12096,e+80|0);f=0}ra=e+128|0;return f|0}function rb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;g=K[a+8>>2];e=g+K[a+4>>2]|0;a:{if(!K[a+12>>2]){if((e|0)<2|(d|0)<=0){break a}q=e&2147483644;m=e&3;r=e&1;s=g+1|0;h=K[a>>2];o=h+(e<<2)|0;t=e-4>>>1|0;a=e-1|0;u=h+(a<<2)|0;v=Q(c,g)<<2;l=e>>>0<4;w=Q(a>>>1|0,c)<<2;while(1){g=K[b+v>>2];e=K[b>>2]-(g+1>>1)|0;i=0;a=0;if(!l){while(1){j=a+1|0;x=K[(Q(j,c)<<2)+b>>2];f=K[(Q(a+s|0,c)<<2)+b>>2];p=h+(i<<2)|0;K[p>>2]=e;k=e;e=x-((g+f|0)+2>>2)|0;K[p+4>>2]=(k+e>>1)+g;i=i+2|0;k=(a|0)!=(t|0);g=f;a=j;if(k){continue}break}}K[h+(i<<2)>>2]=e;if(r){a=K[b+w>>2]-(g+1>>1)|0;K[u>>2]=a;e=a+e>>1;a=-8}else{a=-4}K[a+o>>2]=e+g;e=0;a=0;g=0;if(!l){while(1){K[(Q(a,c)<<2)+b>>2]=K[h+(a<<2)>>2];f=a|1;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];f=a|2;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];f=a|3;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];a=a+4|0;g=g+4|0;if((q|0)!=(g|0)){continue}break}}if(m){while(1){K[(Q(a,c)<<2)+b>>2]=K[h+(a<<2)>>2];a=a+1|0;e=e+1|0;if((m|0)!=(e|0)){continue}break}}b=b+4|0;n=n+1|0;if((n|0)!=(d|0)){continue}break}break a}b:{switch(e-1|0){case 0:if((d|0)<=0){break a}if(d>>>0>=4){c=d&2147483644;a=0;while(1){K[b>>2]=K[b>>2]/2;K[b+4>>2]=K[b+4>>2]/2;K[b+8>>2]=K[b+8>>2]/2;K[b+12>>2]=K[b+12>>2]/2;b=b+16|0;a=a+4|0;if((c|0)!=(a|0)){continue}break}}c=d&3;if(!c){break a}a=0;while(1){K[b>>2]=K[b>>2]/2;b=b+4|0;a=a+1|0;if((c|0)!=(a|0)){continue}break};break a;case 1:if((d|0)<=0){break a}a=K[a>>2];e=0;g=Q(c,g)<<2;while(1){f=b+g|0;j=K[b>>2]-(K[f>>2]+1>>1)|0;K[a+4>>2]=j;f=j+K[f>>2]|0;K[a>>2]=f;K[b>>2]=f;K[(c<<2)+b>>2]=K[a+4>>2];b=b+4|0;e=e+1|0;if((e|0)!=(d|0)){continue}break};break a;default:break b}}if((e|0)<3|(d|0)<=0){break a}q=e&2147483644;m=e&3;h=K[a>>2];r=(h+(e<<2)|0)-4|0;a=e-2|0;s=h+(a<<2)|0;o=e&1;f=!o;t=((e-f|0)-4>>>1|0)+1|0;u=Q(c,g)<<2;v=a-f>>>0<2;w=Q((e>>>1|0)-1|0,c)<<2;x=e-1>>>0<3;while(1){l=b+u|0;g=K[l+(c<<2)>>2];a=K[l>>2];e=K[b>>2]-((g+a|0)+2>>2)|0;K[h>>2]=e+a;i=1;a=1;if(!v){while(1){p=K[(Q(a,c)<<2)+b>>2];j=a+1|0;f=K[l+(Q(j,c)<<2)>>2];y=h+(i<<2)|0;K[y>>2]=e;k=e;e=p-((g+f|0)+2>>2)|0;K[y+4>>2]=(k+e>>1)+g;i=i+2|0;k=(a|0)!=(t|0);a=j;g=f;if(k){continue}break}}K[h+(i<<2)>>2]=e;c:{if(!o){a=K[b+w>>2]-(g+1>>1)|0;K[s>>2]=(e+a>>1)+g;break c}a=e+g|0}K[r>>2]=a;e=0;a=0;g=0;if(!x){while(1){K[(Q(a,c)<<2)+b>>2]=K[h+(a<<2)>>2];f=a|1;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];f=a|2;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];f=a|3;K[(Q(f,c)<<2)+b>>2]=K[h+(f<<2)>>2];a=a+4|0;g=g+4|0;if((q|0)!=(g|0)){continue}break}}if(m){while(1){K[(Q(a,c)<<2)+b>>2]=K[h+(a<<2)>>2];a=a+1|0;e=e+1|0;if((m|0)!=(e|0)){continue}break}}b=b+4|0;n=n+1|0;if((n|0)!=(d|0)){continue}break}}}function Rb(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;r=ra-16|0;ra=r;a:{if(!c){Fa(d,1,11592,0);break a}t=K[c+16>>2];i=K[a+96>>2];if(t>>>0>2]){Fa(d,1,10533,0);break a}f=K[a+128>>2];g=Q(f,K[a+132>>2]);if(g>>>0<=e>>>0){K[r>>2]=e;K[r+4>>2]=g-1;Fa(d,1,16325,r);g=0;break a}j=(e>>>0)/(f>>>0)|0;f=e-Q(j,f)|0;h=K[a+108>>2]+Q(f,K[a+116>>2])|0;K[c>>2]=h;g=K[i>>2];l=g>>>0>>0?h:g;K[c>>2]=l;f=K[a+108>>2]+Q(K[a+116>>2],f+1|0)|0;K[c+8>>2]=f;g=K[K[a+96>>2]+8>>2];f=f>>>0>>0?f:g;K[c+8>>2]=f;i=K[a+112>>2]+Q(j,K[a+120>>2])|0;K[c+4>>2]=i;g=K[K[a+96>>2]+4>>2];h=g>>>0>>0?i:g;K[c+4>>2]=h;i=K[a+112>>2]+Q(K[a+120>>2],j+1|0)|0;K[c+12>>2]=i;g=K[K[a+96>>2]+12>>2];g=g>>>0>i>>>0?i:g;K[c+12>>2]=g;i=K[a+96>>2];m=K[i+16>>2];if(m){u=g-1|0;v=(g>>31)-!g|0;w=f-1|0;x=(f>>31)-!f|0;y=h-1|0;z=0-!h|0;A=l-1|0;B=0-!l|0;C=K[i+24>>2];g=K[c+24>>2];while(1){i=K[(C+Q(q,52)|0)+40>>2];K[g+40>>2]=i;f=B;l=K[g>>2];h=l+A|0;f=l>>>0>h>>>0?f+1|0:f;n=Ne(h,f,l,0);K[g+16>>2]=n;f=z;h=K[g+4>>2];j=h+y|0;f=h>>>0>j>>>0?f+1|0:f;f=Ne(j,f,h,0);K[g+20>>2]=f;j=f;p=i;f=i&31;if((i&63)>>>0>=32){k=-1<>>32-f;f=-1<>31)+(i>>>0>>0)|0)|0;j=o;o=p&31;if((p&63)>>>0>=32){o=k>>o}else{o=((1<>>o}k=h>>31;s=k+v|0;j=h+u|0;s=j>>>0>>0?s+1|0:s;j=Me(j,s,h,k);h=i-j|0;j=f-((j>>31)+(i>>>0>>0)|0)|0;k=p&31;if((p&63)>>>0>=32){j=j>>k}else{j=((1<>>k}K[g+12>>2]=o-j;j=f-((n>>31)+(i>>>0>>0)|0)|0;h=i-n|0;n=p&31;if((p&63)>>>0>=32){n=j>>n}else{n=((1<>>n}j=l>>31;k=j+x|0;h=l+w|0;k=h>>>0>>0?k+1|0:k;l=Me(h,k,l,j);h=i-l|0;i=f-((l>>31)+(i>>>0>>0)|0)|0;f=h;h=p&31;if((p&63)>>>0>=32){f=i>>h}else{f=((1<>>h}K[g+8>>2]=n-f;g=g+52|0;q=q+1|0;if((q|0)!=(m|0)){continue}break}}if(m>>>0>>0){g=K[c+24>>2];while(1){f=Q(m,52);Ga(K[(f+g|0)+44>>2]);g=K[c+24>>2];K[(f+g|0)+44>>2]=0;m=m+1|0;if(m>>>0>2]){continue}break}K[c+16>>2]=K[K[a+96>>2]+16>>2]}g=K[a+100>>2];if(g){Ya(g)}f=Bb();K[a+100>>2]=f;g=0;if(!f){break a}Ob(c,f);K[a+44>>2]=e;if(!$a(K[a+216>>2],24,d)){break a}h=K[a+216>>2];e=K[h>>2];m=K[h+8>>2];b:{if(e){g=1;i=e&1;if((e|0)==1){e=0}else{f=e&-2;q=0;while(1){e=0;c:{if(!g){break c}e=0;if(!(va[K[m>>2]](a,b,d)|0)){break c}e=(va[K[m+4>>2]](a,b,d)|0)!=0}g=e;m=m+8|0;q=q+2|0;if((f|0)!=(q|0)){continue}break}e=!g}g=i?0:g;if(!(e|!i)){g=(va[K[m>>2]](a,b,d)|0)!=0}Ta(h);if(g){break b}Ya(K[a+96>>2]);g=0;K[a+96>>2]=0;break a}Ta(h)}g=Sb(a,c)}ra=r+16|0;return g|0}function lc(a,b,c,d,e,f,g){var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a:{n=Q(e,3);h=K[b>>2]>>>n|0;if(h&2097168){break a}h=h&495;if(!h){break a}o=a+28|0;l=o+(L[h+K[a+108>>2]|0]<<2)|0;K[a+104>>2]=l;k=K[l>>2];i=K[k>>2];h=K[a+4>>2]-i|0;K[a+4>>2]=h;j=K[a>>2];b:{if(j>>>16>>>0>>0){m=K[k+4>>2];K[a+4>>2]=i;h=h>>>0>>0;K[l>>2]=K[k+(h?8:12)>>2];k=h?m:!m;h=K[a+8>>2];while(1){c:{if(h){break c}h=K[a+16>>2];m=h+1|0;l=L[h+1|0];if(L[h|0]==255){if(l>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;j=j+65280|0;h=8;break c}K[a+16>>2]=m;j=(l<<9)+j|0;h=7;break c}K[a+16>>2]=m;h=8;j=(l<<8)+j|0}h=h-1|0;K[a+8>>2]=h;j=j<<1;K[a>>2]=j;i=i<<1;K[a+4>>2]=i;if(i>>>0<32768){continue}break}h=i;break b}j=j-(i<<16)|0;K[a>>2]=j;if(!(h&32768)){m=K[k+4>>2];i=h>>>0>>0;K[l>>2]=K[k+(i?12:8)>>2];k=i?!m:m;i=K[a+8>>2];while(1){d:{if(i){break d}i=K[a+16>>2];m=i+1|0;l=L[i+1|0];if(L[i|0]==255){if(l>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;j=j+65280|0;i=8;break d}K[a+16>>2]=m;j=(l<<9)+j|0;i=7;break d}K[a+16>>2]=m;i=8;j=(l<<8)+j|0}i=i-1|0;K[a+8>>2]=i;j=j<<1;K[a>>2]=j;h=h<<1;K[a+4>>2]=h;if(h>>>0<32768){continue}break}break b}k=K[k+4>>2]}e:{if(!k){break e}p=b-4|0;i=K[b>>2];k=K[b+4>>2]>>>n+17&4|(K[p>>2]>>>n+19&1|(i>>>n+16&64|i>>>n&170|i>>>(e?n+12|0:14)&16));m=o+(L[k+24336|0]<<2)|0;K[a+104>>2]=m;l=K[m>>2];i=K[l>>2];h=h-i|0;K[a+4>>2]=h;o=L[k+24592|0];f:{if(j>>>16>>>0>>0){k=K[l+4>>2];K[a+4>>2]=i;h=h>>>0>>0;K[m>>2]=K[l+(h?8:12)>>2];l=h?k:!k;h=K[a+8>>2];while(1){g:{if(h){break g}h=K[a+16>>2];m=h+1|0;k=L[h+1|0];if(L[h|0]==255){if(k>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;j=j+65280|0;h=8;break g}K[a+16>>2]=m;j=(k<<9)+j|0;h=7;break g}K[a+16>>2]=m;h=8;j=(k<<8)+j|0}h=h-1|0;K[a+8>>2]=h;j=j<<1;K[a>>2]=j;i=i<<1;K[a+4>>2]=i;if(i>>>0<32768){continue}break}break f}k=j-(i<<16)|0;K[a>>2]=k;if(!(h&32768)){j=K[l+4>>2];i=h>>>0>>0;K[m>>2]=K[l+(i?12:8)>>2];l=i?!j:j;j=K[a+8>>2];while(1){h:{if(j){break h}j=K[a+16>>2];m=j+1|0;i=L[j+1|0];if(L[j|0]==255){if(i>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;k=k+65280|0;j=8;break h}K[a+16>>2]=m;k=(i<<9)+k|0;j=7;break h}K[a+16>>2]=m;j=8;k=(i<<8)+k|0}j=j-1|0;K[a+8>>2]=j;k=k<<1;K[a>>2]=k;h=h<<1;K[a+4>>2]=h;if(h>>>0<32768){continue}break}break f}l=K[l+4>>2]}K[c>>2]=(l|0)==(o|0)?d:0-d|0;K[p>>2]=K[p>>2]|32<>2]=K[b>>2]|(c<<19|16)<>2]=K[b+4>>2]|8<>2]=K[a+4>>2]|32768;K[a>>2]=K[a>>2]|c<<31|65536;a=a-4|0;K[a>>2]=K[a>>2]|131072}if((e|0)!=3){break e}a=(f<<2)+b|0;K[a+4>>2]=K[a+4>>2]|1;K[a>>2]=K[a>>2]|c<<18|2;a=a-4|0;K[a>>2]=K[a>>2]|4}K[b>>2]=K[b>>2]|2097152<>2];a:{if(!(!(K[K[a+180>>2]+5596>>2]?K[a+128>>2]!=1|K[a+132>>2]!=1:1)|K[a+8>>2]==8)){Fa(g,1,10577,0);break a}m=K[b+16>>2];b:{if(!m){break b}k=K[a+184>>2];l=K[b+24>>2];if(m>>>0>=8){p=m&-8;while(1){K[(Q(i,52)+l|0)+40>>2]=k;K[(Q(i|1,52)+l|0)+40>>2]=k;K[(Q(i|2,52)+l|0)+40>>2]=k;K[(Q(i|3,52)+l|0)+40>>2]=k;K[(Q(i|4,52)+l|0)+40>>2]=k;K[(Q(i|5,52)+l|0)+40>>2]=k;K[(Q(i|6,52)+l|0)+40>>2]=k;K[(Q(i|7,52)+l|0)+40>>2]=k;i=i+8|0;n=n+8|0;if((p|0)!=(n|0)){continue}break}}m=m&7;if(!m){break b}while(1){K[(Q(i,52)+l|0)+40>>2]=k;i=i+1|0;o=o+1|0;if((m|0)!=(o|0)){continue}break}}if(!(c|d|e|f)){Fa(g,4,6307,0);K[a+28>>2]=0;K[a+32>>2]=0;c=K[a+132>>2];K[a+36>>2]=K[a+128>>2];K[a+40>>2]=c;K[b>>2]=K[j>>2];K[b+4>>2]=K[j+4>>2];K[b+8>>2]=K[j+8>>2];K[b+12>>2]=K[j+12>>2];i=Db(b,g);break a}if((c|0)<0){K[h>>2]=c;Fa(g,1,12565,h);i=0;break a}i=K[j+8>>2];if(i>>>0>>0){K[h+20>>2]=i;K[h+16>>2]=c;Fa(g,1,13033,h+16|0);i=0;break a}i=K[j>>2];c:{if(i>>>0>c>>>0){K[h+196>>2]=i;K[h+192>>2]=c;Fa(g,2,13385,h+192|0);K[a+28>>2]=0;c=K[j>>2];break c}K[a+28>>2]=(c-K[a+108>>2]>>>0)/N[a+116>>2]}K[b>>2]=c;if((d|0)<0){K[h+32>>2]=d;Fa(g,1,12501,h+32|0);i=0;break a}c=K[j+12>>2];if(c>>>0>>0){K[h+52>>2]=c;K[h+48>>2]=d;Fa(g,1,12860,h+48|0);i=0;break a}c=K[j+4>>2];d:{if(c>>>0>d>>>0){K[h+180>>2]=c;K[h+176>>2]=d;Fa(g,2,13210,h+176|0);K[a+32>>2]=0;d=K[j+4>>2];break d}K[a+32>>2]=(d-K[a+112>>2]>>>0)/N[a+120>>2]}K[b+4>>2]=d;i=0;if((e|0)<=0){K[h+64>>2]=e;Fa(g,1,12435,h- -64|0);break a}c=K[j>>2];if(c>>>0>e>>>0){K[h+84>>2]=c;K[h+80>>2]=e;Fa(g,1,13296,h+80|0);break a}c=K[j+8>>2];e:{if(c>>>0>>0){K[h+164>>2]=c;K[h+160>>2]=e;Fa(g,2,12945,h+160|0);K[a+36>>2]=K[a+128>>2];e=K[j+8>>2];break e}k=0;d=e-K[a+108>>2]|0;l=d;c=K[a+116>>2];d=d+c|0;k=l>>>0>d>>>0?1:k;q=a,r=Ne(d-1|0,k-!d|0,c,0),K[q+36>>2]=r}K[b+8>>2]=e;if((f|0)<=0){K[h+96>>2]=f;Fa(g,1,12368,h+96|0);break a}c=K[j+4>>2];if(c>>>0>f>>>0){K[h+116>>2]=c;K[h+112>>2]=f;Fa(g,1,13120,h+112|0);break a}c=K[j+12>>2];f:{if(c>>>0>>0){K[h+148>>2]=c;K[h+144>>2]=f;Fa(g,2,12771,h+144|0);K[a+40>>2]=K[a+132>>2];f=K[j+12>>2];break f}e=0;d=f-K[a+112>>2]|0;l=d;c=K[a+120>>2];d=d+c|0;e=l>>>0>d>>>0?1:e;q=a,r=Ne(d-1|0,e-!d|0,c,0),K[q+40>>2]=r}K[b+12>>2]=f;I[a+92|0]=L[a+92|0]|2;if(!Db(b,g)){break a}a=K[b>>2];c=K[b+4>>2];d=K[b+12>>2];K[h+136>>2]=K[b+8>>2];K[h+140>>2]=d;K[h+128>>2]=a;K[h+132>>2]=c;Fa(g,4,7529,h+128|0);i=1}ra=h+208|0;return i|0}function kc(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{m=Q(e,3);g=K[b>>2]>>>m|0;if(g&2097168){break a}n=a+28|0;k=n+(L[K[a+108>>2]+(g&495)|0]<<2)|0;K[a+104>>2]=k;j=K[k>>2];h=K[j>>2];g=K[a+4>>2]-h|0;K[a+4>>2]=g;i=K[a>>2];b:{if(i>>>16>>>0>>0){l=K[j+4>>2];K[a+4>>2]=h;g=g>>>0>>0;K[k>>2]=K[j+(g?8:12)>>2];j=g?l:!l;g=K[a+8>>2];while(1){c:{if(g){break c}g=K[a+16>>2];l=g+1|0;k=L[g+1|0];if(L[g|0]==255){if(k>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;i=i+65280|0;g=8;break c}K[a+16>>2]=l;i=(k<<9)+i|0;g=7;break c}K[a+16>>2]=l;g=8;i=(k<<8)+i|0}g=g-1|0;K[a+8>>2]=g;i=i<<1;K[a>>2]=i;h=h<<1;K[a+4>>2]=h;if(h>>>0<32768){continue}break}g=h;break b}i=i-(h<<16)|0;K[a>>2]=i;if(!(g&32768)){l=K[j+4>>2];h=g>>>0>>0;K[k>>2]=K[j+(h?12:8)>>2];j=h?!l:l;h=K[a+8>>2];while(1){d:{if(h){break d}h=K[a+16>>2];l=h+1|0;k=L[h+1|0];if(L[h|0]==255){if(k>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;i=i+65280|0;h=8;break d}K[a+16>>2]=l;i=(k<<9)+i|0;h=7;break d}K[a+16>>2]=l;h=8;i=(k<<8)+i|0}h=h-1|0;K[a+8>>2]=h;i=i<<1;K[a>>2]=i;g=g<<1;K[a+4>>2]=g;if(g>>>0<32768){continue}break}break b}j=K[j+4>>2]}if(!j){break a}j=n;n=b-4|0;h=K[b>>2];o=K[b+4>>2]>>>m+17&4|(K[n>>2]>>>m+19&1|(h>>>m+16&64|h>>>m&170|h>>>(e?m+12|0:14)&16));l=j+(L[o+24336|0]<<2)|0;K[a+104>>2]=l;k=K[l>>2];h=K[k>>2];g=g-h|0;K[a+4>>2]=g;e:{if(i>>>16>>>0>>0){j=K[k+4>>2];K[a+4>>2]=h;g=g>>>0>>0;K[l>>2]=K[k+(g?8:12)>>2];k=g?j:!j;g=K[a+8>>2];while(1){f:{if(g){break f}g=K[a+16>>2];l=g+1|0;j=L[g+1|0];if(L[g|0]==255){if(j>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;i=i+65280|0;g=8;break f}K[a+16>>2]=l;i=(j<<9)+i|0;g=7;break f}K[a+16>>2]=l;g=8;i=(j<<8)+i|0}g=g-1|0;K[a+8>>2]=g;i=i<<1;K[a>>2]=i;h=h<<1;K[a+4>>2]=h;if(h>>>0<32768){continue}break}break e}j=i-(h<<16)|0;K[a>>2]=j;if(!(g&32768)){i=K[k+4>>2];h=g>>>0>>0;K[l>>2]=K[k+(h?12:8)>>2];k=h?!i:i;i=K[a+8>>2];while(1){g:{if(i){break g}i=K[a+16>>2];l=i+1|0;h=L[i+1|0];if(L[i|0]==255){if(h>>>0>=144){K[a+12>>2]=K[a+12>>2]+1;j=j+65280|0;i=8;break g}K[a+16>>2]=l;j=(h<<9)+j|0;i=7;break g}K[a+16>>2]=l;i=8;j=(h<<8)+j|0}i=i-1|0;K[a+8>>2]=i;j=j<<1;K[a>>2]=j;g=g<<1;K[a+4>>2]=g;if(g>>>0<32768){continue}break}break e}k=K[k+4>>2]}g=c;c=L[o+24592|0];K[g>>2]=(c|0)==(k|0)?d:0-d|0;K[n>>2]=K[n>>2]|32<>2]=K[b>>2]|(d<<19|16)<>2]=K[b+4>>2]|8<>2]<<2)+b|0;K[c+4>>2]=K[c+4>>2]|32768;K[c>>2]=K[c>>2]|d<<31|65536;c=c-4|0;K[c>>2]=K[c>>2]|131072}if((e|0)!=3){break a}a=(K[a+124>>2]<<2)+b|0;K[a+4>>2]=K[a+4>>2]|4;K[a+12>>2]=K[a+12>>2]|1;K[a+8>>2]=K[a+8>>2]|d<<18|2}}function be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=ra-112|0;ra=e;j=1024;a:{b:{h=Ia(1,1024);if(h){l=e+92|0;k=e+108|0;while(1){c:{d:{d=e+104|0;e:{if((Na(b,d,8,c)|0)!=8){break e}Ha(d,e+88|0,4);Ha(k,l,4);f=8;f:{g:{h:{i:{switch(K[e+88>>2]){case 0:d=Va(b);g=ua;if((g|0)<0){g=1}else{g=d>>>0<4294967288&(g|0)<=0}if(g){break h}Fa(c,1,8412,0);break e;case 1:break i;default:break f}}d=e+104|0;if((Na(b,d,8,c)|0)!=8){break e}Ha(d,e+100|0,4);if(!K[e+100>>2]){break g}Fa(c,1,8412,0);break e}K[e+88>>2]=d+8;break f}Ha(k,e+88|0,4);f=16}d=K[e+92>>2];if((d|0)==1785737827){b=K[a+100>>2];if(b&4){K[a+100>>2]=b|8;break e}Fa(c,1,5665,0);Ga(h);a=0;break a}i=K[e+88>>2];if(!i){Fa(c,1,3231,0);Ga(h);a=0;break a}if(f>>>0>i>>>0){K[e+4>>2]=d;K[e>>2]=i;Fa(c,1,13896,e);break b}j:{k:{l:{m:{n:{o:{p:{q:{r:{s:{if((d|0)<=1668246641){if((d|0)==1651532643){break r}if((d|0)==1667523942){break p}if((d|0)!=1668112752){break s}g=25248;break n}if((d|0)<=1783635999){if((d|0)==1668246642){break o}g=25216;if((d|0)==1768449138){break n}if((d|0)!=1718909296){break s}g=25192;break l}if((d|0)==1885564018){break q}if((d|0)==1783636e3){break m}g=25200;if((d|0)==1785737832){break l}}d=K[a+100>>2];if(d&1){break j}Fa(c,1,2025,0);Ga(h);a=0;break a}g=25232;break n}g=25240;break n}g=25256;break n}g=25224}K[e+76>>2]=d&255;K[e+64>>2]=d>>>24;K[e+72>>2]=d>>>8&255;K[e+68>>2]=d>>>16&255;Fa(c,2,1974,e- -64|0);f=i-f|0;if(L[a+100|0]&4){break k}d=K[e+92>>2];K[e+48>>2]=d>>>24;K[e+60>>2]=d&255;K[e+52>>2]=d>>>16&255;K[e+56>>2]=d>>>8&255;Fa(c,2,6734,e+48|0);K[a+100>>2]=K[a+100>>2]|2147483647;d=vb(b,f,c);if(!ua&(d|0)==(f|0)){continue}Fa(c,1,3711,0);Ga(h);a=0;break a}g=25184}f=i-f|0}d=f;f=Va(b);i=ua;if((i|0)<0){f=1}else{f=(i|0)<=0&d>>>0>f>>>0}if(f){f=K[e+88>>2];a=K[e+92>>2];m=e,n=Va(b),K[m+40>>2]=n;K[e+36>>2]=d;K[e+32>>2]=a&255;K[e+20>>2]=a>>>24;K[e+16>>2]=f;K[e+28>>2]=a>>>8&255;K[e+24>>2]=a>>>16&255;Fa(c,1,15643,e+16|0);break b}if(d>>>0<=j>>>0){f=h;break c}j=d;f=La(h,d);if(f){break c}Ga(h);Fa(c,1,2156,0);a=0;break a}if(!(d&2)){Fa(c,1,2095,0);Ga(h);a=0;break a}K[a+100>>2]=d|2147483647;d=i-f|0;f=vb(b,d,c);if(!ua&(d|0)==(f|0)){continue}if(!(L[a+100|0]&8)){break d}Fa(c,2,3711,0)}Ga(h);a=1;break a}Fa(c,1,3711,0);Ga(h);a=0;break a}if((Na(b,f,d,c)|0)!=(d|0)){Fa(c,1,3761,0);Ga(f);a=0;break a}h=f;if(va[K[g+4>>2]](a,f,d,c)|0){continue}break}Ga(f);a=0;break a}Fa(c,1,4886,0);a=0;break a}Ga(h);a=0}ra=e+112|0;return a|0}function pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=ra-16|0;ra=g;if(K[a+8>>2]==16){h=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{h=K[a+12>>2]}a:{if(c>>>0<=1){Fa(d,1,4684,0);a=0;break a}Ha(b,g+12|0,2);if(K[g+12>>2]){Fa(d,2,5860,0);a=1;break a}if(c>>>0<=6){Fa(d,1,4684,0);a=0;break a}Ha(b+2|0,g+8|0,1);j=K[h+5628>>2];a=j;b:{c:{d:{e=K[h+5632>>2];if(!e){break d}i=K[g+8>>2];while(1){if((i|0)==K[a>>2]){break d}a=a+20|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}break c}if((e|0)!=(f|0)){break b}}if((e|0)==K[h+5636>>2]){a=e+10|0;K[h+5636>>2]=a;a=La(j,Q(a,20));if(!a){Ga(K[h+5628>>2]);K[h+5636>>2]=0;K[h+5628>>2]=0;K[h+5632>>2]=0;Fa(d,1,4710,0);a=0;break a}K[h+5628>>2]=a;e=K[h+5632>>2];f=Q(K[h+5636>>2]-e|0,20);if(f){B(a+Q(e,20)|0,0,f)}j=K[h+5628>>2];e=K[h+5632>>2]}a=Q(e,20)+j|0;n=1}K[a>>2]=K[g+8>>2];Ha(b+3|0,g+12|0,2);if(K[g+12>>2]){Fa(d,2,5860,0);a=1;break a}Ha(b+5|0,g+4|0,2);f=K[g+4>>2];if(f>>>0>=2){Fa(d,2,3093,0);a=1;break a}e=c-7|0;if(f){c=b+7|0;j=0;while(1){if(e>>>0<=2){Fa(d,1,4684,0);a=0;break a}Ha(c,g+12|0,1);if(K[g+12>>2]!=1){Fa(d,2,5542,0);a=1;break a}Ha(c+1|0,g,2);f=K[g>>2];b=f&32767;K[a+4>>2]=b;i=e-3|0;e=(f>>>15|0)+1|0;k=Q(e,b)+2|0;if(i>>>0>>0){Fa(d,1,4684,0);a=0;break a}c=c+3|0;f=0;if(b){while(1){Ha(c,g+12|0,e);if(K[g+12>>2]!=(f|0)){Fa(d,2,6222,0);a=1;break a}c=c+e|0;f=f+1|0;if(f>>>0>2]){continue}break}}Ha(c,g,2);e=K[g>>2];b=e&32767;K[g>>2]=b;if((b|0)!=K[a+4>>2]){Fa(d,2,3269,0);a=1;break a}e=(e>>>15|0)+1|0;l=Q(e,b)+3|0;k=i-k|0;if(l>>>0>k>>>0){Fa(d,1,4684,0);a=0;break a}c=c+2|0;f=0;if(b){while(1){Ha(c,g+12|0,e);if(K[g+12>>2]!=(f|0)){Fa(d,2,6222,0);a=1;break a}c=c+e|0;f=f+1|0;if(f>>>0>2]){continue}break}}Ha(c,g+12|0,3);e=K[g+12>>2];K[a+8>>2]=0;K[a+12>>2]=0;I[a+16|0]=!(e&65536)|L[a+16|0]&254;i=e&255;K[g+8>>2]=i;e:{if(!i){break e}m=K[h+5620>>2];if(m){f=K[h+5616>>2];b=0;while(1){if((i|0)==K[f+8>>2]){K[a+8>>2]=f;break e}f=f+20|0;b=b+1|0;if((m|0)!=(b|0)){continue}break}}Fa(d,1,4684,0);a=0;break a}e=e>>>8&255;K[g+8>>2]=e;f:{if(!e){break f}i=K[h+5620>>2];if(i){f=K[h+5616>>2];b=0;while(1){if((e|0)==K[f+8>>2]){K[a+12>>2]=f;break f}f=f+20|0;b=b+1|0;if((i|0)!=(b|0)){continue}break}}Fa(d,1,4684,0);a=0;break a}e=k-l|0;c=c+3|0;j=j+1|0;if(j>>>0>2]){continue}break}}if(e){Fa(d,1,4684,0);a=0;break a}a=1;if(!n){break a}K[h+5632>>2]=K[h+5632>>2]+1;a=1}ra=g+16|0;return a|0}function kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(N[a+44>>2]>=8){i=K[a+40>>2];l=8;while(1){k=K[a+12>>2]<<5;e=K[a>>2];g=K[a+36>>2];b=K[a+16>>2];h=K[a+20>>2];a:{if(b>>>0>=h>>>0){break a}j=e+k|0;d=b+1|0;if(h-b&1){c=j+(b<<6)|0;b=(Q(b,g)<<2)+i|0;f=K[b+4>>2];K[c>>2]=K[b>>2];K[c+4>>2]=f;f=K[b+28>>2];K[c+24>>2]=K[b+24>>2];K[c+28>>2]=f;f=K[b+20>>2];K[c+16>>2]=K[b+16>>2];K[c+20>>2]=f;f=K[b+12>>2];K[c+8>>2]=K[b+8>>2];K[c+12>>2]=f;b=d}if((d|0)==(h|0)){break a}while(1){d=(Q(b,g)<<2)+i|0;f=K[d+4>>2];c=j+(b<<6)|0;K[c>>2]=K[d>>2];K[c+4>>2]=f;f=K[d+28>>2];K[c+24>>2]=K[d+24>>2];K[c+28>>2]=f;f=K[d+20>>2];K[c+16>>2]=K[d+16>>2];K[c+20>>2]=f;f=K[d+12>>2];K[c+8>>2]=K[d+8>>2];K[c+12>>2]=f;d=b+1|0;c=j+(d<<6)|0;d=(Q(d,g)<<2)+i|0;f=K[d+28>>2];K[c+24>>2]=K[d+24>>2];K[c+28>>2]=f;f=K[d+20>>2];K[c+16>>2]=K[d+16>>2];K[c+20>>2]=f;f=K[d+12>>2];K[c+8>>2]=K[d+8>>2];K[c+12>>2]=f;f=K[d+4>>2];K[c>>2]=K[d>>2];K[c+4>>2]=f;b=b+2|0;if((h|0)!=(b|0)){continue}break}}b=K[a+24>>2];h=K[a+28>>2];b:{if(b>>>0>=h>>>0){break b}j=(e-k|0)+32|0;k=(Q(g,K[a+8>>2])<<2)+i|0;d=b+1|0;if(h-b&1){c=j+(b<<6)|0;b=k+(Q(b,g)<<2)|0;e=K[b+4>>2];K[c>>2]=K[b>>2];K[c+4>>2]=e;e=K[b+28>>2];K[c+24>>2]=K[b+24>>2];K[c+28>>2]=e;e=K[b+20>>2];K[c+16>>2]=K[b+16>>2];K[c+20>>2]=e;e=K[b+12>>2];K[c+8>>2]=K[b+8>>2];K[c+12>>2]=e;b=d}if((d|0)==(h|0)){break b}while(1){d=k+(Q(b,g)<<2)|0;e=K[d+4>>2];c=j+(b<<6)|0;K[c>>2]=K[d>>2];K[c+4>>2]=e;e=K[d+28>>2];K[c+24>>2]=K[d+24>>2];K[c+28>>2]=e;e=K[d+20>>2];K[c+16>>2]=K[d+16>>2];K[c+20>>2]=e;e=K[d+12>>2];K[c+8>>2]=K[d+8>>2];K[c+12>>2]=e;d=b+1|0;c=j+(d<<6)|0;d=k+(Q(d,g)<<2)|0;e=K[d+28>>2];K[c+24>>2]=K[d+24>>2];K[c+28>>2]=e;e=K[d+20>>2];K[c+16>>2]=K[d+16>>2];K[c+20>>2]=e;e=K[d+12>>2];K[c+8>>2]=K[d+8>>2];K[c+12>>2]=e;e=K[d+4>>2];K[c>>2]=K[d>>2];K[c+4>>2]=e;b=b+2|0;if((h|0)!=(b|0)){continue}break}}Za(a);b=0;if(K[a+32>>2]){while(1){d=K[a>>2]+(b<<5)|0;c=K[d+4>>2];g=(Q(K[a+36>>2],b)<<2)+i|0;K[g>>2]=K[d>>2];K[g+4>>2]=c;c=K[d+28>>2];K[g+24>>2]=K[d+24>>2];K[g+28>>2]=c;c=K[d+20>>2];K[g+16>>2]=K[d+16>>2];K[g+20>>2]=c;c=K[d+12>>2];K[g+8>>2]=K[d+8>>2];K[g+12>>2]=c;b=b+1|0;if(b>>>0>2]){continue}break}}i=i+32|0;l=l+8|0;if(l>>>0<=N[a+44>>2]){continue}break}}Ga(K[a>>2]);Ga(a)}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;c=K[b>>2]+7&-8;K[b>>2]=c+16;q=a;b=K[c>>2];a=K[c+4>>2];d=K[c+8>>2];c=K[c+12>>2];r=c;g=ra-32|0;ra=g;f=c&65535;e=d;d=0;c=c>>>16&32767;o=c;a:{if(c-15361>>>0<=2045){c=f<<4|e>>>28;d=e<<4|a>>>28;f=o-15360|0;a=a&268435455;b:{if((a|0)==134217728&(b|0)!=0|a>>>0>134217728){d=d+1|0;c=d?c:c+1|0;break b}if(b|(a|0)!=134217728){break b}a=d;d=d+(d&1)|0;c=a>>>0>d>>>0?c+1|0:c}a=d;d=c>>>0>1048575;b=d?0:a;a=d?0:c;c=0;e=f;f=d+f|0;e=e>>>0>f>>>0?1:c;break a}if(!(!(b|e|(a|f))|((c|0)!=32767|(d|0)!=0))){b=e;e=f<<4|b>>>28;b=b<<4|a>>>28;a=e|524288;f=2047;e=0;break a}if(o>>>0>17406){b=0;a=0;f=2047;e=0;break a}j=!(c|d);p=j?15360:15361;k=p-o|0;if((k|0)>112){b=0;a=0;f=0;e=0;break a}d=b;c=a;l=e;e=j?f:f|65536;f=e;h=l;m=128-k|0;c:{if(m&64){e=d;c=m+-64|0;d=c&31;if((c&63)>>>0>=32){c=b<>>32-d|a<>>0>=32){j=h<>>32-i|e<>>0>=32){e=0;h=c>>>h|0}else{e=c>>>h|0;h=((1<>>h}h=n|h;e=e|j;n=d;i=m&31;if((m&63)>>>0>=32){j=d<>>32-i|c<>2]=d;K[g+20>>2]=c;K[g+24>>2]=h;K[g+28>>2]=e;d:{if(k&64){c=l;b=k+-64|0;a=b&31;if((b&63)>>>0>=32){e=0;b=f>>>a|0}else{e=f>>>a|0;b=((1<>>a}a=e;l=0;f=0;break d}if(!k){break d}e=l;c=64-k|0;d=c&31;if((c&63)>>>0>=32){c=e<>>32-d|f<>>0>=32){j=0;a=a>>>b|0}else{j=a>>>b|0;a=((1<>>b}b=l|a;a=c|j;d=k&31;if((k&63)>>>0>=32){c=0;l=f>>>d|0}else{c=f>>>d|0;l=((1<>>d}f=c}K[g>>2]=b;K[g+4>>2]=a;K[g+8>>2]=l;K[g+12>>2]=f;a=K[g+8>>2];d=a<<4;a=K[g+12>>2]<<4|a>>>28;f=K[g>>2];b=K[g+4>>2];e=b;b=b>>>28|d;c=e&268435455;f=f|(o|0)!=(p|0)&(K[g+16>>2]|K[g+24>>2]|(K[g+20>>2]|K[g+28>>2]))!=0;e:{if((c|0)==134217728&(f|0)!=0|c>>>0>134217728){b=b+1|0;a=b?a:a+1|0;break e}if(f|(c|0)!=134217728){break e}c=a;a=b;b=b+(b&1)|0;a=a>>>0>b>>>0?c+1|0:c}f=a>>>0>1048575;a=f?a^1048576:a;e=0}ra=g+32|0;x(0,b|0);x(1,a|(r&-2147483648|f<<20));s=q,t=+z(),P[s>>3]=t}function Wc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=K[a+24>>2];if(!K[q+16>>2]){return 1}r=K[q+24>>2];o=K[K[K[a+20>>2]>>2]+20>>2];while(1){e=K[r+36>>2];K[b+36>>2]=e;c=Q(e,152);e=K[o+28>>2];d=c+e|0;u=K[a+64>>2];a:{if(u){e=e+Q(K[o+24>>2],152)|0;p=K[e-144>>2]-K[e-152>>2]|0;c=d+12|0;f=d+4|0;e=K[d+8>>2];h=K[d>>2];g=36;break a}c=d+148|0;f=d+140|0;e=K[d+144>>2];h=K[d+136>>2];p=e-h|0;g=52}v=K[g+o>>2];b:{c:{if(!v){break c}l=K[f>>2];n=K[c>>2];i=e-h|0;f=K[b+40>>2];c=f&31;if((f&63)>>>0>=32){d=-1<>>32-c;c=-1<>2];k=m+j|0;g=d^-1;c=g;c=k>>>0>>0?c+1|0:c;d=f&31;if((f&63)>>>0>=32){k=c>>>d|0}else{k=((1<>>d}d=K[b+8>>2];j=K[b+16>>2];m=j+m|0;c=g;c=m>>>0>>0?c+1|0:c;g=f&31;if((f&63)>>>0>=32){f=c>>>g|0}else{f=((1<>>g}c=f+d|0;d:{if(f>>>0>>0){s=h-f|0;g=0;if(c>>>0>=e>>>0){m=0;e=i;break d}e=c-h|0;m=i-e|0;break d}g=f-h|0;if(c>>>0>=e>>>0){e=i-g|0;s=0;m=0;break d}m=e-c|0;s=0;e=d}c=n-l|0;f=K[b+12>>2];i=f+k|0;e:{if(k>>>0>>0){t=l-k|0;k=0;j=0;if(i>>>0>=n>>>0){break e}j=c;c=i-l|0;j=j-c|0;break e}k=k-l|0;if(i>>>0>=n>>>0){c=c-k|0;t=0;j=0;break e}t=0;c=f;j=n-i|0}h=0;if((g|k|(m|j)|(c|e))<0){break b}i=Q(k,p)+g|0;g=K[b+44>>2];l=Q(d,t)+s|0;f:{g:{if(!(i|g|(l|(d|0)!=(p|0))|(d|0)!=(e|0))){if((c|0)!=(f|0)){break g}e=(u?36:52)+o|0;K[b+44>>2]=K[e>>2];K[e>>2]=0;break c}if(g){break f}}Le(f,0,d);if(ua|!f){break b}d=Q(d,f);if(d>>>0>1073741823){break b}d=Ma(d<<2);K[b+44>>2]=d;if(!d){break b}f=K[b+8>>2];g=K[b+12>>2];if((f|0)==(e|0)&(g|0)==(c|0)){break f}f=Q(f,g)<<2;if(!f){break f}B(d,0,f)}if(!c){break c}g=c&1;e=e<<2;h=K[b+44>>2]+(l<<2)|0;d=(i<<2)+v|0;if((c|0)!=1){i=c&2147483646;c=0;while(1){l=!e;if(!l){E(h,d,e)}n=p<<2;d=n+d|0;f=(K[b+8>>2]<<2)+h|0;if(!l){E(f,d,e)}d=d+n|0;h=f+(K[b+8>>2]<<2)|0;c=c+2|0;if((i|0)!=(c|0)){continue}break}}if(!g|!e){break c}E(h,d,e)}o=o+76|0;r=r+52|0;b=b+52|0;h=1;w=w+1|0;if(w>>>0>2]){continue}}break}return h}function Eb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;if(a){a:{if(K[a>>2]){b=K[a+12>>2];if(b){nb(b);Ga(K[a+12>>2]);K[a+12>>2]=0}b=K[a+16>>2];if(b){Ga(b);K[a+16>>2]=0;K[a+20>>2]=0}Ga(K[a+64>>2]);K[a+60>>2]=0;K[a+64>>2]=0;Ga(K[a+72>>2]);K[a+72>>2]=0;Ga(K[a+88>>2]);K[a+88>>2]=0;break a}b=K[a+44>>2];if(b){Ga(b);K[a+44>>2]=0}b=K[a+32>>2];if(b){Ga(b);K[a+32>>2]=0;K[a+36>>2]=0}b=K[a+52>>2];if(!b){break a}Ga(b);K[a+52>>2]=0;K[a+56>>2]=0}hc(K[a+232>>2]);b=K[a+180>>2];if(b){e=Q(K[a+128>>2],K[a+132>>2]);if(e){while(1){nb(b);b=b+5644|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}b=K[a+180>>2]}Ga(b);K[a+180>>2]=0}b=K[a+140>>2];if(b){c=K[a+136>>2];if(c){b=0;while(1){e=K[K[a+140>>2]+(b<<3)>>2];if(e){Ga(e);c=K[a+136>>2]}b=b+1|0;if(c>>>0>b>>>0){continue}break}b=K[a+140>>2]}K[a+136>>2]=0;Ga(b);K[a+140>>2]=0}Ga(K[a+160>>2]);K[a+144>>2]=0;K[a+160>>2]=0;Ga(K[a+124>>2]);K[a+124>>2]=0;if(!(L[a+212|0]&2)){Ga(K[a+192>>2])}B(a+104|0,0,112);tb(K[a+216>>2]);K[a+216>>2]=0;tb(K[a+220>>2]);K[a+216>>2]=0;d=K[a+224>>2];if(d){b=K[d+28>>2];if(b){Ga(b);K[d+28>>2]=0}c=K[d+40>>2];if(c){if(K[d+36>>2]){while(1){e=Q(g,40);b=K[(e+c|0)+36>>2];if(b){Ga(b);c=K[d+40>>2];K[(e+c|0)+36>>2]=0}b=K[(c+e|0)+16>>2];if(b){Ga(b);c=K[d+40>>2];K[(e+c|0)+16>>2]=0}b=K[(c+e|0)+24>>2];if(b){Ga(b);c=K[d+40>>2];K[(e+c|0)+24>>2]=0}g=g+1|0;if(g>>>0>2]){continue}break}}Ga(c);K[d+40>>2]=0}Ga(d)}K[a+224>>2]=0;Ya(K[a+96>>2]);K[a+96>>2]=0;Ya(K[a+100>>2]);K[a+100>>2]=0;f=K[a+236>>2];if(f){b:{if(!K[f+8>>2]){break b}if(K[f+12>>2]){K[f+40>>2]=0;while(1){if(K[f+24>>2]>0){continue}break}}K[f+16>>2]=1;Ga(K[f>>2]);c=K[f+28>>2];if(!c){break b}while(1){b=K[c+4>>2];Ga(c);K[f+28>>2]=b;c=b;if(b){continue}break}}d=K[f+36>>2];if(d){g=K[d+4>>2];if((g|0)>0){b=0;while(1){e=K[d>>2]+Q(b,12)|0;c=K[e+8>>2];if(c){va[c|0](K[e+4>>2]);g=K[d+4>>2]}b=b+1|0;if((g|0)>(b|0)){continue}break}}Ga(K[d>>2]);Ga(d)}Ga(f)}K[a+236>>2]=0;Ga(a)}}function oe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=ra-16|0;ra=g;if(K[a+8>>2]==16){h=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{h=K[a+12>>2]}a:{if(!c){Fa(d,1,4222,0);break a}i=K[a+96>>2];e=1;Ha(b,g+8|0,1);f=K[g+8>>2];if(f>>>0>=2){Fa(d,2,9755,0);break a}if((f+1|0)!=(c|0)){e=0;Fa(d,2,4222,0);break a}d=K[i+16>>2];b:{if(!d){break b}e=K[h+5584>>2];if(d>>>0>=8){i=d&-8;c=0;while(1){K[e+8636>>2]=0;K[e+7556>>2]=0;K[e+6476>>2]=0;K[e+5396>>2]=0;K[e+4316>>2]=0;K[e+3236>>2]=0;K[e+2156>>2]=0;K[e+1076>>2]=0;e=e+8640|0;c=c+8|0;if((i|0)!=(c|0)){continue}break}}d=d&7;if(!d){break b}c=0;while(1){K[e+1076>>2]=0;e=e+1080|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}}c=K[h+5608>>2];if(c){Ga(c);K[h+5608>>2]=0;f=K[g+8>>2]}if(!f){e=1;break a}i=0;while(1){b=b+1|0;Ha(b,g+12|0,1);c:{if(!K[h+5632>>2]){break c}d=K[h+5628>>2];if(K[d>>2]!=K[g+12>>2]){break c}f=K[d+4>>2];j=K[a+96>>2];if((f|0)!=K[j+16>>2]){break c}c=K[d+8>>2];if(c){e=0;f=Q(f,f);if(K[c+16>>2]!=(Q(f,K[(K[c>>2]<<2)+24848>>2])|0)){break a}k=Ja(f<<2);K[h+5608>>2]=k;if(!k){break a}va[K[(K[c>>2]<<2)+25152>>2]](K[c+12>>2],k,f)}c=K[d+12>>2];if(!c){break c}e=0;d=K[j+16>>2];if(K[c+16>>2]!=(Q(d,K[(K[c>>2]<<2)+24848>>2])|0)){break a}f=Ja(d<<2);if(!f){break a}va[K[(K[c>>2]<<2)+25168>>2]](K[c+12>>2],f,d);c=K[j+16>>2];d:{if(!c){break d}j=c&7;e=K[h+5584>>2];e:{if(c>>>0<8){c=f;break e}k=c&-8;d=0;c=f;while(1){K[e+1076>>2]=K[c>>2];K[e+2156>>2]=K[c+4>>2];K[e+3236>>2]=K[c+8>>2];K[e+4316>>2]=K[c+12>>2];K[e+5396>>2]=K[c+16>>2];K[e+6476>>2]=K[c+20>>2];K[e+7556>>2]=K[c+24>>2];K[e+8636>>2]=K[c+28>>2];e=e+8640|0;c=c+32|0;d=d+8|0;if((k|0)!=(d|0)){continue}break}}d=0;if(!j){break d}while(1){K[e+1076>>2]=K[c>>2];e=e+1080|0;c=c+4|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}}Ga(f)}e=1;i=i+1|0;if(i>>>0>2]){continue}break}}ra=g+16|0;return e|0}function Fb(a,b,c,d,e,f,g,h){var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=K[K[a+24>>2]+24>>2]+Q(b,52)|0;l=K[m+4>>2];k=l-1|0;o=K[a+60>>2];j=k+o|0;p=0-!l|0;i=p;r=K[K[K[a+20>>2]>>2]+20>>2]+Q(b,76)|0;n=K[r+12>>2];i=Ne(j,j>>>0>>0?i+1|0:i,l,0);q=i>>>0>n>>>0?n:i;j=K[m>>2];m=j-1|0;s=K[a+56>>2];n=m+s|0;o=0-!j|0;i=o;t=K[r+8>>2];i=Ne(n,n>>>0>>0?i+1|0:i,j,0);n=i>>>0>t>>>0?t:i;i=p;t=K[r+4>>2];s=K[a+52>>2];k=s+k|0;i=Ne(k,k>>>0>>0?i+1|0:i,l,0);k=i>>>0>>0?t:i;i=o;p=K[r>>2];l=m;m=K[a+48>>2];l=l+m|0;i=Ne(l,l>>>0>>0?i+1|0:i,j,0);i=i>>>0

>>0?p:i;l=0;p=K[(K[K[a+32>>2]+5584>>2]+Q(b,1080)|0)+20>>2];c=K[r+20>>2]+(c?0-c|0:-1)|0;a:{if(!c){a=n;l=i;b=k;break a}m=c-1|0;j=(d&1)<>>0>>0){a=c&31;l=i-j|0;if((c&63)>>>0>=32){i=-1<>>32-a;a=-1<>>0>>0?i+1|0:i;b=a;a=c&31;if((c&63)>>>0>=32){l=i>>>a|0}else{l=((1<>>a}}a=0;b=0;d=d>>>1<>>0>>0){b=c&31;o=k-d|0;if((c&63)>>>0>=32){i=-1<>>32-b;b=-1<>>0>>0?i+1|0:i;k=b;b=c&31;if((c&63)>>>0>=32){b=i>>>b|0}else{b=((1<>>b}}if(j>>>0>>0){a=c&31;k=n-j|0;if((c&63)>>>0>=32){i=-1<>>32-a;a=-1<>>0>>0?i+1|0:i;j=a;a=c&31;if((c&63)>>>0>=32){a=i>>>a|0}else{a=((1<>>a}}if(d>>>0>=q>>>0){q=0;break a}k=q-d|0;d=c&31;if((c&63)>>>0>=32){i=-1<>>32-d;d=-1<>>0>>0?i+1|0:i;j=d;d=c&31;if((c&63)>>>0>=32){q=i>>>d|0}else{q=((1<>>d}}c=(p|0)==1?2:3;d=c+a|0;d=(a>>>0>d>>>0?-1:d)>>>0>e>>>0;a=c+q|0;d=d&(a>>>0>>0?-1:a)>>>0>f>>>0;a=l-c|0;d=d&(a>>>0<=l>>>0?a:0)>>>0>>0;a=b-c|0;return d&(a>>>0<=b>>>0?a:0)>>>0>>0}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;e=ra-80|0;ra=e;K[e+76>>2]=1;k=K[a+44>>2];d=K[K[a+224>>2]+40>>2];a:{b:{if(!d|!K[d+16>>2]){break b}c:{d=d+Q(k,40)|0;if(!K[d+4>>2]){d=K[a+52>>2];f=K[a+48>>2]+2|0;d=f>>>0<2?d+1|0:d;if(ib(b,f,d,c)){break c}Fa(c,1,5403,0);break a}d=K[d+16>>2];if(!ib(b,K[d>>2],K[d+4>>2],c)){Fa(c,1,5403,0);break a}if((Na(b,K[a+16>>2],2,c)|0)!=2){Fa(c,1,2435,0);break a}Ha(K[a+16>>2],e+72|0,2);if(K[e+72>>2]==65424){break c}Fa(c,1,4036,0);break a}if(K[a+8>>2]!=256){break b}K[a+8>>2]=8}h=Q(K[a+132>>2],K[a+128>>2]);d:{if(!h){break d}f=K[a+180>>2];d=0;if(h>>>0>=8){i=h&-8;while(1){K[(f+Q(d,5644)|0)+5588>>2]=-1;K[(f+Q(d|1,5644)|0)+5588>>2]=-1;K[(f+Q(d|2,5644)|0)+5588>>2]=-1;K[(f+Q(d|3,5644)|0)+5588>>2]=-1;K[(f+Q(d|4,5644)|0)+5588>>2]=-1;K[(f+Q(d|5,5644)|0)+5588>>2]=-1;K[(f+Q(d|6,5644)|0)+5588>>2]=-1;K[(f+Q(d|7,5644)|0)+5588>>2]=-1;d=d+8|0;j=j+8|0;if((i|0)!=(j|0)){continue}break}}h=h&7;if(!h){break d}while(1){K[(f+Q(d,5644)|0)+5588>>2]=-1;d=d+1|0;g=g+1|0;if((h|0)!=(g|0)){continue}break}}g=0;if(!ab(a,e+72|0,0,e+68|0,e- -64|0,e+60|0,e+56|0,e+52|0,e+76|0,b,c)){break a}h=k+1|0;while(1){e:{if(!K[e+76>>2]){break e}d=K[e+72>>2];if(!jb(a,d,0,0,b,c)){break a}i=K[a+128>>2];j=K[a+132>>2];f=d+1|0;K[e+32>>2]=f;K[e+36>>2]=Q(i,j);Fa(c,4,11758,e+32|0);if(!Wc(K[a+232>>2],K[K[a+100>>2]+24>>2])){break a}g=K[a+180>>2]+Q(d,5644)|0;i=K[g+5596>>2];if(i){Ga(i);K[g+5596>>2]=0;K[g+5600>>2]=0}K[e+16>>2]=f;Fa(c,4,16564,e+16|0);if((d|0)==(k|0)){d=K[a+224>>2];f=K[d+8>>2];d=K[d+12>>2];f=f+2|0;d=f>>>0<2?d+1|0:d;if(ib(b,f,d,c)){break e}g=0;Fa(c,1,5403,0);break a}K[e+4>>2]=h;K[e>>2]=f;Fa(c,2,13611,e);g=0;if(ab(a,e+72|0,0,e+68|0,e- -64|0,e+60|0,e+56|0,e+52|0,e+76|0,b,c)){continue}break a}break}g=Vc(a,c)}ra=e+80|0;return g|0}function uc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=ra-256|0;ra=j;a:{if(!a){a=0;break a}if(!(K[a>>2]==(b|0)&K[a+4>>2]==(c|0))){K[a+4>>2]=c;K[a>>2]=b;K[j>>2]=c;K[j+128>>2]=b;e=c;g=b;while(1){o=i;i=i+1|0;h=i<<2;n=(e+1|0)/2|0;K[h+j>>2]=n;k=h+(j+128|0)|0;h=(g+1|0)/2|0;K[k>>2]=h;m=Q(e,g);f=m+f|0;e=n;g=h;if(m>>>0>1){continue}break}K[a+8>>2]=f;b:{c:{d:{if(!f){b=K[a+12>>2];if(!b){break d}Ga(b);K[a+12>>2]=0;break d}e=f<<4;if(e>>>0<=N[a+16>>2]){break b}f=La(K[a+12>>2],e);if(f){break c}Fa(d,1,6414,0);b=K[a+12>>2];if(!b){break d}Ga(b);K[a+12>>2]=0}Ga(a);a=0;break a}K[a+12>>2]=f;c=K[a+16>>2];b=e-c|0;if(b){B(c+f|0,0,b)}K[a+16>>2]=e;c=K[a+4>>2];b=K[a>>2]}g=K[a+12>>2];if(o){d=0;e=(Q(b,c)<<4)+g|0;f=e;while(1){b=d<<2;k=K[b+j>>2];e:{if((k|0)<=0){break e}m=k-1|0;l=0;f:{g:{c=K[b+(j+128|0)>>2];if((c|0)<=0){n=k&1;i=0;if((k|0)!=1){break g}b=f;break f}while(1){b=f;f=c;while(1){h:{K[g>>2]=e;if((f|0)==1){g=g+16|0;e=e+16|0;break h}K[g+16>>2]=e;e=e+16|0;g=g+32|0;h=(f|0)>2;f=f-2|0;if(h){continue}}break}h=((l|0)==(m|0)|l)&1;f=h?e:b+(c<<4)|0;e=h?e:b;l=l+1|0;if((k|0)!=(l|0)){continue}break}break e}h=k&2147483646;while(1){b=(i|0)==(m|0);i=i+2|0;e=b?e:f;f=e;b=e;l=l+2|0;if((h|0)!=(l|0)){continue}break}}if(!n){f=e;break e}f=(c<<4)+b|0;c=((i|0)==(m|0)|i)&1;f=c?e:f;e=c?e:b}d=d+1|0;if((o|0)!=(d|0)){continue}break}}K[g>>2]=0}c=K[a+8>>2];if(!c){break a}e=K[a+12>>2];if(c>>>0>=4){b=c&-4;g=0;while(1){K[e+60>>2]=0;K[e+52>>2]=999;K[e+56>>2]=0;K[e+44>>2]=0;K[e+36>>2]=999;K[e+40>>2]=0;K[e+28>>2]=0;K[e+20>>2]=999;K[e+24>>2]=0;K[e+12>>2]=0;K[e+4>>2]=999;K[e+8>>2]=0;e=e- -64|0;g=g+4|0;if((b|0)!=(g|0)){continue}break}}b=c&3;if(!b){break a}g=0;while(1){K[e+12>>2]=0;K[e+4>>2]=999;K[e+8>>2]=0;e=e+16|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}ra=j+256|0;return a}function pb(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;g=K[a+16>>2];if(g>>>0>=32){return K[a+8>>2]}d=K[a+20>>2];a:{if((d|0)>=4){b=K[a>>2];c=K[b-3>>2];d=d-4|0;K[a+20>>2]=d;K[a>>2]=b-4;break a}if((d|0)<=0){break a}k=d&1;b=K[a>>2];b:{if((d|0)==1){e=24;break b}j=d&2147483646;e=24;while(1){h=b-1|0;K[a>>2]=h;i=L[b|0];b=b-2|0;K[a>>2]=b;K[a+20>>2]=d-1;h=L[h|0];d=d-2|0;K[a+20>>2]=d;c=i<>2]=b-1;b=L[b|0];K[a+20>>2]=d-1;c=b<>2];j=c&255;K[a+24>>2]=j>>>0>143;b=b?(c&2130706432)==2130706432?7:8:8;h=b+(c>>>0<=2415919103?8:(c&8323072)==8323072?7:8)|0;f=c>>>16&255;i=h+(f>>>0<=143?8:(c&32512)==32512?7:8)|0;e=c>>>8&255;k=i+(g+(e>>>0<=143?8:(c&127)==127?7:8)|0)|0;K[a+16>>2]=k;l=K[a+12>>2];b=f<>>24|e<>>0>=32){e=b<>>32-c;b=b<>2];b=e|l;h=b;K[a+8>>2]=g;K[a+12>>2]=b;if(k>>>0<=31){c:{if((d|0)>=4){b=K[a>>2];c=K[b-3>>2];K[a+20>>2]=d-4;K[a>>2]=b-4;break c}if((d|0)<=0){c=0;break c}i=d&1;b=K[a>>2];d:{if((d|0)==1){e=24;c=0;break d}l=d&2147483646;e=24;c=0;f=0;while(1){m=b-1|0;K[a>>2]=m;n=L[b|0];b=b-2|0;K[a>>2]=b;K[a+20>>2]=d-1;m=L[m|0];d=d-2|0;K[a+20>>2]=d;c=n<>2]=b-1;b=L[b|0];K[a+20>>2]=d-1;c=b<>2]=d>>>0>143;j=j>>>0<=143?8:(c&2130706432)==2130706432?7:8;i=j+(c>>>0<=2415919103?8:(c&8323072)==8323072?7:8)|0;f=c>>>16&255;l=i+(f>>>0<=143?8:(c&32512)==32512?7:8)|0;e=c>>>8&255;K[a+16>>2]=l+((e>>>0<=143?8:(c&127)==127?7:8)+k|0);b=a;a=f<>>24|e<>>0>=32){d=a<>>32-c;a=a<>2]=g;K[b+12>>2]=d|h}return g}function cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=K[a+96>>2];l=Q(K[a+128>>2],K[a+132>>2]);a:{if(l){b=K[j+16>>2];m=Q(b,1080);k=Q(b,b)<<2;e=K[a+12>>2];b=K[a+180>>2];while(1){n=K[b+5584>>2];E(b,e,5644);K[b+5608>>2]=0;K[b+5588>>2]=-1;K[b+5168>>2]=0;K[b+5636>>2]=0;K[b+5616>>2]=0;K[b+5624>>2]=0;K[b+5628>>2]=0;K[b+5584>>2]=n;I[b+5640|0]=L[b+5640|0]&252;b:{if(!K[e+5608>>2]){break b}d=Ja(k);K[b+5608>>2]=d;if(!d){return 0}if(!k){break b}E(d,K[e+5608>>2],k)}d=Q(K[e+5624>>2],20);f=Ja(d);K[b+5616>>2]=f;i=0;if(!f){break a}if(d){E(f,K[e+5616>>2],d)}g=K[e+5620>>2];if(g){d=K[e+5616>>2];f=K[b+5616>>2];h=0;while(1){if(K[d+12>>2]){g=Ja(K[d+16>>2]);K[f+12>>2]=g;if(!g){return 0}o=K[d+16>>2];if(o){E(g,K[d+12>>2],o)}g=K[e+5620>>2]}K[b+5624>>2]=K[b+5624>>2]+1;f=f+20|0;d=d+20|0;h=h+1|0;if(h>>>0>>0){continue}break}}d=Q(K[e+5636>>2],20);f=Ja(d);K[b+5628>>2]=f;if(!f){break a}if(d){E(f,K[e+5628>>2],d)}i=K[e+5636>>2];K[b+5636>>2]=i;if(i){d=K[e+5628>>2];f=K[b+5628>>2];h=0;while(1){g=K[d+8>>2];if(g){K[f+8>>2]=K[b+5616>>2]+(g-K[e+5616>>2]|0)}g=K[d+12>>2];if(g){K[f+12>>2]=K[b+5616>>2]+(g-K[e+5616>>2]|0)}f=f+20|0;d=d+20|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(m){E(n,K[e+5584>>2],m)}b=b+5644|0;p=p+1|0;if((p|0)!=(l|0)){continue}break}}i=1;e=Ia(1,72);b=0;c:{if(!e){break c}I[e+40|0]=L[e+40|0]&254|1;d=Ia(1,4);K[e+20>>2]=d;b=e;if(d){break c}Ga(b);b=0}K[a+232>>2]=b;if(!b){return 0}f=K[a+236>>2];e=0;K[b+28>>2]=a+104;K[b+24>>2]=j;d=Ia(1,848);K[K[b+20>>2]>>2]=d;d:{if(!d){break d}d=Ia(K[j+16>>2],76);h=K[K[b+20>>2]>>2];K[h+20>>2]=d;if(!d){break d}K[h+16>>2]=K[j+16>>2];e=K[a+188>>2];K[b+44>>2]=f;K[b>>2]=e;e=1}if(e){break a}hc(K[a+232>>2]);i=0;K[a+232>>2]=0;Fa(c,1,3631,0)}return i|0}function Qa(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;h=K[a+16>>2];if(h>>>0>=32){return K[a+8>>2]}d=K[a+24>>2];a:{if((d|0)>=4){b=K[a>>2];c=K[b>>2];g=d-4|0;K[a+24>>2]=g;K[a>>2]=b+4;break a}c=K[a+28>>2]?-1:0;if((d|0)<=0){g=d;break a}j=d&1;b=K[a>>2];b:{if((d|0)==1){f=b;break b}i=d&2147483646;while(1){K[a>>2]=b+1;k=L[b|0];f=b+2|0;K[a>>2]=f;K[a+24>>2]=d-1;b=L[b+1|0];d=d-2|0;K[a+24>>2]=d;c=((255<>2]=f+1;b=L[f|0];K[a+24>>2]=d-1;c=(255<>2];i=c>>>24|0;K[a+20>>2]=(i|0)==255;f=c>>>16&255;d=c>>>8&255;b=b?7:8;c=c&255;e=b+((c|0)==255?7:8)|0;k=((d|0)==255?7:8)+e|0;j=(h+((f|0)==255?7:8)|0)+k|0;K[a+16>>2]=j;l=K[a+12>>2];b=c|(d<>>0>=32){f=b<>>32-c;b=b<>2];b=f|l;k=b;K[a+8>>2]=h;K[a+12>>2]=b;if(j>>>0<=31){c:{if((g|0)>=4){b=K[a>>2];d=K[b>>2];K[a+24>>2]=g-4;K[a>>2]=b+4;break c}e=0;d=K[a+28>>2]?-1:0;if((g|0)<=0){break c}l=g&1;b=K[a>>2];d:{if((g|0)==1){c=b;break d}m=g&2147483646;f=0;while(1){K[a>>2]=b+1;n=L[b|0];c=b+2|0;K[a>>2]=c;K[a+24>>2]=g-1;b=L[b+1|0];g=g-2|0;K[a+24>>2]=g;d=((255<>2]=c+1;b=L[c|0];K[a+24>>2]=g-1;d=(255<>>24|0;K[a+20>>2]=(c|0)==255;f=d>>>16&255;g=d>>>8&255;e=(i|0)==255?7:8;d=d&255;i=e+((d|0)==255?7:8)|0;l=((g|0)==255?7:8)+i|0;K[a+16>>2]=(((f|0)==255?7:8)+j|0)+l;b=a;a=d|(g<>>0>=32){f=a<>>32-c;a=a<>2]=h;K[b+12>>2]=f|k}return h}function _c(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0;i=ra-32|0;ra=i;if(K[a+8>>2]==16){f=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{f=K[a+12>>2]}a:{if(N[d>>2]<=4){a=0;Fa(e,1,2570,0);break a}f=K[f+5584>>2]+Q(b,1080)|0;Ha(c,f+4|0,1);h=K[f+4>>2]+1|0;K[f+4>>2]=h;if(h>>>0>=34){K[i+4>>2]=33;K[i>>2]=h;Fa(e,1,7598,i);a=0;break a}g=K[a+184>>2];if(g>>>0>=h>>>0){K[i+24>>2]=h;K[i+20>>2]=g;K[i+16>>2]=b;Fa(e,1,16386,i+16|0);K[a+8>>2]=K[a+8>>2]|32768;a=0;break a}Ha(c+1|0,f+8|0,1);K[f+8>>2]=K[f+8>>2]+2;Ha(c+2|0,f+12|0,1);a=K[f+12>>2]+2|0;K[f+12>>2]=a;b=K[f+8>>2];if(!(!(b>>>0>10|a>>>0>10)&a+b>>>0<13)){a=0;Fa(e,1,5431,0);break a}Ha(c+3|0,f+16|0,1);if(L[f+16|0]&128){a=0;Fa(e,1,6527,0);break a}Ha(c+4|0,f+20|0,1);if(N[f+20>>2]>=2){a=0;Fa(e,1,6462,0);break a}b=K[d>>2]-5|0;K[d>>2]=b;a=1;h=K[f+4>>2];if(!(I[f|0]&1)){if(!h){break a}d=f+944|0;e=f+812|0;b=0;c=0;if(h>>>0>=4){k=h&-4;g=0;while(1){f=c<<2;K[f+e>>2]=15;K[d+f>>2]=15;j=f|4;K[j+e>>2]=15;K[d+j>>2]=15;j=f|8;K[j+e>>2]=15;K[d+j>>2]=15;f=f|12;K[f+e>>2]=15;K[d+f>>2]=15;c=c+4|0;g=g+4|0;if((k|0)!=(g|0)){continue}break}}f=h&3;if(!f){break a}while(1){a=c<<2;K[a+e>>2]=15;K[a+d>>2]=15;a=1;c=c+1|0;b=b+1|0;if((f|0)!=(b|0)){continue}break}break a}if(b>>>0>=h>>>0){b:{if(!h){g=0;break b}Ha(c+5|0,i+28|0,1);a=K[i+28>>2];K[f+944>>2]=a>>>4;K[f+812>>2]=a&15;g=K[f+4>>2];if(g>>>0>=2){h=f+944|0;k=f+812|0;a=c+6|0;c=1;while(1){Ha(a,i+28|0,1);c:{b=K[i+28>>2];if(b>>>0>=16){g=b&15;if(g){break c}}a=0;Fa(e,1,5988,0);break a}j=c<<2;K[j+k>>2]=g;K[h+j>>2]=b>>>4;a=a+1|0;c=c+1|0;g=K[f+4>>2];if(c>>>0>>0){continue}break}}b=K[d>>2]}K[d>>2]=b-g;a=1;break a}a=0;Fa(e,1,2570,0)}ra=i+32|0;return a}function nc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;K[a+8>>2]=0;K[a+12>>2]=0;K[a>>2]=b;K[a+28>>2]=d;K[a+16>>2]=0;K[a+20>>2]=0;h=c-1|0;K[a+24>>2]=h;n=b&3;a:{if((c|0)<=0){e=b;b=d;break a}e=b+1|0;K[a>>2]=e;b=L[b|0]}g=b;i=8;K[a+16>>2]=8;j=(g|0)==255;K[a+20>>2]=j;K[a+8>>2]=g;K[a+12>>2]=0;b:{if((n|0)==3){break b}k=c-2|0;K[a+24>>2]=k;c:{if((c|0)<2){b=e;e=d;break c}b=e+1|0;K[a>>2]=b;e=L[e|0]}j=(e|0)==255;K[a+20>>2]=j;i=(g|0)==255?15:16;K[a+16>>2]=i;g=g|e<<8;K[a+8>>2]=g;K[a+12>>2]=0;if((n|0)==2){e=b;c=h;h=k;break b}o=c-3|0;K[a+24>>2]=o;d:{if((c|0)<3){f=b;b=d;break d}f=b+1|0;K[a>>2]=f;b=L[b|0]}j=(b|0)==255;K[a+20>>2]=j;l=((e|0)==255?7:8)+i|0;K[a+16>>2]=l;e=i&31;if((i&63)>>>0>=32){m=b<>>32-e;e=b<>2]=g;K[a+12>>2]=m;if((n|0)==1){e=f;i=l;c=k;h=o;break b}h=c-4|0;K[a+24>>2]=h;e:{if((c|0)<4){e=f;c=d;break e}e=f+1|0;K[a>>2]=e;c=L[f|0]}j=(c|0)==255;K[a+20>>2]=j;i=l+((b|0)==255?7:8)|0;K[a+16>>2]=i;b=l&31;if((l&63)>>>0>=32){f=c<>>32-b;b=c<>2]=g;K[a+12>>2]=b;c=o}f:{if((c|0)>=5){d=K[e>>2];K[a+24>>2]=c-5;K[a>>2]=e+4;break f}b=0;d=d?-1:0;if((c|0)<2){break f}while(1){c=e+1|0;K[a>>2]=c;e=L[e|0];f=h-1|0;K[a+24>>2]=f;d=(255<>>0>1;e=c;h=f;if(k){continue}break}}b=d>>>24|0;K[a+20>>2]=(b|0)==255;c=d>>>16&255;e=d>>>8&255;h=j?7:8;d=d&255;f=h+((d|0)==255?7:8)|0;k=((e|0)==255?7:8)+f|0;K[a+16>>2]=(((c|0)==255?7:8)+i|0)+k;b=d|(e<>>0>=32){d=a<>>32-b;a=a<>2]=a|g;K[c+12>>2]=d|m}function Db(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;j=ra-32|0;ra=j;p=K[a+16>>2];a:{if(!p){k=1;break a}d=K[a>>2];c=d>>31;h=c;b:{if((c|0)<0){break b}e=K[a+4>>2];c=e>>31;l=c;if((c|0)<0){break b}f=K[a+8>>2];c=f>>31;m=c;if((c|0)<0){break b}i=K[a+12>>2];c=i>>31;if((c|0)<0){break b}a=K[a+24>>2];s=d-1|0;t=h-!d|0;u=e-1|0;v=l-!e|0;w=f-1|0;x=m-!f|0;y=i-1|0;z=c-!i|0;while(1){c=t;d=K[a>>2];e=d+s|0;c=d>>>0>e>>>0?c+1|0:c;h=Ne(e,c,d,0);K[a+16>>2]=h;c=v;e=K[a+4>>2];f=e+u|0;c=e>>>0>f>>>0?c+1|0:c;l=Ne(f,c,e,0);K[a+20>>2]=l;i=K[a+40>>2];f=i&31;if((i&63)>>>0>=32){c=1<>>32-f}n=g;k=c;f=n-1|0;c=c-!n|0;m=c;q=d>>31;g=q+x|0;r=d+w|0;g=r>>>0>>0?g+1|0:g;d=Me(r,g,d,q);c=(d>>31)+c|0;g=d;d=d+f|0;c=g>>>0>d>>>0?c+1|0:c;g=d;d=i&31;if((i&63)>>>0>=32){d=c>>d}else{d=((1<>>d}c=(h>>31)+m|0;g=h;h=f+h|0;c=g>>>0>h>>>0?c+1|0:c;g=d;d=i&31;if((i&63)>>>0>=32){c=c>>d}else{c=((1<>>d}c=g-c|0;if((c|0)<0){K[j+4>>2]=c;K[j>>2]=o;Fa(b,1,13473,j);k=0;break a}K[a+8>>2]=c;d=e>>31;c=d+z|0;h=e+y|0;c=h>>>0>>0?c+1|0:c;d=Me(h,c,e,d);c=(d>>31)+m|0;e=d;d=d+f|0;c=e>>>0>d>>>0?c+1|0:c;e=d;d=i&31;if((i&63)>>>0>=32){e=c>>d}else{e=((1<>>d}c=k+(l>>31)|0;d=l+n|0;c=d>>>0>>0?c+1|0:c;f=d-1|0;h=e;d=c-!d|0;e=f;c=i&31;if((i&63)>>>0>=32){c=d>>c}else{c=((1<>>c}c=h-c|0;if((c|0)<0){K[j+20>>2]=c;K[j+16>>2]=o;Fa(b,1,13542,j+16|0);k=0;break a}K[a+12>>2]=c;a=a+52|0;k=1;o=o+1|0;if((p|0)!=(o|0)){continue}break}break a}Fa(b,1,6683,0)}ra=j+32|0;return k}function Ge(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;g=ra-16|0;ra=g;K[g+12>>2]=c;h=K[a+96>>2];if(K[a+8>>2]==16){e=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{e=K[a+12>>2]}I[e+5640|0]=L[e+5640|0]|1;a:{if(c>>>0<=4){Fa(d,1,4528,0);break a}Ha(b,e,1);if(N[e>>2]>=8){Fa(d,1,4494,0);break a}Ha(b+1|0,g+8|0,1);c=K[g+8>>2];K[e+4>>2]=c;if((c|0)>=5){Fa(d,1,4453,0);K[e+4>>2]=-1}Ha(b+2|0,e+8|0,2);c=K[e+8>>2];if(c-65536>>>0<=4294901760){K[g>>2]=c;Fa(d,1,8074,g);break a}i=K[a+188>>2];K[e+12>>2]=i?i:c;Ha(b+4|0,e+16|0,1);if(N[e+16>>2]>=2){Fa(d,1,5499,0);break a}i=b+5|0;K[g+12>>2]=K[g+12>>2]-5;h=K[h+16>>2];b:{if(!h){break b}b=K[e>>2]&1;c=K[e+5584>>2];e=0;if(h>>>0>=8){k=h&-8;while(1){K[c+Q(f,1080)>>2]=b;K[c+Q(f|1,1080)>>2]=b;K[c+Q(f|2,1080)>>2]=b;K[c+Q(f|3,1080)>>2]=b;K[c+Q(f|4,1080)>>2]=b;K[c+Q(f|5,1080)>>2]=b;K[c+Q(f|6,1080)>>2]=b;K[c+Q(f|7,1080)>>2]=b;f=f+8|0;j=j+8|0;if((k|0)!=(j|0)){continue}break}}h=h&7;if(!h){break b}while(1){K[c+Q(f,1080)>>2]=b;f=f+1|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}}f=0;if(!_c(a,0,i,g+12|0,d)){Fa(d,1,4528,0);break a}if(K[g+12>>2]){Fa(d,1,4528,0);break a}if(K[a+8>>2]==16){b=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{b=K[a+12>>2]}if(N[K[a+96>>2]+16>>2]>=2){b=K[b+5584>>2];d=K[b+4>>2]<<2;f=b+944|0;h=b+812|0;e=1;c=b;while(1){K[c+1084>>2]=K[b+4>>2];K[c+1088>>2]=K[b+8>>2];K[c+1092>>2]=K[b+12>>2];K[c+1096>>2]=K[b+16>>2];K[c+1100>>2]=K[b+20>>2];i=!d;if(!i){E(c+1892|0,h,d)}if(!i){E(c+2024|0,f,d)}c=c+1080|0;e=e+1|0;if(e>>>0>2]+16>>2]){continue}break}}f=1}ra=g+16|0;return f|0}function wc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=ra-256|0;ra=j;f=Ia(1,20);a:{if(!f){Fa(c,1,6376,0);f=0;break a}K[f+4>>2]=b;K[f>>2]=a;K[j>>2]=b;K[j+128>>2]=a;while(1){p=g;g=g+1|0;h=g<<2;d=(b+1|0)/2|0;K[h+j>>2]=d;m=h+(j+128|0)|0;h=(a+1|0)/2|0;K[m>>2]=h;i=Q(a,b);e=i+e|0;b=d;a=h;if(i>>>0>1){continue}break}K[f+8>>2]=e;if(!e){Ga(f);f=0;break a}d=Ia(e,16);K[f+12>>2]=d;if(!d){Fa(c,1,3527,0);Ga(f);f=0;break a}l=K[f+8>>2];K[f+16>>2]=l<<4;a=d;if(p){e=(Q(K[f+4>>2],K[f>>2])<<4)+d|0;b=e;while(1){c=n<<2;i=K[c+j>>2];b:{if((i|0)<=0){break b}o=i-1|0;h=0;c:{c=K[c+(j+128|0)>>2];if((c|0)<=0){g=0;if((i|0)!=1){k=i&2147483646;while(1){m=(g|0)==(o|0);g=g+2|0;e=m?b:e;b=e;h=h+2|0;if((k|0)!=(h|0)){continue}break}}if(i&1){break c}b=e;break b}while(1){g=e;e=c;while(1){d:{K[a>>2]=b;if((e|0)==1){a=a+16|0;b=b+16|0;break d}K[a+16>>2]=b;b=b+16|0;a=a+32|0;k=(e|0)>2;e=e-2|0;if(k){continue}}break}k=((h|0)==(o|0)|h)&1;e=k?b:g+(c<<4)|0;b=k?b:g;h=h+1|0;if((i|0)!=(h|0)){continue}break}break b}g=((g|0)==(o|0)|g)&1;c=g?b:(c<<4)+e|0;b=g?b:e;e=c}n=n+1|0;if((n|0)!=(p|0)){continue}break}}K[a>>2]=0;e:{if(!l){break e}if(l>>>0>=4){a=l&-4;b=0;while(1){K[d+60>>2]=0;K[d+52>>2]=999;K[d+56>>2]=0;K[d+44>>2]=0;K[d+36>>2]=999;K[d+40>>2]=0;K[d+28>>2]=0;K[d+20>>2]=999;K[d+24>>2]=0;K[d+12>>2]=0;K[d+4>>2]=999;K[d+8>>2]=0;d=d- -64|0;b=b+4|0;if((a|0)!=(b|0)){continue}break}}a=l&3;if(!a){break e}b=0;while(1){K[d+12>>2]=0;K[d+4>>2]=999;K[d+8>>2]=0;d=d+16|0;b=b+1|0;if((a|0)!=(b|0)){continue}break}}}ra=j+256|0;return f}function La(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!b){return 0}a:{if(!a){a=mb(8,b);break a}if(!b){Ga(a);a=0;break a}b:{if(b>>>0>4294967239){break b}h=b>>>0<=8?8:b+3&-4;b=h+8|0;c:{d:{k=a-4|0;f=k;c=K[f>>2];e=c+f|0;j=K[e>>2];g=j+e|0;e:{f:{if(K[g-4>>2]!=(j|0)){d=b+f|0;if(d+16>>>0<=g>>>0){c=K[e+4>>2];e=K[e+8>>2];K[c+8>>2]=e;K[e+4>>2]=c;c=g-d|0;K[d>>2]=c;K[(d+(c&-4)|0)-4>>2]=c|1;e=K[d>>2]-8|0;g:{if(e>>>0<=127){c=(e>>>3|0)-1|0;break g}g=T(e);c=((e>>>29-g^4)-(g<<2)|0)+110|0;if(e>>>0<=4095){break g}c=((e>>>30-g^2)-(g<<1)|0)+71|0;c=c>>>0>=63?63:c}e=c<<4;K[d+4>>2]=e+26352;e=e+26360|0;K[d+8>>2]=K[e>>2];K[e>>2]=d;K[K[d+8>>2]+4>>2]=d;e=K[6847];d=c&31;if((c&63)>>>0>=32){c=1<>>32-d}K[6846]=g|K[6846];K[6847]=c|e;K[f>>2]=b;break d}if(d>>>0>g>>>0){break f}b=K[e+4>>2];d=K[e+8>>2];K[b+8>>2]=d;K[d+4>>2]=b;b=c+j|0;K[f>>2]=b;break d}if(c>>>0>=b+16>>>0){K[f>>2]=b;K[(f+(b&-4)|0)-4>>2]=b;d=b+f|0;b=c-b|0;K[d>>2]=b;K[(d+(b&-4)|0)-4>>2]=b|1;c=K[d>>2]-8|0;h:{if(c>>>0<=127){b=(c>>>3|0)-1|0;break h}f=T(c);b=((c>>>29-f^4)-(f<<2)|0)+110|0;if(c>>>0<=4095){break h}b=((c>>>30-f^2)-(f<<1)|0)+71|0;b=b>>>0>=63?63:b}c=b<<4;K[d+4>>2]=c+26352;c=c+26360|0;K[d+8>>2]=K[c>>2];K[c>>2]=d;K[K[d+8>>2]+4>>2]=d;c=K[6847];d=b&31;if((b&63)>>>0>=32){b=1<>>32-d}K[6846]=e|K[6846];K[6847]=b|c;d=1;break c}d=1;if(b>>>0<=c>>>0){break e}}d=0}break c}K[(f+(b&-4)|0)-4>>2]=b;d=1}if(d){break a}b=mb(8,h);if(!b){break b}i=K[k>>2]-8|0;hb(b,a,h>>>0>>0?h:i);Ga(a);i=b}a=i}return a}function Ub(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;a:{d=Ia(1,48);if(d){b=K[a+224>>2];c=K[b+4>>2];K[d>>2]=K[b>>2];K[d+4>>2]=c;c=K[b+12>>2];K[d+8>>2]=K[b+8>>2];K[d+12>>2]=c;c=K[b+20>>2];K[d+16>>2]=K[b+16>>2];K[d+20>>2]=c;c=K[b+24>>2];K[d+24>>2]=c;f=Ja(Q(c,24));K[d+28>>2]=f;if(!f){Ga(d);return 0}b=K[K[a+224>>2]+28>>2];b:{if(b){c=Q(K[d+24>>2],24);if(!c){break b}E(f,b,c);break b}Ga(f);K[d+28>>2]=0}c=K[K[a+224>>2]+36>>2];K[d+36>>2]=c;b=Ia(c,40);K[d+40>>2]=b;if(!b){Ga(K[d+28>>2]);Ga(d);return 0}c:{if(K[K[a+224>>2]+40>>2]){if(!K[d+36>>2]){break c}while(1){e=Q(h,40);c=K[(e+K[K[a+224>>2]+40>>2]|0)+20>>2];K[(b+e|0)+20>>2]=c;g=Ja(Q(c,24));c=K[d+40>>2];f=c+e|0;K[f+24>>2]=g;if(!g){if(h){b=0;while(1){Ga(K[(K[d+40>>2]+Q(b,40)|0)+24>>2]);b=b+1|0;if((h|0)!=(b|0)){continue}break}c=K[d+40>>2]}break a}b=K[(e+K[K[a+224>>2]+40>>2]|0)+24>>2];d:{if(b){c=Q(K[f+20>>2],24);if(c){E(g,b,c)}b=K[d+40>>2];break d}Ga(g);b=K[d+40>>2];K[(e+b|0)+24>>2]=0}c=K[(e+K[K[a+224>>2]+40>>2]|0)+4>>2];K[(b+e|0)+4>>2]=c;g=Ja(Q(c,24));c=K[d+40>>2];f=c+e|0;K[f+16>>2]=g;if(!g){if(h){b=0;while(1){a=Q(b,40);Ga(K[(a+K[d+40>>2]|0)+24>>2]);Ga(K[(a+K[d+40>>2]|0)+16>>2]);b=b+1|0;if((h|0)!=(b|0)){continue}break}c=K[d+40>>2]}break a}b=K[(e+K[K[a+224>>2]+40>>2]|0)+16>>2];e:{if(b){c=Q(K[f+4>>2],24);if(c){E(g,b,c)}b=K[d+40>>2];break e}Ga(g);b=K[d+40>>2];K[(e+b|0)+16>>2]=0}c=b+e|0;K[c+32>>2]=0;K[c+36>>2]=0;h=h+1|0;if(h>>>0>2]){continue}break}break c}Ga(b);K[d+40>>2]=0}}else{d=0}return d|0}Ga(c);Ga(K[d+28>>2]);Ga(d);return 0}function mb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{while(1){if(a-1&a|b>>>0>4294967239){break b}j=a>>>0>8;a=j?a:8;d=K[6847];e=d;g=K[6846];b=b>>>0<=8?8:b+3&-4;c:{if(b>>>0<=127){i=(b>>>3|0)-1|0;break c}c=T(b);i=((b>>>29-c^4)-(c<<2)|0)+110|0;if(b>>>0<=4095){break c}c=((b>>>30-c^2)-(c<<1)|0)+71|0;i=c>>>0>=63?63:c}h=i;f=h&31;if((h&63)>>>0>=32){c=0;d=d>>>f|0}else{c=d>>>f|0;d=((1<>>f}if(d|c){while(1){f=c;d:{if(c|d){e=c-1|0;g=e+1|0;i=e;e=d-1|0;g=(e|0)!=-1?g:i;c=T(c^g);c=(c|0)==32?T(d^e)+32|0:c;e=63-c|0;ua=0-(c>>>0>63)|0;break d}ua=0;e=64}g=e;e=g&31;if((g&63)>>>0>=32){c=0;i=f>>>e|0}else{c=f>>>e|0;i=((1<>>e}h=g+h|0;d=h<<4;f=K[d+26360>>2];e=d+26352|0;e:{if((f|0)!=(e|0)){d=Lb(f,a,b);if(d){break a}d=K[f+4>>2];g=K[f+8>>2];K[d+8>>2]=g;K[g+4>>2]=d;K[f+8>>2]=e;K[f+4>>2]=K[e+4>>2];K[e+4>>2]=f;K[K[f+4>>2]+8>>2]=f;h=h+1|0;d=(c&1)<<31|i>>>1;c=c>>>1|0;break e}d=K[6847];k=27384,l=K[6846]&Qe(-2,-1,h),K[k>>2]=l;K[6847]=ua&d;d=i^1}if(c|d){continue}break}g=K[6846];e=K[6847]}c=T(e);f=63-((c|0)==32?T(g)+32|0:c)|0;f:{if(!(e|g)){c=0;break f}d=f<<4;c=K[d+26360>>2];if(!e&g>>>0<1073741824){break f}h=99;e=d+26352|0;if((e|0)==(c|0)){break f}while(1){if(!h){break f}d=Lb(c,a,b);if(d){break a}h=h-1|0;c=K[c+8>>2];if((e|0)!=(c|0)){continue}break}}if(Pc((j?a+48|0:48)+b|0)){continue}break}if(!c){break b}f=(f<<4)+26352|0;if((f|0)==(c|0)){break b}while(1){d=Lb(c,a,b);if(d){break a}c=K[c+8>>2];if((f|0)!=(c|0)){continue}break}}d=0}return d}function Jd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=K[a+48>>2];if(e>>>0>=b>>>0){K[a+48>>2]=e-b;K[a+36>>2]=K[a+36>>2]+b;e=c+K[a+60>>2]|0;d=b+K[a+56>>2]|0;e=d>>>0>>0?e+1|0:e;K[a+56>>2]=d;K[a+60>>2]=e;ua=c;return b|0}if(L[a+68|0]&4){K[a+48>>2]=0;K[a+36>>2]=e+K[a+36>>2];g=K[a+60>>2];c=K[a+56>>2];b=c+e|0;K[a+56>>2]=b;K[a+60>>2]=b>>>0>>0?g+1|0:g;ua=e?0:-1;return(e?e:-1)|0}if(e){K[a+48>>2]=0;K[a+36>>2]=K[a+32>>2];h=b;f=e;b=b-e|0;c=c-(e>>>0>h>>>0)|0}a:{if((c|0)>0){h=1}else{h=!!b&(c|0)>=0}if(h){while(1){h=K[a+12>>2];e=c+g|0;i=b+f|0;e=K[a+60>>2]+(i>>>0>>0?e+1|0:e)|0;j=i;i=i+K[a+56>>2]|0;e=j>>>0>i>>>0?e+1|0:e;if((e|0)==(h|0)&i>>>0>N[a+8>>2]|e>>>0>h>>>0){Fa(d,4,15593,0);K[a+48>>2]=0;K[a+36>>2]=K[a+32>>2];b=g+K[a+60>>2]|0;c=f+K[a+56>>2]|0;b=c>>>0>>0?b+1|0:b;K[a+56>>2]=c;K[a+60>>2]=b;d=K[a+8>>2];f=d-c|0;e=K[a+12>>2];g=e-((c>>>0>d>>>0)+b|0)|0;h=va[K[a+28>>2]](d,e,K[a>>2])|0;i=K[a+68>>2];if(h){K[a+56>>2]=d;K[a+60>>2]=e}K[a+68>>2]=i|4;a=(c|0)==(d|0)&(b|0)==(e|0);b=a?-1:f;break a}e=va[K[a+24>>2]](b,c,K[a>>2])|0;h=ua;i=h;if((e&i)==-1){Fa(d,4,15593,0);K[a+68>>2]=K[a+68>>2]|4;e=g+K[a+60>>2]|0;b=f+K[a+56>>2]|0;e=b>>>0>>0?e+1|0:e;K[a+56>>2]=b;K[a+60>>2]=e;a=!(g|f);b=a?-1:f;break a}g=g+i|0;f=e+f|0;g=f>>>0>>0?g+1|0:g;h=b;b=b-e|0;c=c-((e>>>0>h>>>0)+i|0)|0;if(!!b&(c|0)>=0|(c|0)>0){continue}break}}b=g+K[a+60>>2]|0;c=f+K[a+56>>2]|0;b=c>>>0>>0?b+1|0:b;K[a+56>>2]=c;K[a+60>>2]=b;ua=g;return f|0}ua=a?-1:g;return b|0}function Nd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;e=ra-80|0;ra=e;a:{if(c>>>0<=2){Fa(d,1,14441,0);break a}if(L[a+124|0]){Fa(d,4,11156,0);g=1;break a}g=1;Ha(b,a+40|0,1);Ha(b+1|0,a+52|0,1);Ha(b+2|0,a+44|0,1);f=b+3|0;b:{c:{d:{e:{f:{h=K[a+40>>2];switch(h-1|0){case 0:break f;case 1:break e;default:break d}}if(c>>>0<=6){K[e+16>>2]=c;Fa(d,1,15118,e+16|0);g=0;break a}if(!((c|0)==7|K[a+48>>2]==14)){K[e+48>>2]=c;Fa(d,2,15118,e+48|0)}Ha(f,a+48|0,4);if(K[a+48>>2]!=14){break b}f=Ja(36);if(!f){g=0;Fa(d,1,7956,0);break a}K[f>>2]=14;K[e+64>>2]=0;K[e+56>>2]=0;K[e+72>>2]=0;K[e+60>>2]=0;K[e+68>>2]=0;K[e+76>>2]=0;g=4470064;K[e+52>>2]=4470064;K[f+4>>2]=1145390592;g:{if((c|0)!=7){if((c|0)==35){Ha(b+7|0,e+76|0,4);Ha(b+11|0,e+72|0,4);Ha(b+15|0,e+68|0,4);Ha(b+19|0,e- -64|0,4);Ha(b+23|0,e+60|0,4);Ha(b+27|0,e+56|0,4);Ha(b+31|0,e+52|0,4);K[f+4>>2]=0;g=K[e+52>>2];c=K[e+56>>2];d=K[e+64>>2];i=K[e+68>>2];j=K[e+76>>2];h=K[e+72>>2];b=K[e+60>>2];break g}K[e+32>>2]=c;Fa(d,2,15154,e+32|0)}c=0;d=0;h=0;b=0}K[f+24>>2]=b;K[f+16>>2]=i;K[f+8>>2]=j;K[f+32>>2]=g;K[f+28>>2]=c;K[f+20>>2]=d;K[f+12>>2]=h;K[a+112>>2]=0;K[a+108>>2]=f;break b}b=c-3|0;K[a+112>>2]=b;d=Ia(1,b);K[a+108>>2]=d;if(!d){break c}if((c|0)<=3){break b}c=0;while(1){Ha(f,e+76|0,1);I[K[a+108>>2]+c|0]=K[e+76>>2];f=f+1|0;c=c+1|0;if((b|0)!=(c|0)){continue}break}break b}if(h>>>0<3){break a}K[e>>2]=h;Fa(d,4,15913,e);break a}g=0;K[a+112>>2]=0;break a}g=1;I[a+124|0]=1}ra=e+80|0;return g|0}function Na(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;h=K[a+48>>2];if(h>>>0>=c>>>0){if(c){E(b,K[a+36>>2],c)}K[a+36>>2]=K[a+36>>2]+c;K[a+48>>2]=K[a+48>>2]-c;b=K[a+60>>2];d=K[a+56>>2]+c|0;b=d>>>0>>0?b+1|0:b;K[a+56>>2]=d;K[a+60>>2]=b;return c}if(L[a+68|0]&4){if(h){E(b,K[a+36>>2],h)}b=K[a+48>>2];K[a+48>>2]=0;K[a+36>>2]=b+K[a+36>>2];g=K[a+60>>2];c=b;b=K[a+56>>2]+b|0;g=c>>>0>b>>>0?g+1|0:g;K[a+56>>2]=b;K[a+60>>2]=g;return h?h:-1}a:{if(h){if(h){E(b,K[a+36>>2],h)}i=K[a+32>>2];K[a+36>>2]=i;e=K[a+48>>2];K[a+48>>2]=0;f=K[a+60>>2];g=K[a+56>>2]+e|0;f=g>>>0>>0?f+1|0:f;K[a+56>>2]=g;K[a+60>>2]=f;c=c-e|0;b=b+e|0;break a}i=K[a+32>>2];K[a+36>>2]=i}b:{while(1){c:{e=K[a>>2];f=K[a+16>>2];g=K[a+64>>2];d:{if(g>>>0>c>>>0){f=va[f|0](i,g,e)|0;K[a+48>>2]=f;if((f|0)==-1){break b}if(c>>>0>f>>>0){if(f){E(b,K[a+36>>2],f)}i=K[a+32>>2];K[a+36>>2]=i;e=K[a+48>>2];break d}if(c){E(b,K[a+36>>2],c)}K[a+36>>2]=K[a+36>>2]+c;K[a+48>>2]=K[a+48>>2]-c;b=K[a+60>>2];d=K[a+56>>2]+c|0;b=d>>>0>>0?b+1|0:b;K[a+56>>2]=d;K[a+60>>2]=b;return c+h|0}e=va[f|0](b,c,e)|0;K[a+48>>2]=e;if((e|0)==-1){break b}if(c>>>0<=e>>>0){break c}i=K[a+32>>2];K[a+36>>2]=i;f=e}K[a+48>>2]=0;g=K[a+60>>2];j=K[a+56>>2]+e|0;g=j>>>0>>0?g+1|0:g;K[a+56>>2]=j;K[a+60>>2]=g;b=b+e|0;c=c-e|0;h=f+h|0;continue}break}K[a+48>>2]=0;K[a+36>>2]=K[a+32>>2];f=K[a+60>>2];b=K[a+56>>2]+e|0;f=b>>>0>>0?f+1|0:f;K[a+56>>2]=b;K[a+60>>2]=f;return e+h|0}Fa(d,4,15593,0);K[a+48>>2]=0;K[a+68>>2]=K[a+68>>2]|4;return h?h:-1}function Vb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=ra-16|0;ra=g;o=K[K[a+96>>2]+16>>2];b=Ia(1,56);K[g+12>>2]=b;a:{if(!b){break a}j=K[K[a+96>>2]+16>>2];K[b+24>>2]=j;K[b>>2]=K[a+108>>2];K[b+4>>2]=K[a+112>>2];K[b+8>>2]=K[a+116>>2];K[b+12>>2]=K[a+120>>2];K[b+16>>2]=K[a+128>>2];h=K[a+132>>2];K[b+52>>2]=0;K[b+20>>2]=h;i=K[a+12>>2];K[b+32>>2]=K[i>>2];K[b+36>>2]=K[i+4>>2];K[b+40>>2]=K[i+8>>2];K[b+44>>2]=K[i+16>>2];a=Ia(j,1080);K[b+48>>2]=a;if(a){if(o){while(1){a=Q(k,1080);d=a+K[b+48>>2]|0;c=a+K[i+5584>>2]|0;K[d+4>>2]=K[c>>2];a=K[c+4>>2];K[d+8>>2]=a;K[d+12>>2]=K[c+8>>2];K[d+16>>2]=K[c+12>>2];K[d+20>>2]=K[c+16>>2];K[d+24>>2]=K[c+20>>2];b:{if(a>>>0>32){break b}if(a){E(d+948|0,c+944|0,a)}a=K[c+4>>2];if(!a){break b}E(d+816|0,c+812|0,a)}a=K[c+24>>2];K[d+28>>2]=a;K[d+808>>2]=K[c+804>>2];f=1;c:{if((a|0)!=1){a=Q(K[c+4>>2],3);if(a-3>>>0>95){break c}f=a-2|0}p=f&1;l=d+420|0;m=d+32|0;n=c+28|0;a=0;if((f|0)!=1){j=f&-2;f=0;while(1){h=a<<2;e=(a<<3)+n|0;K[h+m>>2]=K[e+4>>2];K[h+l>>2]=K[e>>2];e=a|1;h=e<<2;e=(e<<3)+n|0;K[h+m>>2]=K[e+4>>2];K[h+l>>2]=K[e>>2];a=a+2|0;f=f+2|0;if((j|0)!=(f|0)){continue}break}}if(!p){break c}e=a<<2;a=(a<<3)+n|0;K[e+m>>2]=K[a+4>>2];K[e+l>>2]=K[a>>2]}K[d+812>>2]=K[c+808>>2];k=k+1|0;if((k|0)!=(o|0)){continue}break}}e=b;break a}if(g+12|0){a=K[g+12>>2];b=K[a+48>>2];if(b){Ga(b);a=K[g+12>>2]}Ga(a);K[g+12>>2]=0}}ra=g+16|0;return e|0}function oc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;f=K[a+28>>2]+Q(b,152)|0;d=K[f-144>>2]-K[f-152>>2]|0;e=K[f-140>>2]-K[f-148>>2]|0;c=e>>>0>=64?64:e;g=d>>>0>=64?64:d;a:{if(!(!d|!e|(!g|!c)|g>>>0>4294967295/(c>>>0)>>>2>>>0)){f=Ia(1,28);K[f+12>>2]=c;K[f+8>>2]=g;K[f+4>>2]=e;K[f>>2]=d;h=e;e=c+e|0;i=h>>>0>e>>>0?1:i;e=Ne(e-1|0,i-!e|0,c,0);K[f+20>>2]=e;c=0;h=d;d=d+g|0;c=h>>>0>d>>>0?1:c;c=Ne(d-1|0,c-!d|0,g,0);K[f+16>>2]=c;Le(e,0,c);b:{if(ua){break b}c=Ia(4,Q(c,e));K[f+24>>2]=c;if(!c){break b}break a}Ga(f)}f=0}if(!f){return 0}c:{if(b){while(1){o=Q(n,152);e=o+K[a+28>>2]|0;c=K[e+24>>2];if(c){r=e+28|0;d=K[e+20>>2];g=K[e+16>>2];l=0;while(1){if(Q(d,g)){i=Q(l,36)+r|0;m=0;while(1){k=K[i+20>>2]+Q(m,40)|0;c=K[k+20>>2];j=K[k+16>>2];if(Q(c,j)){g=0;while(1){d=K[k+24>>2]+Q(g,68)|0;p=K[d+60>>2];if(p){j=K[d+12>>2];s=K[d+20>>2];t=K[d+16>>2];q=K[d+8>>2];d=q-K[i>>2]|0;h=K[i+16>>2];if(h&1){c=K[a+28>>2]+o|0;d=(K[c-144>>2]+d|0)-K[c-152>>2]|0}c=j-K[i+4>>2]|0;if(h&2){h=c;c=K[a+28>>2]+o|0;c=(h+K[c-140>>2]|0)-K[c-148>>2]|0}h=d;d=t-q|0;if(!db(f,h,c,h+d|0,(s-j|0)+c|0,p,1,d)){break c}j=K[k+16>>2];c=K[k+20>>2]}g=g+1|0;if(g>>>0>>0){continue}break}g=K[e+16>>2];d=K[e+20>>2]}m=m+1|0;if(m>>>0>>0){continue}break}c=K[e+24>>2]}l=l+1|0;if(l>>>0>>0){continue}break}}n=n+1|0;if((n|0)!=(b|0)){continue}break}}return f}_a(f);return 0}function Sb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{b:{e=K[a+60>>2];if(!e){if(K[b+16>>2]){break b}return 1}i=Ja(Q(e,52));if(!i){break a}e=0;if(K[b+16>>2]){d=K[b+24>>2];while(1){e=Q(f,52);Ga(K[(e+d|0)+44>>2]);d=K[b+24>>2];K[(e+d|0)+44>>2]=0;f=f+1|0;e=K[b+16>>2];if(f>>>0>>0){continue}break}}if(K[a+60>>2]){f=K[K[a+100>>2]+24>>2];e=0;while(1){h=Q(K[K[a+64>>2]+(e<<2)>>2],52);d=h+f|0;c=K[d+4>>2];g=i+Q(e,52)|0;K[g>>2]=K[d>>2];K[g+4>>2]=c;K[g+48>>2]=K[d+48>>2];c=K[d+44>>2];K[g+40>>2]=K[d+40>>2];K[g+44>>2]=c;c=K[d+36>>2];K[g+32>>2]=K[d+32>>2];K[g+36>>2]=c;c=K[d+28>>2];K[g+24>>2]=K[d+24>>2];K[g+28>>2]=c;c=K[d+20>>2];K[g+16>>2]=K[d+16>>2];K[g+20>>2]=c;c=K[d+12>>2];K[g+8>>2]=K[d+8>>2];K[g+12>>2]=c;f=K[K[a+100>>2]+24>>2];c=h+f|0;K[g+36>>2]=K[c+36>>2];K[g+44>>2]=K[c+44>>2];K[c+44>>2]=0;e=e+1|0;c=K[a+60>>2];if(e>>>0>>0){continue}break}e=K[b+16>>2]}if(e){d=K[K[a+100>>2]+24>>2];f=0;while(1){c=Q(f,52);Ga(K[(c+d|0)+44>>2]);d=K[K[a+100>>2]+24>>2];K[(c+d|0)+44>>2]=0;f=f+1|0;if(f>>>0>2]){continue}break}c=K[a+60>>2]}K[b+16>>2]=c;Ga(K[b+24>>2]);K[b+24>>2]=i;return 1}e=K[b+24>>2];f=K[K[a+100>>2]+24>>2];while(1){h=Q(d,52);c=h+e|0;K[c+36>>2]=K[(f+h|0)+36>>2];Ga(K[c+44>>2]);e=K[b+24>>2];f=K[K[a+100>>2]+24>>2];c=h+f|0;K[(h+e|0)+44>>2]=K[c+44>>2];K[c+44>>2]=0;d=d+1|0;if(d>>>0>2]){continue}break}return 1}Ya(K[a+96>>2]);K[a+96>>2]=0;return 0}function se(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=ra-16|0;ra=h;if(K[a+8>>2]==16){f=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{f=K[a+12>>2]}a:{if(c>>>0<=1){Fa(d,1,4095,0);a=0;break a}Ha(b,h+12|0,2);b:{if(K[h+12>>2]){Fa(d,2,3571,0);break b}if(c>>>0<=6){Fa(d,1,4095,0);a=0;break a}Ha(b+2|0,h+12|0,2);e=K[f+5616>>2];k=L[h+12|0];c:{d:{e:{g=K[f+5620>>2];if(!g){a=e;break e}a=e;while(1){if(K[a+8>>2]==(k|0)){break e}a=a+20|0;i=i+1|0;if((i|0)!=(g|0)){continue}break}break d}if((g|0)!=(i|0)){break c}}if(K[f+5624>>2]==(g|0)){a=g+10|0;K[f+5624>>2]=a;a=La(e,Q(a,20));e=K[f+5616>>2];if(!a){Ga(e);K[f+5624>>2]=0;K[f+5616>>2]=0;K[f+5620>>2]=0;Fa(d,1,4121,0);a=0;break a}f:{if((a|0)==(e|0)){break f}l=K[f+5632>>2];if(!l){break f}m=K[f+5628>>2];i=0;while(1){g=Q(i,20)+m|0;j=K[g+8>>2];if(j){K[g+8>>2]=a+(j-e|0)}j=K[g+12>>2];if(j){K[g+12>>2]=a+(j-e|0)}i=i+1|0;if((l|0)!=(i|0)){continue}break}}K[f+5616>>2]=a;e=K[f+5620>>2];g=Q(K[f+5624>>2]-e|0,20);if(g){B(a+Q(e,20)|0,0,g)}g=K[f+5620>>2];e=K[f+5616>>2]}K[f+5620>>2]=g+1;a=Q(g,20)+e|0}e=K[a+12>>2];if(e){Ga(e);K[a+12>>2]=0;K[a+16>>2]=0}K[a+8>>2]=k;e=K[h+12>>2];K[a>>2]=e>>>10&3;K[a+4>>2]=e>>>8&3;Ha(b+4|0,h+12|0,2);if(K[h+12>>2]){Fa(d,2,2986,0);break b}c=c-6|0;e=Ja(c);K[a+12>>2]=e;if(!e){Fa(d,1,4095,0);a=0;break a}if(c){E(e,b+6|0,c)}K[a+16>>2]=c}a=1}ra=h+16|0;return a|0}function Za(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{if(!K[a+12>>2]){k=1;if(K[a+4>>2]>0|K[a+8>>2]>1){break b}break a}e=1;if(K[a+8>>2]>0){break b}if(K[a+4>>2]<2){break a}}b=K[a>>2];f=b+(e<<5)|0;g=K[a+16>>2];h=K[a+20>>2];if(g>>>0>>0){d=g;while(1){c=(d<<6)+f|0;O[c>>2]=O[c>>2]*R(1.2301740646362305);O[c+4>>2]=O[c+4>>2]*R(1.2301740646362305);O[c+8>>2]=O[c+8>>2]*R(1.2301740646362305);O[c+12>>2]=O[c+12>>2]*R(1.2301740646362305);O[c+16>>2]=O[c+16>>2]*R(1.2301740646362305);O[c+20>>2]=O[c+20>>2]*R(1.2301740646362305);O[c+24>>2]=O[c+24>>2]*R(1.2301740646362305);O[c+28>>2]=O[c+28>>2]*R(1.2301740646362305);d=d+1|0;if((h|0)!=(d|0)){continue}break}}i=b+(k<<5)|0;j=K[a+28>>2];c=K[a+24>>2];if(j>>>0>c>>>0){d=c;while(1){b=(d<<6)+i|0;O[b>>2]=O[b>>2]*R(1.625732421875);O[b+4>>2]=O[b+4>>2]*R(1.625732421875);O[b+8>>2]=O[b+8>>2]*R(1.625732421875);O[b+12>>2]=O[b+12>>2]*R(1.625732421875);O[b+16>>2]=O[b+16>>2]*R(1.625732421875);O[b+20>>2]=O[b+20>>2]*R(1.625732421875);O[b+24>>2]=O[b+24>>2]*R(1.625732421875);O[b+28>>2]=O[b+28>>2]*R(1.625732421875);d=d+1|0;if((j|0)!=(d|0)){continue}break}}b=f+32|0;d=K[a+8>>2];a=K[a+4>>2];e=a-e|0;e=(d|0)<(e|0)?d:e;qb(i,b,g,h,e,R(-.4435068666934967));l=i+32|0;d=d-k|0;a=(a|0)<(d|0)?a:d;qb(f,l,c,j,a,R(-.8829110860824585));qb(i,b,g,h,e,R(.05298011749982834));qb(f,l,c,j,a,R(1.5861343145370483))}}function hc(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;if(a){b=K[a+20>>2];if(b){g=K[b>>2];if(g){d=K[g+20>>2];if(K[g+16>>2]){i=I[a+40|0]&1?16:17;while(1){c=K[d+28>>2];if(c){b=K[d+32>>2];l=(b>>>0)/152|0;j=0;if(b>>>0>=152){while(1){b=K[c+48>>2];if(b){f=K[c+52>>2];h=(f>>>0)/40|0;e=0;if(f>>>0>=40){while(1){eb(K[b+32>>2]);K[b+32>>2]=0;eb(K[b+36>>2]);K[b+36>>2]=0;va[i|0](b);b=b+40|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}b=K[c+48>>2]}Ga(b);K[c+48>>2]=0}b=K[c+84>>2];if(b){f=K[c+88>>2];h=(f>>>0)/40|0;e=0;if(f>>>0>=40){while(1){eb(K[b+32>>2]);K[b+32>>2]=0;eb(K[b+36>>2]);K[b+36>>2]=0;va[i|0](b);b=b+40|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}b=K[c+84>>2]}Ga(b);K[c+84>>2]=0}b=K[c+120>>2];if(b){f=K[c+124>>2];h=(f>>>0)/40|0;e=0;if(f>>>0>=40){while(1){eb(K[b+32>>2]);K[b+32>>2]=0;eb(K[b+36>>2]);K[b+36>>2]=0;va[i|0](b);b=b+40|0;e=e+1|0;if((h|0)!=(e|0)){continue}break}b=K[c+120>>2]}Ga(b);K[c+120>>2]=0}c=c+152|0;j=j+1|0;if((l|0)!=(j|0)){continue}break}c=K[d+28>>2]}Ga(c);K[d+28>>2]=0}a:{if(!K[d+40>>2]){break a}b=K[d+36>>2];if(!b){break a}Ga(b);K[d+44>>2]=0;K[d+48>>2]=0;K[d+36>>2]=0;K[d+40>>2]=0}Ga(K[d+52>>2]);d=d+76|0;k=k+1|0;if(k>>>0>2]){continue}break}d=K[g+20>>2]}Ga(d);K[g+20>>2]=0;Ga(K[K[a+20>>2]>>2]);b=K[a+20>>2];K[b>>2]=0}Ga(b);K[a+20>>2]=0}Ga(K[a+68>>2]);Ga(a)}}function pc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;c=K[a+8>>2];f=c+K[a+4>>2]|0;a:{if(!K[a+12>>2]){if((f|0)<2){break a}h=(c<<2)+b|0;d=K[h>>2];e=K[b>>2]-(d+1>>1)|0;i=K[a>>2];b:{if(f>>>0<4){c=d;break b}k=(f-4>>>1|0)+1|0;a=1;while(1){c=a<<2;m=K[c+b>>2];c=K[c+h>>2];l=i+(g<<2)|0;K[l>>2]=e;j=e;e=m-((c+d|0)+2>>2)|0;K[l+4>>2]=(j+e>>1)+d;g=g+2|0;j=(a|0)!=(k|0);d=c;a=a+1|0;if(j){continue}break}}K[i+(g<<2)>>2]=e;if(f&1){d=f-1|0;a=K[(d<<1)+b>>2]-(c+1>>1)|0;K[i+(d<<2)>>2]=a;e=a+e>>1;d=-8}else{d=-4}a=f<<2;K[d+(a+i|0)>>2]=c+e;if(!a){break a}E(b,i,a);return}c:{switch(f-1|0){case 0:K[b>>2]=K[b>>2]/2;return;case 1:a=K[a>>2];c=(c<<2)+b|0;d=K[b>>2]-(K[c>>2]+1>>1)|0;K[a+4>>2]=d;K[a>>2]=d+K[c>>2];c=K[a+4>>2];K[b>>2]=K[a>>2];K[b+4>>2]=c;return;default:break c}}if((f|0)<3){break a}h=K[a>>2];k=(c<<2)+b|0;d=K[k+4>>2];a=K[k>>2];e=K[b>>2]-((d+a|0)+2>>2)|0;K[h>>2]=e+a;g=1;m=f-2|0;l=f&1;a=!l;d:{if(m-a>>>0<2){c=d;break d}o=((f-a|0)-4>>>1|0)+1|0;a=1;while(1){p=K[(a<<2)+b>>2];j=a+1|0;c=K[k+(j<<2)>>2];n=h+(g<<2)|0;K[n>>2]=e;i=e;e=p-((c+d|0)+2>>2)|0;K[n+4>>2]=(i+e>>1)+d;g=g+2|0;i=(a|0)!=(o|0);d=c;a=j;if(i){continue}break}}K[h+(g<<2)>>2]=e;e:{if(!l){g=K[((f<<1)+b|0)-4>>2]-(c+1>>1)|0;K[h+(m<<2)>>2]=(g+e>>1)+c;break e}g=c+e|0}a=f<<2;K[(a+h|0)-4>>2]=g;if(!a){break a}E(b,h,a)}}function fc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=K[a+24>>2];j=K[e+16>>2];if(!j){return 0}f=K[e+24>>2];e=K[K[K[a+20>>2]>>2]+20>>2];a:{b:{if(!b){b=0;while(1){c=K[f+24>>2];a=K[e+28>>2]+Q(K[e+24>>2],152)|0;d=K[a-140>>2];g=K[a-144>>2]-K[a-152>>2]|0;a=K[a-148>>2];h=d-a|0;Le(g,0,h);if(!(!ua|(a|0)==(d|0))){break a}a=(c>>>3|0)+((c&7)!=0)|0;c=(a|0)==3?4:a;a=!c;d=Q(g,h);Le(c,0,d);if(!(!ua|a)){break a}a=-1;c=Q(c,d);if(c>>>0>(b^-1)>>>0){break b}e=e+76|0;f=f+52|0;b=b+c|0;a=b;i=i+1|0;if((j|0)!=(i|0)){continue}break}break b}b=0;if(!K[a+64>>2]){while(1){c=K[f+24>>2];a=K[e+28>>2]+Q(K[e+24>>2],152)|0;d=K[a-4>>2];g=K[a-8>>2]-K[a-16>>2]|0;a=K[a-12>>2];h=d-a|0;Le(g,0,h);if(!(!ua|(a|0)==(d|0))){break a}a=(c>>>3|0)+((c&7)!=0)|0;c=(a|0)==3?4:a;a=!c;d=Q(g,h);Le(c,0,d);if(!(!ua|a)){break a}a=-1;c=Q(c,d);if(c>>>0>(b^-1)>>>0){break b}e=e+76|0;f=f+52|0;b=b+c|0;a=b;i=i+1|0;if((j|0)!=(i|0)){continue}break}break b}while(1){c=K[f+24>>2];a=K[e+28>>2]+Q(K[e+24>>2],152)|0;d=K[a-140>>2];g=K[a-144>>2]-K[a-152>>2]|0;a=K[a-148>>2];h=d-a|0;Le(g,0,h);if(!(!ua|(a|0)==(d|0))){break a}a=(c>>>3|0)+((c&7)!=0)|0;c=(a|0)==3?4:a;a=!c;d=Q(g,h);Le(c,0,d);if(!(!ua|a)){break a}a=-1;c=Q(c,d);if(c>>>0>(b^-1)>>>0){break b}e=e+76|0;f=f+52|0;b=b+c|0;a=b;i=i+1|0;if((j|0)!=(i|0)){continue}break}}return a}return-1}function Wb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=ra-256|0;ra=d;if(a){Sa(1769,17,c);K[d+240>>2]=K[a>>2];Ka(c,2311,d+240|0);K[d+224>>2]=K[a+4>>2];Ka(c,2324,d+224|0);K[d+208>>2]=K[a+8>>2];Ka(c,7223,d+208|0);K[d+192>>2]=K[a+16>>2];Ka(c,2282,d+192|0);if((b|0)>0){while(1){e=K[a+5584>>2];K[d+176>>2]=h;Ka(c,1807,d+176|0);e=e+Q(h,1080)|0;K[d+160>>2]=K[e>>2];Ka(c,2310,d+160|0);K[d+144>>2]=K[e+4>>2];Ka(c,7337,d+144|0);K[d+128>>2]=K[e+8>>2];Ka(c,7125,d+128|0);K[d+112>>2]=K[e+12>>2];Ka(c,7141,d+112|0);K[d+96>>2]=K[e+16>>2];Ka(c,2293,d+96|0);K[d+80>>2]=K[e+20>>2];Ka(c,7403,d+80|0);Sa(1530,23,c);if(K[e+4>>2]){i=e+944|0;j=e+812|0;f=0;while(1){g=f<<2;k=K[j+g>>2];K[d+68>>2]=K[i+g>>2];K[d+64>>2]=k;Ka(c,1656,d- -64|0);f=f+1|0;if(f>>>0>2]){continue}break}}Qc(c);K[d+48>>2]=K[e+24>>2];Ka(c,7157,d+48|0);K[d+32>>2]=K[e+804>>2];Ka(c,7206,d+32|0);i=1;Sa(1554,20,c);a:{if(K[e+24>>2]!=1){f=K[e+4>>2];if((f|0)<=0){break a}i=Q(f,3)-2|0}j=e+28|0;f=0;while(1){g=j+(f<<3)|0;l=d,m=Qe(K[g>>2],K[g+4>>2],32),K[l+16>>2]=m;K[d+20>>2]=ua;Ka(c,1656,d+16|0);f=f+1|0;if((i|0)!=(f|0)){continue}break}}Qc(c);K[d>>2]=K[e+808>>2];Ka(c,7189,d);Sa(1670,5,c);h=h+1|0;if((h|0)!=(b|0)){continue}break}}Sa(1671,4,c)}ra=d+256|0}function Je(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{e=b;if(e){if(!c){break j}if(!d){break i}e=T(d)-T(e)|0;if(e>>>0<=31){break h}break b}if((d|0)==1|d>>>0>1){break b}b=(a>>>0)/(c>>>0)|0;sa=a-Q(b,c)|0;ta=0;ua=0;return b}if(!a){break g}if(!d){break f}f=d-1|0;if(f&d){break f}sa=a;ta=e&f;a=e>>>Ke(d)|0;ua=0;return a}f=c-1|0;if(!(f&c)){break e}k=(T(c)+33|0)-T(e)|0;g=0-k|0;break c}k=e+1|0;g=63-e|0;break c}sa=0;a=(e>>>0)/(d>>>0)|0;ta=e-Q(a,d)|0;ua=0;return a}e=T(d)-T(e)|0;if(e>>>0<31){break d}break b}sa=a&f;ta=0;if((c|0)==1){break a}c=Ke(c);d=c&31;if((c&63)>>>0>=32){e=0;a=b>>>d|0}else{e=b>>>d|0;a=((1<>>d}ua=e;return a}k=e+1|0;g=63-e|0}f=a;e=k&63;h=e&31;if((e&63)>>>0>=32){e=0;f=b>>>h|0}else{e=b>>>h|0;f=((1<>>h}h=g&63;g=a;i=h&31;if((h&63)>>>0>=32){j=a<>>32-i|b<>>31;f=f<<1|b>>>31;l=e;i=g-(e+(f>>>0>h>>>0)|0)|0;m=i>>31;j=m;e=f;i=c&j;f=e-i|0;e=l-((d&j)+(e>>>0>>0)|0)|0;j=b<<1|a>>>31;a=n|a<<1;b=j|o;l=m&1;n=l;k=k-1|0;if(k){continue}break}}sa=f;ta=e;j=b<<1|a>>>31;a=l|a<<1;ua=j|o;return a}sa=a;ta=b;a=0;b=0}ua=b;return a}function Zc(a,b,c,d,e){var f=0,g=0,h=0,i=0;h=ra-16|0;ra=h;if(K[a+8>>2]==16){a=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{a=K[a+12>>2]}f=K[d>>2];a:{if(!f){d=0;Fa(e,1,2605,0);break a}a=K[a+5584>>2];K[d>>2]=f-1;Ha(c,h+12|0,1);g=Q(b,1080)+a|0;a=K[h+12>>2];K[g+804>>2]=a>>>5;b=a&31;K[g+24>>2]=b;a=c+1|0;b:{c:{d:{e:{f:{switch(b|0){case 0:f=K[d>>2];break e;case 1:break d;default:break f}}f=K[d>>2]>>>1|0}if(f>>>0>=98){K[h+4>>2]=97;K[h+8>>2]=97;K[h>>2]=f;Fa(e,2,16019,h);b=K[g+24>>2]}if(b){b=f;if(b){break d}a=0;break c}if(f){b=g+28|0;c=0;while(1){Ha(a,h+12|0,1);if(c>>>0<=96){e=K[h+12>>2];i=b+(c<<3)|0;K[i+4>>2]=0;K[i>>2]=e>>>3}a=a+1|0;c=c+1|0;if((f|0)!=(c|0)){continue}break}}a=K[d>>2];if(a>>>0>>0){d=0;break a}a=a-f|0;break b}e=g+28|0;c=0;while(1){Ha(a,h+12|0,2);if(c>>>0<=96){f=e+(c<<3)|0;i=K[h+12>>2];K[f+4>>2]=i&2047;K[f>>2]=i>>>11}a=a+2|0;c=c+1|0;if((c|0)!=(b|0)){continue}break}a=b<<1}b=K[d>>2];if(a>>>0>b>>>0){d=0;break a}a=b-a|0}K[d>>2]=a;d=1;if(K[g+24>>2]!=1){break a}f=g+28|0;c=K[g+32>>2];e=K[g+28>>2];a=1;while(1){b=f+(a<<3)|0;K[b+4>>2]=c;K[b+12>>2]=c;g=e-((a>>>0)/3|0)|0;K[b+8>>2]=(g|0)>0?g:0;g=b;b=e-((a-1>>>0)/3|0)|0;K[g>>2]=(b|0)>0?b:0;a=a+2|0;if((a|0)!=97){continue}break}}ra=h+16|0;return d}function ye(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=ra-32|0;ra=f;g=1;a:{if(c>>>0<=1){g=0;Fa(d,1,10025,0);break a}if(K[a+76>>2]){break a}Ha(b,f+28|0,1);Ha(b+1|0,f+24|0,1);e=K[f+24>>2];i=e>>>4&3;if((i|0)==3){K[a+76>>2]=1;Fa(d,2,11521,0);break a}c=c-2|0;j=(e>>>5&2)+2|0;h=i+j|0;e=(c>>>0)/(h>>>0)|0;if((c|0)!=(Q(e,h)|0)){K[a+76>>2]=1;Fa(d,2,11102,0);break a}if(c>>>0>>0){break a}b:{c=K[a+68>>2];if(c>>>0<=(e^-1)>>>0){c=c+e|0;if(c>>>0<536870912){break b}}K[a+76>>2]=1;Fa(d,2,9363,0);break a}h=La(K[a+72>>2],c<<3);if(!h){K[a+76>>2]=1;Fa(d,2,9406,0);break a}c=b+2|0;K[a+72>>2]=h;c:{if(i){k=e>>>0<=1?1:e;e=0;while(1){Ha(c,f+20|0,i);b=K[f+20>>2];if(b>>>0>=Q(K[a+132>>2],K[a+128>>2])>>>0){break c}b=c+i|0;Ha(b,f+16|0,j);c=K[a+68>>2];g=h+(c<<3)|0;J[g>>1]=K[f+20>>2];K[g+4>>2]=K[f+16>>2];g=1;K[a+68>>2]=c+1;c=b+j|0;e=e+1|0;if((k|0)!=(e|0)){continue}break}break a}i=e>>>0<=1?1:e;b=K[a+68>>2];e=0;while(1){K[f+20>>2]=b;if(Q(K[a+132>>2],K[a+128>>2])>>>0<=b>>>0){break c}Ha(c,f+16|0,j);k=K[a+68>>2];g=h+(k<<3)|0;J[g>>1]=b;K[g+4>>2]=K[f+16>>2];g=1;b=k+1|0;K[a+68>>2]=b;c=c+j|0;e=e+1|0;if((i|0)!=(e|0)){continue}break}break a}K[a+76>>2]=1;K[f>>2]=b;Fa(d,2,7762,f)}ra=f+32|0;return g|0}function Pd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=ra-16|0;ra=h;a:{if(!(L[a+100|0]&2)){Fa(d,1,11319,0);a=0;break a}K[a+104>>2]=0;b:{c:{d:{if(c){while(1){if(c>>>0<=7){Fa(d,1,3366,0);break b}g=h+12|0;Ha(b,g,4);e=K[h+12>>2];Ha(b+4|0,g,4);f=8;g=K[h+12>>2];e:{f:{g:{switch(e|0){case 1:if(c>>>0<16){e=3406;break c}Ha(b+8|0,h+8|0,4);if(K[h+8>>2]){e=8412;break c}Ha(b+12|0,h+12|0,4);e=K[h+12>>2];if(e){break f}e=3231;break c;case 0:break g;default:break e}}Fa(d,1,3231,0);break b}f=16}if(e>>>0>>0){Fa(d,1,9111,0);break b}if(c>>>0>>0){Fa(d,1,9039,0);a=0;break a}h:{i:{j=b+f|0;k=e-f|0;j:{k:{l:{m:{if((g|0)<=1668246641){if((g|0)==1651532643){break m}if((g|0)==1667523942){break k}if((g|0)!=1668112752){break i}f=25248;break j}if((g|0)==1885564018){break l}f=25216;if((g|0)==1768449138){break j}if((g|0)!=1668246642){break i}f=25224;break j}f=25232;break j}f=25240;break j}f=25256}if(va[K[f+4>>2]](a,j,k,d)|0){break h}a=0;break a}K[a+104>>2]=K[a+104>>2]|2147483647}i=(g|0)==1768449138?1:i;b=b+e|0;c=c-e|0;if(c){continue}break}if(i){break d}}Fa(d,1,8939,0);a=0;break a}I[a+132|0]=1;K[a+100>>2]=K[a+100>>2]|4;a=1;break a}Fa(d,1,e,0)}Fa(d,1,1931,0);a=0}ra=h+16|0;return a|0}function Tb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{if(!c){break a}b:{e=K[a+184>>2];if(!e){break b}g=K[a+96>>2];if(!g|!K[g+16>>2]|(e|0)!=K[K[g+24>>2]+40>>2]){break b}h=K[c+16>>2];if(!h){break b}f=K[c+24>>2];if(K[f+40>>2]|K[f+44>>2]){break b}g=0;if(h>>>0>=8){j=h&-8;while(1){K[(f+Q(g,52)|0)+40>>2]=e;K[(f+Q(g|1,52)|0)+40>>2]=e;K[(f+Q(g|2,52)|0)+40>>2]=e;K[(f+Q(g|3,52)|0)+40>>2]=e;K[(f+Q(g|4,52)|0)+40>>2]=e;K[(f+Q(g|5,52)|0)+40>>2]=e;K[(f+Q(g|6,52)|0)+40>>2]=e;K[(f+Q(g|7,52)|0)+40>>2]=e;g=g+8|0;k=k+8|0;if((j|0)!=(k|0)){continue}break}}h=h&7;if(h){while(1){K[(f+Q(g,52)|0)+40>>2]=e;g=g+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(Db(c,d)){break b}return 0}f=K[a+100>>2];if(!f){f=Bb();K[a+100>>2]=f;if(!f){break a}}Ob(c,f);if(!$a(K[a+216>>2],22,d)){break a}h=K[a+216>>2];e=K[h>>2];f=K[h+8>>2];c:{if(e){i=1;j=e&1;if((e|0)==1){e=0}else{k=e&-2;g=0;while(1){e=0;d:{if(!i){break d}e=0;if(!(va[K[f>>2]](a,b,d)|0)){break d}e=(va[K[f+4>>2]](a,b,d)|0)!=0}i=e;f=f+8|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}e=!i}i=j?0:i;if(!(e|!j)){i=(va[K[f>>2]](a,b,d)|0)!=0}Ta(h);if(i){break c}Ya(K[a+96>>2]);K[a+96>>2]=0;return 0}Ta(h)}i=Sb(a,c)}return i|0}function ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(!$a(K[b+8>>2],54,d)){return 0}j=K[b+4>>2];e=K[j>>2];h=K[j+8>>2];a:{if(e){f=1;k=e&1;if((e|0)==1){e=0}else{e=e&-2;while(1){i=0;b:{if(!f){break b}i=0;if(!(va[K[h>>2]](b,a,d)|0)){break b}i=(va[K[h+4>>2]](b,a,d)|0)!=0}f=i;h=h+8|0;g=g+2|0;if((e|0)!=(g|0)){continue}break}e=!f}f=k?0:f;if(!(e|!k)){f=(va[K[h>>2]](b,a,d)|0)!=0}Ta(j);if(f){break a}return 0}Ta(j)}j=K[b+8>>2];e=K[j>>2];h=K[j+8>>2];c:{if(e){f=1;k=e&1;if((e|0)==1){e=0}else{e=e&-2;g=0;while(1){i=0;d:{if(!f){break d}i=0;if(!(va[K[h>>2]](b,a,d)|0)){break d}i=(va[K[h+4>>2]](b,a,d)|0)!=0}f=i;h=h+8|0;g=g+2|0;if((e|0)!=(g|0)){continue}break}e=!f}f=k?0:f;if(!(e|!k)){f=(va[K[h>>2]](b,a,d)|0)!=0}Ta(j);if(f){break c}return 0}Ta(j)}if(!L[b+132|0]){Fa(d,1,11659,0);return 0}if(!L[b+133|0]){Fa(d,1,11630,0);return 0}d=ac(a,K[b>>2],c,d);e:{if(!c){break e}a=K[c>>2];if(!a){break e}g=1;f:{g:{switch(K[b+48>>2]-12|0){case 5:g=2;break f;case 6:g=3;break f;case 12:g=4;break f;case 0:g=5;break f;case 4:break f;default:break g}}g=-1}K[a+20>>2]=g;c=K[b+108>>2];if(!c){break e}K[a+28>>2]=c;K[a+32>>2]=K[b+112>>2];K[b+108>>2]=0}return d|0}function Ob(a,b){var c=0,d=0,e=0,f=0,g=0;K[b>>2]=K[a>>2];K[b+4>>2]=K[a+4>>2];K[b+8>>2]=K[a+8>>2];K[b+12>>2]=K[a+12>>2];c=K[b+24>>2];if(c){d=K[b+16>>2];if(d){c=0;while(1){f=K[(K[b+24>>2]+Q(c,52)|0)+44>>2];if(f){Ga(f);d=K[b+16>>2]}c=c+1|0;if(d>>>0>c>>>0){continue}break}c=K[b+24>>2]}Ga(c);K[b+24>>2]=0}c=K[a+16>>2];K[b+16>>2]=c;c=Ja(Q(c,52));K[b+24>>2]=c;if(c){if(K[b+16>>2]){f=0;while(1){g=Q(f,52);c=g+c|0;d=K[a+24>>2]+g|0;e=K[d+4>>2];K[c>>2]=K[d>>2];K[c+4>>2]=e;K[c+48>>2]=K[d+48>>2];e=K[d+44>>2];K[c+40>>2]=K[d+40>>2];K[c+44>>2]=e;e=K[d+36>>2];K[c+32>>2]=K[d+32>>2];K[c+36>>2]=e;e=K[d+28>>2];K[c+24>>2]=K[d+24>>2];K[c+28>>2]=e;e=K[d+20>>2];K[c+16>>2]=K[d+16>>2];K[c+20>>2]=e;e=K[d+12>>2];K[c+8>>2]=K[d+8>>2];K[c+12>>2]=e;c=K[b+24>>2];K[(g+c|0)+44>>2]=0;f=f+1|0;if(f>>>0>2]){continue}break}}K[b+20>>2]=K[a+20>>2];c=K[a+32>>2];K[b+32>>2]=c;a:{if(c){c=Ja(c);K[b+28>>2]=c;if(!c){K[b+28>>2]=0;K[b+32>>2]=0;return}b=K[a+32>>2];if(!b){break a}E(c,K[a+28>>2],b);return}K[b+28>>2]=0}return}K[b+16>>2]=0;K[b+24>>2]=0}function ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;f=Bb();K[b+96>>2]=f;a:{b:{if(!f){break b}c:{if($a(K[b+220>>2],18,d)){if($a(K[b+220>>2],19,d)){break c}}break a}i=K[b+220>>2];e=K[i>>2];g=K[i+8>>2];d:{if(e){f=1;k=e&1;if((e|0)==1){e=0}else{e=e&-2;while(1){h=0;e:{if(!f){break e}h=0;if(!(va[K[g>>2]](b,a,d)|0)){break e}h=(va[K[g+4>>2]](b,a,d)|0)!=0}f=h;g=g+8|0;j=j+2|0;if((e|0)!=(j|0)){continue}break}e=!f}f=k?0:f;if(!(e|!k)){f=(va[K[g>>2]](b,a,d)|0)!=0}Ta(i);if(f){break d}break a}Ta(i)}f:{if($a(K[b+216>>2],20,d)){if($a(K[b+216>>2],21,d)){break f}}break a}i=K[b+216>>2];e=K[i>>2];g=K[i+8>>2];g:{if(e){f=1;k=e&1;if((e|0)==1){e=0}else{e=e&-2;j=0;while(1){h=0;h:{if(!f){break h}h=0;if(!(va[K[g>>2]](b,a,d)|0)){break h}h=(va[K[g+4>>2]](b,a,d)|0)!=0}f=h;g=g+8|0;j=j+2|0;if((e|0)!=(j|0)){continue}break}e=!f}f=k?0:f;if(!(e|!k)){f=(va[K[g>>2]](b,a,d)|0)!=0}Ta(i);if(f){break g}break a}Ta(i)}a=Bb();K[c>>2]=a;if(!a){break b}Ob(K[b+96>>2],a);l=1}return l|0}Ya(K[b+96>>2]);K[b+96>>2]=0;return 0}function qb(a,b,c,d,e,f){var g=0,h=R(0),i=0,j=R(0);g=(c<<6)+b|0;a=c?g+-64|0:a;i=d>>>0>>0?d:e;a:{if(i>>>0<=c>>>0){b=a;break a}h=O[a>>2];while(1){b=g;g=b-32|0;j=h;h=O[b>>2];O[g>>2]=R(R(j+h)*f)+O[g>>2];g=b-28|0;O[g>>2]=R(R(O[a+4>>2]+O[b+4>>2])*f)+O[g>>2];g=b-24|0;O[g>>2]=R(R(O[a+8>>2]+O[b+8>>2])*f)+O[g>>2];g=b-20|0;O[g>>2]=R(R(O[a+12>>2]+O[b+12>>2])*f)+O[g>>2];g=b-16|0;O[g>>2]=R(R(O[a+16>>2]+O[b+16>>2])*f)+O[g>>2];g=b-12|0;O[g>>2]=R(R(O[a+20>>2]+O[b+20>>2])*f)+O[g>>2];g=b-8|0;O[g>>2]=R(R(O[a+24>>2]+O[b+24>>2])*f)+O[g>>2];g=b-4|0;O[g>>2]=R(R(O[a+28>>2]+O[b+28>>2])*f)+O[g>>2];g=b- -64|0;a=b;c=c+1|0;if((i|0)!=(c|0)){continue}break}}if(d>>>0>e>>>0){a=g-32|0;f=R(f+f);O[a>>2]=R(O[b>>2]*f)+O[a>>2];a=g-28|0;O[a>>2]=R(O[b+4>>2]*f)+O[a>>2];a=g-24|0;O[a>>2]=R(O[b+8>>2]*f)+O[a>>2];a=g-20|0;O[a>>2]=R(O[b+12>>2]*f)+O[a>>2];a=g-16|0;O[a>>2]=R(O[b+16>>2]*f)+O[a>>2];a=g-12|0;O[a>>2]=R(O[b+20>>2]*f)+O[a>>2];a=g-8|0;O[a>>2]=R(O[b+24>>2]*f)+O[a>>2];a=g-4|0;O[a>>2]=R(O[b+28>>2]*f)+O[a>>2]}}function Ld(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;f=ra-16|0;ra=f;a:{if(K[a+120>>2]|c>>>0<3){break a}Ha(b,f+12|0,2);j=M[f+12>>1];if(j-1025>>>0<=4294966271){K[f>>2]=j;Fa(d,1,3489,f);break a}Ha(b+2|0,f+12|0,1);i=M[f+12>>1];if(!i){Fa(d,1,3137,0);break a}if(i+3>>>0>c>>>0){break a}h=Ja(Q(i,j)<<2);if(!h){break a}k=Ja(i);if(!k){Ga(h);break a}l=Ja(i);if(!l){Ga(h);Ga(k);break a}g=Ja(20);if(!g){Ga(h);Ga(k);Ga(l);break a}d=b+3|0;K[g+8>>2]=k;K[g+4>>2]=l;J[g+16>>1]=j;K[g>>2]=h;m=K[f+12>>2];K[g+12>>2]=0;I[g+18|0]=m;K[a+120>>2]=g;while(1){Ha(d,f+12|0,1);I[e+k|0]=(L[f+12|0]&127)+1;I[e+l|0]=(K[f+12>>2]&128)>>>7;d=d+1|0;e=e+1|0;if((i|0)!=(e|0)){continue}break}if(!j){e=1;break a}g=0;while(1){e=0;a=0;while(1){e=L[e+k|0]+7>>>3|0;e=e>>>0>=4?4:e;if((e+(d-b|0)|0)>(c|0)){e=0;break a}Ha(d,f+12|0,e);K[h>>2]=K[f+12>>2];h=h+4|0;d=d+e|0;a=a+1|0;e=a&65535;if(i>>>0>e>>>0){continue}break}e=1;g=g+1|0;if((g&65535)>>>0>>0){continue}break}}ra=f+16|0;return e|0}function Pc(a){var b=0,c=0,d=0,e=0,f=0;d=K[6506];b=a+7&-8;c=b+7&-8;a=d+c|0;a:{b:{if(!(a>>>0<=d>>>0?c:0)){if(a>>>0<=wa()<<16>>>0){break b}if(na(a|0)|0){break b}}K[6585]=48;d=-1;break a}K[6506]=a}if((d|0)!=-1){a=b+d|0;K[a-4>>2]=16;c=a-16|0;K[c>>2]=16;b=K[6844];if(b){f=K[b+8>>2]}else{f=0}c:{d:{if((f|0)==(d|0)){e=d-(K[d-4>>2]&-2)|0;f=K[e-4>>2];K[b+8>>2]=a;a=e-(f&-2)|0;if(I[(a+K[a>>2]|0)-4|0]&1){b=K[a+4>>2];e=K[a+8>>2];K[b+8>>2]=e;K[e+4>>2]=b;b=c-a|0;K[a>>2]=b;break c}a=d-16|0;break d}K[d>>2]=16;K[d+8>>2]=a;K[d+4>>2]=b;K[d+12>>2]=16;K[6844]=d;a=d+16|0}b=c-a|0;K[a>>2]=b}K[((b&-4)+a|0)-4>>2]=b|1;c=K[a>>2]-8|0;e:{if(c>>>0<=127){b=(c>>>3|0)-1|0;break e}e=T(c);b=((c>>>29-e^4)-(e<<2)|0)+110|0;if(c>>>0<=4095){break e}b=((c>>>30-e^2)-(e<<1)|0)+71|0;b=b>>>0>=63?63:b}c=b<<4;K[a+4>>2]=c+26352;c=c+26360|0;K[a+8>>2]=K[c>>2];K[c>>2]=a;K[K[a+8>>2]+4>>2]=a;c=K[6846];e=K[6847];a=b&31;if((b&63)>>>0>=32){b=1<>>32-a}K[6846]=f|c;K[6847]=b|e}return(d|0)!=-1}function Dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;f=-1;e=-1;if(!(L[a+68|0]&8)){f=K[a+32>>2];K[a+36>>2]=f;a:{b:{c:{e=K[a+48>>2];if(e){while(1){e=va[K[a+20>>2]](f,e,K[a>>2])|0;if((e|0)==-1){break c}f=e+K[a+36>>2]|0;K[a+36>>2]=f;e=K[a+48>>2]-e|0;K[a+48>>2]=e;if(e){continue}break}f=K[a+32>>2]}K[a+36>>2]=f;if(!!b&(c|0)>=0|(c|0)>0){break b}f=0;e=0;break a}K[a+68>>2]=K[a+68>>2]|8;Fa(d,4,15567,0);K[a+48>>2]=0;K[a+68>>2]=K[a+68>>2]|8;ua=-1;return-1}f=0;e=0;while(1){g=va[K[a+24>>2]](b,c,K[a>>2])|0;h=ua;i=h;if((g&h)==-1){Fa(d,4,15552,0);K[a+68>>2]=K[a+68>>2]|8;b=e+K[a+60>>2]|0;c=f+K[a+56>>2]|0;b=c>>>0>>0?b+1|0:b;K[a+56>>2]=c;K[a+60>>2]=b;a=!(e|f);b=a?-1:f;ua=a?-1:e;return b|0}e=e+i|0;f=f+g|0;e=f>>>0>>0?e+1|0:e;h=b;b=b-g|0;c=c-(i+(g>>>0>h>>>0)|0)|0;if(!!b&(c|0)>=0|(c|0)>0){continue}break}}b=e+K[a+60>>2]|0;c=f+K[a+56>>2]|0;b=c>>>0>>0?b+1|0:b;K[a+56>>2]=c;K[a+60>>2]=b}ua=e;return f|0}function Oc(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;b=a;a:{if(b&3){while(1){c=L[b|0];if(!c|(c|0)==61){break a}b=b+1|0;if(b&3){continue}break}}b:{c:{d=K[b>>2];if(((d|16843008-d)&-2139062144)!=-2139062144){break c}while(1){c=d^1027423549;if(((16843008-c|c)&-2139062144)!=-2139062144){break c}d=K[b+4>>2];c=b+4|0;b=c;if(((16843008-d|d)&-2139062144)==-2139062144){continue}break}break b}c=b}while(1){b=c;d=L[b|0];if(!d){break a}c=b+1|0;if((d|0)!=61){continue}break}}if((a|0)==(b|0)){return 0}g=b-a|0;d:{if(L[g+a|0]){break d}f=K[6848];if(!f){break d}b=K[f>>2];if(!b){break d}while(1){e:{d=a;c=b;h=g;e=0;f:{if(!g){break f}e=L[d|0];if(e){g:{while(1){i=L[c|0];if((i|0)!=(e|0)|!i){break g}h=h-1|0;if(!h){break g}c=c+1|0;e=L[d+1|0];d=d+1|0;if(e){continue}break}e=0}}else{e=0}e=e-L[c|0]|0}if(!e){b=b+g|0;if(L[b|0]==61){break e}}b=K[f+4>>2];f=f+4|0;if(b){continue}break d}break}j=b+1|0}return j}function ue(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=ra-16|0;ra=g;a:{if(c>>>0<=1){Fa(d,1,3946,0);a=0;break a}if(I[a+212|0]&1){Fa(d,1,12631,0);a=0;break a}a=K[a+180>>2]+Q(K[a+228>>2],5644)|0;I[a+5640|0]=L[a+5640|0]|2;Ha(b,g+12|0,1);e=K[a+5164>>2];b:{if(!e){f=K[g+12>>2]+1|0;e=Ia(f,8);K[a+5164>>2]=e;if(!e){Fa(d,1,3972,0);a=0;break a}K[a+5160>>2]=f;break b}f=K[g+12>>2];if(f>>>0>2]){break b}h=e;e=f+1|0;f=La(h,e<<3);if(!f){Fa(d,1,3972,0);a=0;break a}K[a+5164>>2]=f;h=K[a+5160>>2];i=e-h<<3;if(i){B(f+(h<<3)|0,0,i)}K[a+5160>>2]=e;e=K[a+5164>>2]}h=e;e=K[g+12>>2];if(K[h+(e<<3)>>2]){K[g>>2]=e;Fa(d,1,7026,g);a=0;break a}c=c-1|0;e=Ja(c);a=K[a+5164>>2];f=K[g+12>>2];K[a+(f<<3)>>2]=e;if(!e){Fa(d,1,3972,0);a=0;break a}K[(a+(f<<3)|0)+4>>2]=c;if(c){E(K[a+(K[g+12>>2]<<3)>>2],b+1|0,c)}a=1}ra=g+16|0;return a|0}function Lb(a,b,c){var d=0,e=0,f=0,g=0;e=a+4|0;d=(e+b|0)-1&0-b;b=K[a>>2];if(d+c>>>0<=(b+a|0)-4>>>0){f=K[a+4>>2];g=K[a+8>>2];K[f+8>>2]=g;K[g+4>>2]=f;if((d|0)!=(e|0)){d=d-e|0;f=a-(K[a-4>>2]&-2)|0;e=d+K[f>>2]|0;K[f>>2]=e;K[(f+(e&-4)|0)-4>>2]=e;a=a+d|0;b=b-d|0;K[a>>2]=b}a:{if(c+24>>>0<=b>>>0){e=a+c|0;b=(b-c|0)-8|0;K[e+8>>2]=b;g=e+8|0;K[(g+(b&-4)|0)-4>>2]=b|1;d=K[e+8>>2]-8|0;b:{if(d>>>0<=127){b=(d>>>3|0)-1|0;break b}f=T(d);b=((d>>>29-f^4)-(f<<2)|0)+110|0;if(d>>>0<=4095){break b}b=((d>>>30-f^2)-(f<<1)|0)+71|0;b=b>>>0>=63?63:b}d=b<<4;K[e+12>>2]=d+26352;d=d+26360|0;K[e+16>>2]=K[d>>2];K[d>>2]=g;K[K[e+16>>2]+4>>2]=g;d=K[6846];f=K[6847];e=b&31;if((b&63)>>>0>=32){b=1<>>32-e}K[6846]=g|d;K[6847]=b|f;b=c+8|0;K[a>>2]=b;c=(b&-4)+a|0;break a}c=a+b|0}K[c-4>>2]=b;a=a+4|0}else{a=0}return a}function Ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=ra-16|0;ra=g;i=K[K[a+96>>2]+16>>2];h=i>>>0<257?1:2;e=(h<<1)+5|0;f=(c>>>0)/(e>>>0)|0;a:{if(!((Q(e,f)|0)==(c|0)&c>>>0>=e>>>0)){Fa(d,1,4606,0);a=0;break a}if(K[a+8>>2]==16){e=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{e=K[a+12>>2]}a=0;c=L[e+5640|0];a=c&4?K[e+420>>2]+1|0:a;f=f+a|0;if(f>>>0>=32){K[g>>2]=f;Fa(d,1,7744,g);a=0;break a}I[e+5640|0]=c|4;if(a>>>0>>0){c=(e+Q(a,148)|0)+424|0;while(1){Ha(b,c,1);b=b+1|0;Ha(b,c+4|0,h);b=b+h|0;Ha(b,c+8|0,2);d=K[c+8>>2];j=K[e+8>>2];K[c+8>>2]=d>>>0>>0?d:j;Ha(b+2|0,c+12|0,1);b=b+3|0;Ha(b,c+16|0,h);b=b+h|0;Ha(b,g+12|0,1);K[c+36>>2]=K[g+12>>2];d=K[c+16>>2];K[c+16>>2]=d>>>0>>0?d:i;c=c+148|0;b=b+1|0;a=a+1|0;if((f|0)!=(a|0)){continue}break}}K[e+420>>2]=f-1;a=1}ra=g+16|0;return a|0}function nb(a){var b=0,c=0,d=0,e=0;a:{if(!a){break a}b=K[a+5164>>2];if(b){c=K[a+5160>>2];if(c){b=0;while(1){d=K[K[a+5164>>2]+(b<<3)>>2];if(d){Ga(d);c=K[a+5160>>2]}b=b+1|0;if(c>>>0>b>>>0){continue}break}b=K[a+5164>>2]}K[a+5160>>2]=0;Ga(b);K[a+5164>>2]=0}b=K[a+5172>>2];if(b){Ga(b);K[a+5172>>2]=0}b=K[a+5584>>2];if(b){Ga(b);K[a+5584>>2]=0}b=K[a+5612>>2];if(b){Ga(b);K[a+5612>>2]=0}b=K[a+5608>>2];if(b){Ga(b);K[a+5608>>2]=0}b=K[a+5628>>2];if(b){Ga(b);K[a+5636>>2]=0;K[a+5628>>2]=0;K[a+5632>>2]=0}b=K[a+5616>>2];if(b){e=K[a+5620>>2];if(e){c=0;while(1){d=K[b+12>>2];if(d){Ga(d);K[b+12>>2]=0;e=K[a+5620>>2]}b=b+20|0;c=c+1|0;if(e>>>0>c>>>0){continue}break}b=K[a+5616>>2]}Ga(b);K[a+5616>>2]=0}b=K[a+5604>>2];if(b){Ga(b);K[a+5604>>2]=0}b=K[a+5596>>2];if(!b){break a}Ga(b);K[a+5596>>2]=0;K[a+5600>>2]=0}}function Od(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ra-32|0;ra=e;a:{if(K[a+72>>2]){Fa(d,2,6978,0);c=1;break a}if((c|0)!=14){c=0;Fa(d,1,14408,0);break a}Ha(b,a+16|0,4);Ha(b+4|0,a+12|0,4);Ha(b+8|0,a+20|0,2);f=K[a+12>>2];b:{g=K[a+16>>2];c=K[a+20>>2];c:{if(!g){break c}c=K[a+20>>2];if(!f){break c}if(c){break b}c=0}K[e+8>>2]=c;K[e+4>>2]=g;K[e>>2]=f;Fa(d,1,14252,e);c=0;break a}if(c-16385>>>0<=4294950911){c=0;Fa(d,1,14166,0);break a}c=Ia(c,12);K[a+72>>2]=c;if(!c){c=0;Fa(d,1,14203,0);break a}c=1;Ha(b+10|0,a+24|0,1);Ha(b+11|0,a+28|0,1);f=K[a+28>>2];if((f|0)!=7){K[e+16>>2]=f;Fa(d,4,16235,e+16|0)}Ha(b+12|0,a+32|0,1);Ha(b+13|0,a+36|0,1);b=K[a>>2];I[b+212|0]=L[b+212|0]&251|(K[a+24>>2]==255)<<2;b=K[a>>2];K[b+240>>2]=K[a+12>>2];K[b+244>>2]=K[a+16>>2];I[a+133|0]=1}ra=e+32|0;return c|0}function Hc(a,b,c,d){a:{switch(b-9|0){case 0:b=K[c>>2];K[c>>2]=b+4;K[a>>2]=K[b>>2];return;case 6:b=K[c>>2];K[c>>2]=b+4;b=J[b>>1];K[a>>2]=b;K[a+4>>2]=b>>31;return;case 7:b=K[c>>2];K[c>>2]=b+4;K[a>>2]=M[b>>1];K[a+4>>2]=0;return;case 8:b=K[c>>2];K[c>>2]=b+4;b=I[b|0];K[a>>2]=b;K[a+4>>2]=b>>31;return;case 9:b=K[c>>2];K[c>>2]=b+4;K[a>>2]=L[b|0];K[a+4>>2]=0;return;case 16:b=K[c>>2]+7&-8;K[c>>2]=b+8;P[a>>3]=P[b>>3];return;case 17:va[d|0](a,c);default:return;case 1:case 4:case 14:b=K[c>>2];K[c>>2]=b+4;b=K[b>>2];K[a>>2]=b;K[a+4>>2]=b>>31;return;case 2:case 5:case 11:case 15:b=K[c>>2];K[c>>2]=b+4;K[a>>2]=K[b>>2];K[a+4>>2]=0;return;case 3:case 10:case 12:case 13:break a}}b=K[c>>2]+7&-8;K[c>>2]=b+8;c=K[b+4>>2];K[a>>2]=K[b>>2];K[a+4>>2]=c}function ve(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;g=ra-16|0;ra=g;a:{if(c>>>0<=1){Fa(d,1,4274,0);a=0;break a}I[a+212|0]=L[a+212|0]|1;Ha(b,g+12|0,1);e=K[a+140>>2];b:{if(!e){f=K[g+12>>2]+1|0;e=Ia(f,8);K[a+140>>2]=e;if(!e){Fa(d,1,4300,0);a=0;break a}K[a+136>>2]=f;break b}f=K[g+12>>2];if(f>>>0>2]){break b}h=e;e=f+1|0;f=La(h,e<<3);if(!f){Fa(d,1,4300,0);a=0;break a}K[a+140>>2]=f;h=K[a+136>>2];i=e-h<<3;if(i){B(f+(h<<3)|0,0,i)}K[a+136>>2]=e;e=K[a+140>>2]}h=e;e=K[g+12>>2];if(K[h+(e<<3)>>2]){K[g>>2]=e;Fa(d,1,7048,g);a=0;break a}c=c-1|0;e=Ja(c);a=K[a+140>>2];f=K[g+12>>2];K[a+(f<<3)>>2]=e;if(!e){Fa(d,1,4300,0);a=0;break a}K[(a+(f<<3)|0)+4>>2]=c;if(c){E(K[a+(K[g+12>>2]<<3)>>2],b+1|0,c)}a=1}ra=g+16|0;return a|0}function yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=ra-32|0;ra=d;e=K[a+28>>2];K[d+16>>2]=e;f=K[a+20>>2];K[d+28>>2]=c;K[d+24>>2]=b;b=f-e|0;K[d+20>>2]=b;f=b+c|0;i=2;b=d+16|0;a:{while(1){b:{c:{d:{if(!Kb(ba(K[a+60>>2],b|0,i|0,d+12|0)|0)){g=K[d+12>>2];if((g|0)==(f|0)){break d}if((g|0)>=0){break c}break b}if((f|0)!=-1){break b}}b=K[a+44>>2];K[a+28>>2]=b;K[a+20>>2]=b;K[a+16>>2]=b+K[a+48>>2];a=c;break a}h=K[b+4>>2];j=h>>>0>>0;e=(j<<3)+b|0;h=g-(j?h:0)|0;K[e>>2]=h+K[e>>2];b=(j?12:4)+b|0;K[b>>2]=K[b>>2]-h;f=f-g|0;i=i-j|0;b=e;continue}break}K[a+28>>2]=0;K[a+16>>2]=0;K[a+20>>2]=0;K[a>>2]=K[a>>2]|32;a=0;if((i|0)==2){break a}a=c-K[b+4>>2]|0}ra=d+32|0;return a|0}function Ga(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;if(a){b=a-4|0;f=K[b>>2];c=f;d=b;e=K[a-8>>2];a=e&-2;if((a|0)!=(e|0)){d=b-a|0;c=K[d+4>>2];e=K[d+8>>2];K[c+8>>2]=e;K[e+4>>2]=c;c=a+f|0}a=b+f|0;b=K[a>>2];if((b|0)!=K[(a+b|0)-4>>2]){f=K[a+4>>2];a=K[a+8>>2];K[f+8>>2]=a;K[a+4>>2]=f;c=b+c|0}K[d>>2]=c;K[((c&-4)+d|0)-4>>2]=c|1;b=K[d>>2]-8|0;a:{if(b>>>0<=127){a=(b>>>3|0)-1|0;break a}c=T(b);a=((b>>>29-c^4)-(c<<2)|0)+110|0;if(b>>>0<=4095){break a}a=((b>>>30-c^2)-(c<<1)|0)+71|0;a=a>>>0>=63?63:a}b=a<<4;K[d+4>>2]=b+26352;b=b+26360|0;K[d+8>>2]=K[b>>2];K[b>>2]=d;K[K[d+8>>2]+4>>2]=d;b=K[6846];c=K[6847];d=a&31;if((a&63)>>>0>=32){a=1<>>32-d}K[6846]=e|b;K[6847]=a|c}}function ld(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;if(N[a+44>>2]>=8){e=K[a+36>>2];j=e<<5;k=Q(e,28);l=Q(e,24);m=Q(e,20);n=e<<4;o=Q(e,12);p=e<<3;f=K[a+40>>2];g=8;while(1){Hb(a,f,K[a+36>>2],8);Za(a);h=K[a+32>>2];if(h){i=K[a>>2];b=0;while(1){c=(b<<2)+f|0;d=i+(b<<5)|0;O[c>>2]=O[d>>2];O[c+(e<<2)>>2]=O[d+4>>2];O[c+p>>2]=O[d+8>>2];O[c+o>>2]=O[d+12>>2];b=b+1|0;if((h|0)!=(b|0)){continue}break}i=K[a>>2];b=0;while(1){c=(b<<2)+f|0;d=i+(b<<5)|0;O[c+n>>2]=O[d+16>>2];O[c+m>>2]=O[d+20>>2];O[c+l>>2]=O[d+24>>2];O[c+k>>2]=O[d+28>>2];b=b+1|0;if((h|0)!=(b|0)){continue}break}}f=f+j|0;g=g+8|0;if(g>>>0<=N[a+44>>2]){continue}break}}Ga(K[a>>2]);Ga(a)}function Id(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=ra-16|0;ra=e;a:{if(K[a+116>>2]){break a}if(c>>>0<=1){Fa(d,1,8845,0);break a}Ha(b,e+12|0,2);f=K[e+12>>2];h=f&65535;if(!h){Fa(d,1,8878,0);break a}if(Q(h,6)+2>>>0>c>>>0){Fa(d,1,8845,0);break a}d=Ja(Q(f,6));if(!d){break a}c=Ja(8);K[a+116>>2]=c;if(!c){Ga(d);break a}K[c>>2]=d;f=c;c=M[e+12>>1];J[f+4>>1]=c;if(!c){g=1;break a}c=0;while(1){g=e+12|0;Ha(b+2|0,g,2);f=d+Q(c,6)|0;J[f>>1]=K[e+12>>2];Ha(b+4|0,g,2);J[f+2>>1]=K[e+12>>2];b=b+6|0;Ha(b,g,2);J[f+4>>1]=K[e+12>>2];g=1;c=c+1|0;if(c>>>0>2]+4>>1]){continue}break}}ra=e+16|0;return g|0}function $b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;g=ra-32|0;ra=g;f=K[a+96>>2];a:{if(!f){Fa(d,1,13715,0);e=0;break a}f=Ia(4,K[f+16>>2]);e=0;if(!f){break a}if(b){j=K[a+96>>2];while(1){b:{e=K[(h<<2)+c>>2];c:{if(e>>>0>=N[j+16>>2]){K[g+16>>2]=e;Fa(d,1,2406,g+16|0);break c}i=f+(e<<2)|0;if(!K[i>>2]){break b}K[g>>2]=e;Fa(d,1,3450,g)}Ga(f);e=0;break a}K[i>>2]=1;h=h+1|0;if((h|0)!=(b|0)){continue}break}}Ga(f);Ga(K[a+64>>2]);d:{if(b){d=b<<2;e=Ja(d);K[a+64>>2]=e;if(!e){K[a+60>>2]=0;e=0;break a}if(!d){break d}E(e,c,d);break d}K[a+64>>2]=0}K[a+60>>2]=b;e=1}ra=g+32|0;return e|0}function Tc(a){a=a|0;var b=0,c=0;if(a){Eb(K[a>>2]);K[a>>2]=0;b=K[a+72>>2];if(b){Ga(b);K[a+72>>2]=0}b=K[a+68>>2];if(b){Ga(b);K[a+68>>2]=0}b=K[a+108>>2];if(b){Ga(b);K[a+108>>2]=0}b=K[a+116>>2];if(b){c=K[b>>2];if(c){Ga(c);b=K[a+116>>2];K[b>>2]=0}Ga(b);K[a+116>>2]=0}b=K[a+120>>2];if(b){c=K[b+12>>2];if(c){Ga(c);b=K[a+120>>2];K[b+12>>2]=0}c=K[b+4>>2];if(c){Ga(c);b=K[a+120>>2];K[b+4>>2]=0}c=K[b+8>>2];if(c){Ga(c);b=K[a+120>>2];K[b+8>>2]=0}c=K[b>>2];if(c){Ga(c);b=K[a+120>>2];K[b>>2]=0}Ga(b);K[a+120>>2]=0}b=K[a+4>>2];if(b){tb(b);K[a+4>>2]=0}b=K[a+8>>2];if(b){tb(b);K[a+8>>2]=0}Ga(a)}}function Yb(){var a=0,b=0,c=0;a:{a=Ia(1,256);if(a){K[a>>2]=1;K[a+208>>2]=1;I[a+212|0]=L[a+212|0]|6;b=Ia(1,5644);K[a+12>>2]=b;if(!b){break a}b=Ia(1,1e3);K[a+16>>2]=b;if(!b){break a}K[a+48>>2]=0;K[a+52>>2]=0;K[a+44>>2]=-1;K[a+20>>2]=1e3;b:{c=Ia(1,48);if(c){K[c+24>>2]=0;K[c+32>>2]=100;b=Ia(100,24);K[c+28>>2]=b;if(b){break b}Ga(c)}K[a+224>>2]=0;break a}K[c+40>>2]=0;K[a+224>>2]=c;b=ub();K[a+220>>2]=b;if(!b){break a}b=ub();K[a+216>>2]=b;if(!b){break a}c:{if(!Oc(1382)){break c}}b=zc();K[a+236>>2]=b;if(!b){b=zc();K[a+236>>2]=b;if(!b){break a}}}else{a=0}return a}Eb(a);return 0}function xb(a,b,c,d,e,f){var g=0,h=0,i=0,j=0,k=0,l=0;g=ra-240|0;ra=g;K[g+236>>2]=c;K[g+232>>2]=b;K[g>>2]=a;l=!e;a:{b:{c:{d:{if((b|0)!=1){h=a;i=1;break d}h=a;i=1;if(c){break d}e=a;break c}while(1){j=(d<<2)+f|0;e=h-K[j>>2]|0;if((gb(e,a)|0)<=0){e=h;break c}k=l^-1;l=1;e:{if(!((k|(d|0)<2)&1)){j=K[j-8>>2];k=h-8|0;if((gb(k,e)|0)>=0){break e}if((gb(k-j|0,e)|0)>=0){break e}}K[(i<<2)+g>>2]=e;b=Nc(b,c);yb(g+232|0,b);i=i+1|0;d=b+d|0;h=e;c=K[g+236>>2];b=K[g+232>>2];if(c|(b|0)!=1){continue}break b}break}e=h;break b}if(!l){break a}}Mc(g,i);Jb(e,d,f)}ra=g+240|0}function Kc(a,b,c,d,e){var f=0,g=0,h=0;f=ra-208|0;ra=f;K[f+204>>2]=c;c=f+160|0;B(c,0,40);K[f+200>>2]=K[f+204>>2];a:{if((Jc(0,b,f+200|0,f+80|0,c,d,e)|0)<0){break a}c=K[a+76>>2]<0;g=K[a>>2];K[a>>2]=g&-33;b:{c:{d:{if(!K[a+48>>2]){K[a+48>>2]=80;K[a+28>>2]=0;K[a+16>>2]=0;K[a+20>>2]=0;h=K[a+44>>2];K[a+44>>2]=f;break d}if(K[a+16>>2]){break c}}if(Nb(a)){break b}}Jc(a,b,f+200|0,f+80|0,f+160|0,d,e)}if(h){va[K[a+36>>2]](a,0,0)|0;K[a+48>>2]=0;K[a+44>>2]=h;K[a+28>>2]=0;K[a+16>>2]=0;K[a+20>>2]=0}K[a>>2]=K[a>>2]|g&32;if(c){break a}}ra=f+208|0}function Fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=ra-16|0;ra=e;if(K[a+8>>2]==16){g=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{g=K[a+12>>2]}h=K[a+96>>2];f=N[h+16>>2]<257?1:2;a:{if(f>>>0>=c>>>0){c=0;Fa(d,1,4632,0);break a}K[e+12>>2]=(f^-1)+c;Ha(b,e+8|0,f);i=K[e+8>>2];if(i>>>0>=N[h+16>>2]){c=0;Fa(d,1,14030,0);break a}c=1;b=b+f|0;Ha(b,K[g+5584>>2]+Q(i,1080)|0,1);if(!_c(a,K[e+8>>2],b+1|0,e+12|0,d)){c=0;Fa(d,1,4632,0);break a}if(!K[e+12>>2]){break a}c=0;Fa(d,1,4632,0)}ra=e+16|0;return c|0}function Vc(a,b){var c=0,d=0,e=0,f=0,g=0;f=ra-32|0;ra=f;c=K[a+60>>2];a:{b:{if(c){g=1;while(1){e=K[K[a+64>>2]+(d<<2)>>2];if(!K[(K[K[a+100>>2]+24>>2]+Q(e,52)|0)+44>>2]){K[f+16>>2]=e;Fa(b,2,7567,f+16|0);g=0;c=K[a+60>>2]}d=d+1|0;if(c>>>0>d>>>0){continue}break}break b}g=1;c=K[a+100>>2];e=1;if(!K[c+16>>2]){break a}while(1){if(!K[(K[c+24>>2]+Q(d,52)|0)+44>>2]){K[f>>2]=d;Fa(b,2,7567,f);g=0;c=K[a+100>>2]}d=d+1|0;if(d>>>0>2]){continue}break}}e=1;if(g){break a}Fa(b,1,2860,0);e=0}ra=f+32|0;return e}function Kd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;f=ra-16|0;ra=f;e=K[a+120>>2];a:{if(!e){Fa(d,1,8799,0);c=0;break a}if(K[e+12>>2]){Fa(d,1,11561,0);c=0;break a}e=L[e+18|0];g=e<<2;if(g>>>0>c>>>0){Fa(d,1,8766,0);c=0;break a}g=Ja(g);c=0;if(!g){break a}if(e){d=0;while(1){c=f+12|0;Ha(b,c,2);h=g+(d<<2)|0;J[h>>1]=K[f+12>>2];Ha(b+2|0,c,1);I[h+2|0]=K[f+12>>2];Ha(b+3|0,c,1);I[h+3|0]=K[f+12>>2];b=b+4|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}}K[K[a+120>>2]+12>>2]=g;c=1}ra=f+16|0;return c|0}function qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0;e=ra-16|0;ra=e;g=K[K[a+96>>2]+16>>2];a:{if((g+2|0)!=(c|0)){Fa(d,1,4580,0);break a}Ha(b,e+12|0,2);if(K[e+12>>2]!=(g|0)){Fa(d,1,4580,0);break a}if(!g){f=1;break a}c=b+2|0;a=K[K[a+96>>2]+24>>2];b=0;while(1){Ha(c,e+8|0,1);f=K[e+8>>2];h=f&127;i=h+1|0;K[a+24>>2]=i;K[a+32>>2]=f>>>7&1;if(h>>>0>=31){K[e+4>>2]=i;K[e>>2]=b;Fa(d,1,15365,e);f=0;break a}a=a+52|0;f=1;c=c+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}ra=e+16|0;return f|0}function Ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0;e=ra-16|0;ra=e;a:{b:{h=e+8|0;c:{if(N[K[a+96>>2]+16>>2]<=256){if(c){f=-1;g=1;break c}Fa(d,1,4658,0);a=0;break a}if(c>>>0<=1){break b}f=-2;g=2}Ha(b,h,g);K[e+12>>2]=c+f;c=K[e+8>>2];f=K[K[a+96>>2]+16>>2];if(c>>>0>=f>>>0){K[e+4>>2]=f;K[e>>2]=c;Fa(d,1,7675,e);a=0;break a}if(!Zc(a,c,b+g|0,e+12|0,d)){Fa(d,1,4658,0);a=0;break a}a=1;if(!K[e+12>>2]){break a}Fa(d,1,4658,0);a=0;break a}Fa(d,1,4658,0);a=0}ra=e+16|0;return a|0}function tc(a,b,c,d){var e=0,f=0,g=0;g=ra-128|0;ra=g;f=g;c=K[b+12>>2]+(c<<4)|0;e=K[c>>2];a:{if(!e){b=c;break a}while(1){K[f>>2]=c;f=f+4|0;b=e;c=b;e=K[c>>2];if(e){continue}break}}e=0;while(1){c=K[b+8>>2];if((e|0)>(c|0)){K[b+8>>2]=e;c=e}b:{if((c|0)>=(d|0)){break b}while(1){if(K[b+4>>2]<=(c|0)){break b}c:{if(Wa(a,1)){K[b+4>>2]=c;break c}c=c+1|0}if((c|0)<(d|0)){continue}break}}K[b+8>>2]=c;if((f|0)!=(g|0)){f=f-4|0;b=K[f>>2];e=c;continue}break}ra=g+128|0;return K[b+4>>2]<(d|0)} +function Ud(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=K[a+32>>2];K[a+36>>2]=f;a:{e=K[a+48>>2];if(e){while(1){e=va[K[a+20>>2]](f,e,K[a>>2])|0;if((e|0)==-1){break a}f=e+K[a+36>>2]|0;K[a+36>>2]=f;e=K[a+48>>2]-e|0;K[a+48>>2]=e;if(e){continue}break}f=K[a+32>>2]}K[a+48>>2]=0;K[a+36>>2]=f;if(!(va[K[a+28>>2]](b,c,K[a>>2])|0)){K[a+68>>2]=K[a+68>>2]|8;return 0}K[a+56>>2]=b;K[a+60>>2]=c;return 1}K[a+68>>2]=K[a+68>>2]|8;Fa(d,4,15567,0);K[a+68>>2]=K[a+68>>2]|8;return 0}function Fa(a,b,c,d){var e=0,f=0;e=ra-528|0;ra=e;a:{if(!a){break a}b:{c:{switch(b-1|0){case 0:b=a+12|0;break b;case 1:b=a+16|0;a=a+4|0;break b;case 3:break c;default:break a}}b=a+20|0;a=a+8|0}b=K[b>>2];if(!b|!c){break a}f=K[a>>2];B(e,0,512);K[e+524>>2]=d;a=ra-160|0;ra=a;K[a+148>>2]=e;K[a+152>>2]=511;B(a,0,144);K[a+76>>2]=-1;K[a+36>>2]=103;K[a+80>>2]=-1;K[a+44>>2]=a+159;K[a+84>>2]=a+148;I[e|0]=0;Kc(a,c,d,104,105);ra=a+160|0;I[e+511|0]=0;va[b|0](e,f)}ra=e+528|0}function Qd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if(K[a+100>>2]!=1){Fa(d,1,11364,0);return 0}a:{if(c>>>0<=7){break a}Ha(b,a+56|0,4);Ha(b+4|0,a+60|0,4);if(c&3){break a}c=c-8|0;e=c>>>2|0;K[a+64>>2]=e;b:{if(!c){break b}c=Ia(e,4);K[a+68>>2]=c;if(!c){Fa(d,1,2198,0);return 0}if(!K[a+64>>2]){break b}d=b+8|0;c=0;while(1){Ha(d,K[a+68>>2]+(c<<2)|0,4);d=d+4|0;c=c+1|0;if(c>>>0>2]){continue}break}}K[a+100>>2]=K[a+100>>2]|2;return 1}Fa(d,1,5918,0);return 0}function vc(a){var b=0,c=0,d=0;a:{if(!a){break a}b=K[a+8>>2];if(!b){break a}a=K[a+12>>2];if(b>>>0>=4){d=b&-4;while(1){K[a+60>>2]=0;K[a+52>>2]=999;K[a+56>>2]=0;K[a+44>>2]=0;K[a+36>>2]=999;K[a+40>>2]=0;K[a+28>>2]=0;K[a+20>>2]=999;K[a+24>>2]=0;K[a+12>>2]=0;K[a+4>>2]=999;K[a+8>>2]=0;a=a- -64|0;c=c+4|0;if((d|0)!=(c|0)){continue}break}}b=b&3;if(!b){break a}c=0;while(1){K[a+12>>2]=0;K[a+4>>2]=999;K[a+8>>2]=0;a=a+16|0;c=c+1|0;if((b|0)!=(c|0)){continue}break}}}function De(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ra-16|0;ra=e;K[e+12>>2]=c;a:{if(!(!Zc(a,0,b,e+12|0,d)|K[e+12>>2])){if(K[a+8>>2]==16){b=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{b=K[a+12>>2]}f=1;if(N[K[a+96>>2]+16>>2]<2){break a}c=K[b+5584>>2];g=c+28|0;b=1;d=c;while(1){K[d+1104>>2]=K[c+24>>2];K[d+1884>>2]=K[c+804>>2];E(d+1108|0,g,776);d=d+1080|0;b=b+1|0;if(b>>>0>2]+16>>2]){continue}break}break a}Fa(d,1,4554,0)}ra=e+16|0;return f|0}function Gc(a,b){a:{b:{if(b>>>0<=127){break b}c:{if(!K[K[6873]>>2]){if((b&-128)==57216){break b}break c}if(b>>>0<=2047){I[a+1|0]=b&63|128;I[a|0]=b>>>6|192;a=2;break a}if(!((b&-8192)!=57344&b>>>0>=55296)){I[a+2|0]=b&63|128;I[a|0]=b>>>12|224;I[a+1|0]=b>>>6&63|128;a=3;break a}if(b-65536>>>0<=1048575){I[a+3|0]=b&63|128;I[a|0]=b>>>18|240;I[a+2|0]=b>>>6&63|128;I[a+1|0]=b>>>12&63|128;a=4;break a}}K[6585]=25;a=-1;break a}I[a|0]=b;a=1}return a}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(!$a(K[a+8>>2],54,c)){return 0}h=K[a+8>>2];d=K[h>>2];f=K[h+8>>2];a:{if(d){e=1;i=d&1;if((d|0)==1){d=0}else{d=d&-2;while(1){g=0;b:{if(!e){break b}g=0;if(!(va[K[f>>2]](a,b,c)|0)){break b}g=(va[K[f+4>>2]](a,b,c)|0)!=0}e=g;f=f+8|0;j=j+2|0;if((d|0)!=(j|0)){continue}break}d=!e}e=i?0:e;if(!(d|!i)){e=(va[K[f>>2]](a,b,c)|0)!=0}Ta(h);if(e){break a}return 0}Ta(h)}return 1}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ra-16|0;ra=e;g=K[K[a+96>>2]+16>>2];f=g>>>0<257?1:2;a:{if((f+2|0)!=(c|0)){a=0;Fa(d,1,4248,0);break a}if(K[a+8>>2]==16){c=K[a+180>>2]+Q(K[a+228>>2],5644)|0}else{c=K[a+12>>2]}Ha(b,e+12|0,f);a=1;b=b+f|0;Ha(b,e+8|0,1);f=K[e+12>>2];if(f>>>0>=g>>>0){K[e+4>>2]=g;K[e>>2]=f;Fa(d,1,14886,e);a=0;break a}Ha(b+1|0,(K[c+5584>>2]+Q(f,1080)|0)+808|0,1)}ra=e+16|0;return a|0}function Mb(a,b,c){var d=0,e=0,f=0;d=K[c+16>>2];a:{if(!d){if(Nb(c)){break a}d=K[c+16>>2]}e=K[c+20>>2];if(d-e>>>0>>0){return va[K[c+36>>2]](c,a,b)|0}b:{c:{if(!b|K[c+80>>2]<0){break c}d=b;while(1){f=a+d|0;if(L[f-1|0]!=10){d=d-1|0;if(d){continue}break c}break}e=va[K[c+36>>2]](c,a,d)|0;if(e>>>0>>0){break a}b=b-d|0;e=K[c+20>>2];break b}f=a;d=0}hb(e,f,b);K[c+20>>2]=K[c+20>>2]+b;e=b+d|0}return e}function Qe(a,b,c){var d=0,e=0,f=0,g=0;g=c&63;f=g;e=f&31;if(f>>>0>=32){f=-1>>>e|0}else{d=-1>>>e|0;f=d|(1<>>0>=32){d=f<>>32-e|d<>>0>=32){d=-1<>>32-d}a=c&a;b=b&d;d=e&31;if(e>>>0>=32){c=0;a=b>>>d|0}else{c=b>>>d|0;a=((1<>>d}a=a|g;ua=c|f;return a} +function lb(a,b,c){var d=0;if(!K[a+12>>2]){va[b|0](c,K[a+36>>2]);return}d=Ja(8);a:{if(!d){break a}K[d+4>>2]=c;K[d>>2]=b;b=Ja(8);if(!b){Ga(d);return}K[b>>2]=d;c=Q(K[a+4>>2],100);K[a+40>>2]=c;while(1){if((c|0)>2]){continue}break}K[b+4>>2]=K[a+20>>2];K[a+20>>2]=b;K[a+24>>2]=K[a+24>>2]+1;b=K[a+28>>2];if(!b){break a}K[K[b>>2]+8>>2]=0;K[a+28>>2]=K[b+4>>2];K[a+32>>2]=K[a+32>>2]-1;Ga(b)}}function $c(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;K[a+184>>2]=b;d=K[a+96>>2];a:{if(!d){break a}f=K[d+24>>2];if(!f){break a}e=K[a+12>>2];if(!e|!K[e+5584>>2]){break a}e=K[d+16>>2];if(!e){return 1}d=0;while(1){if(N[(K[K[a+12>>2]+5584>>2]+Q(d,1080)|0)+4>>2]<=b>>>0){Fa(c,1,9140,0);return 0}K[(Q(d,52)+f|0)+40>>2]=b;g=1;d=d+1|0;if((e|0)!=(d|0)){continue}break}}return g|0}function Qc(a){var b=0,c=0;b=K[a+76>>2];if(!((b|0)>=0&(!b|K[6855]!=(b&1073741823)))){a:{if(K[a+80>>2]==10){break a}b=K[a+20>>2];if((b|0)==K[a+16>>2]){break a}K[a+20>>2]=b+1;I[b|0]=10;return}Rc(a);return}b=a+76|0;c=K[b>>2];K[b>>2]=c?c:1073741823;b:{c:{if(K[a+80>>2]==10){break c}c=K[a+20>>2];if((c|0)==K[a+16>>2]){break c}K[a+20>>2]=c+1;I[c|0]=10;break b}Rc(a)}K[b>>2]=0}function Qb(){var a=0,b=0,c=0;while(1){b=a<<4;c=b+26352|0;K[b+26356>>2]=c;K[b+26360>>2]=c;a=a+1|0;if((a|0)!=64){continue}break}Pc(48);a=ra-16|0;ra=a;a:{if(pa(a+12|0,a+8|0)|0){break a}b=Ab((K[a+12>>2]<<2)+4|0);K[6848]=b;if(!b){break a}b=Ab(K[a+8>>2]);if(b){c=K[6848];K[c+(K[a+12>>2]<<2)>>2]=0;if(!(oa(c|0,b|0)|0)){break a}}K[6848]=0}ra=a+16|0;K[6855]=42;K[6873]=27560}function Oa(a,b,c,d,e,f,g,h){var i=0,j=0;i=+R(e-a|0);j=i*1.402;if(S(j)<2147483647){e=~~j}else{e=-2147483648}e=e+c|0;K[f>>2]=(e|0)>=0?(b|0)>(e|0)?e:b:0;j=+R(d-a|0);i=j*.344+i*.714;if(S(i)<2147483647){a=~~i}else{a=-2147483648}a=c-a|0;K[g>>2]=(a|0)>=0?(a|0)<(b|0)?a:b:0;i=j*1.772;if(S(i)<2147483647){a=~~i}else{a=-2147483648}a=a+c|0;K[h>>2]=(a|0)>=0?(a|0)<(b|0)?a:b:0}function sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=K[a+84>>2];f=K[e>>2];d=K[e+4>>2];h=K[a+28>>2];g=K[a+20>>2]-h|0;g=d>>>0>>0?d:g;if(g){hb(f,h,g);f=g+K[e>>2]|0;K[e>>2]=f;d=K[e+4>>2]-g|0;K[e+4>>2]=d}d=c>>>0>d>>>0?d:c;if(d){hb(f,b,d);f=d+K[e>>2]|0;K[e>>2]=f;K[e+4>>2]=K[e+4>>2]-d}I[f|0]=0;b=K[a+44>>2];K[a+28>>2]=b;K[a+20>>2]=b;return c|0}function Gb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;if(a){c=K[a+4>>2];if(c){Ga(c);K[a+4>>2]=0}if(b){c=a;while(1){d=K[c+200>>2];if(d){e=0;f=K[c+196>>2];if(f){while(1){g=K[d+12>>2];if(g){Ga(g);K[d+12>>2]=0;f=K[c+196>>2]}d=d+16|0;e=e+1|0;if(e>>>0>>0){continue}break}d=K[c+200>>2]}Ga(d);K[c+200>>2]=0}c=c+240|0;h=h+1|0;if((h|0)!=(b|0)){continue}break}}Ga(a)}}function Gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;e=K[c+8>>2];d=e>>>0<=1?1:e;f=K[c+4>>2];g=f-K[c>>2]|0;while(1){h=d;d=d<<1;if(h-g>>>0>>0){continue}break}if((e|0)!=(h|0)){d=Ja(h);if(!d){return-1}e=K[c>>2];if(e){if(g){E(d,e,g)}Ga(K[c>>2])}K[c+8>>2]=h;K[c>>2]=d;f=d+g|0;K[c+4>>2]=f}if(b){E(f,a,b)}K[c+4>>2]=K[c+4>>2]+b;return b|0}function mc(a){K[a+100>>2]=20784;K[a+96>>2]=20784;K[a+92>>2]=20784;K[a+88>>2]=20784;K[a+84>>2]=20784;K[a+80>>2]=20784;K[a+76>>2]=20784;K[a+72>>2]=20784;K[a+68>>2]=20784;K[a+64>>2]=20784;K[a+60>>2]=20784;K[a+56>>2]=20784;K[a+52>>2]=20784;K[a+48>>2]=20784;K[a+44>>2]=20784;K[a+40>>2]=20784;K[a+36>>2]=20784;K[a+32>>2]=20784;K[a+28>>2]=20784}function Wa(a,b){var c=0,d=0,e=0,f=0;if((b|0)<=0){return 0}c=K[a+12>>2];d=K[a+16>>2];while(1){e=b;a:{if(d){break a}c=c<<8&65280;K[a+12>>2]=c;d=(c|0)==65280?7:8;K[a+16>>2]=d;b=K[a+8>>2];if(b>>>0>=N[a+4>>2]){break a}K[a+8>>2]=b+1;c=L[b|0]|c;K[a+12>>2]=c}d=d-1|0;K[a+16>>2]=d;b=e-1|0;f=(c>>>d&1)<>>0>1){continue}break}return f}function Md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=ra-16|0;ra=f;e=K[a+24>>2];if((e|0)!=255){K[f>>2]=e;Fa(d,2,2641,f)}a:{b:{if(K[a+20>>2]==(c|0)){if(c){break b}e=1;break a}e=0;Fa(d,1,14473,0);break a}c=0;while(1){e=1;Ha(b,(K[a+72>>2]+Q(c,12)|0)+8|0,1);b=b+1|0;c=c+1|0;if(c>>>0>2]){continue}break}}ra=f+16|0;return e|0}function Ha(a,b,c){var d=0,e=0;K[b>>2]=0;a:{if(!c){break a}d=c&3;b=b+c|0;if(c>>>0>=4){e=c&-4;c=0;while(1){I[b-1|0]=L[a|0];I[b-2|0]=L[a+1|0];I[b-3|0]=L[a+2|0];b=b-4|0;I[b|0]=L[a+3|0];a=a+4|0;c=c+4|0;if((e|0)!=(c|0)){continue}break}}if(!d){break a}c=0;while(1){b=b-1|0;I[b|0]=L[a|0];a=a+1|0;c=c+1|0;if((d|0)!=(c|0)){continue}break}}}function we(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=ra-16|0;ra=e;a:{if(!c){Fa(d,1,4069,0);a=0;break a}Ha(b,e+12|0,1);f=c-1|0;a=1;if(!f){break a}a=0;c=0;while(1){b=b+1|0;Ha(b,e+8|0,1);g=K[e+8>>2];c=g<<24>>31&(g&127|c)<<7;a=a+1|0;if((f|0)!=(a|0)){continue}break}a=1;if(!c){break a}Fa(d,1,4069,0);a=0}ra=e+16|0;return a|0}function rc(a,b,c,d){var e=0,f=0,g=R(0),h=0,i=R(0),j=0,k=R(0);if(d){while(1){e=f<<2;h=e+b|0;i=O[h>>2];j=a+e|0;g=O[j>>2];e=c+e|0;k=O[e>>2];O[j>>2]=R(k*R(1.4019999504089355))+g;O[h>>2]=R(g+R(i*R(-.3441300094127655)))+R(k*R(-.714139997959137));O[e>>2]=g+R(i*R(1.7719999551773071));f=f+1|0;if((f|0)!=(d|0)){continue}break}}}function Jb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=ra-240|0;ra=f;K[f>>2]=a;g=1;a:{if((b|0)<2){break a}d=a;while(1){d=d-8|0;h=b-2|0;e=d-K[(h<<2)+c>>2]|0;if((gb(a,e)|0)>=0){if((gb(a,d)|0)>=0){break a}}i=e;e=(gb(e,d)|0)>=0;d=e?i:d;K[(g<<2)+f>>2]=d;g=g+1|0;b=e?b-1|0:h;if((b|0)>1){continue}break}}Mc(f,g);ra=f+240|0}function Mc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=8;f=ra-256|0;ra=f;if((b|0)>=2){h=(b<<2)+a|0;K[h>>2]=f;while(1){e=c>>>0>=256?256:c;hb(K[h>>2],K[a>>2],e);d=0;while(1){g=(d<<2)+a|0;d=d+1|0;hb(K[g>>2],K[(d<<2)+a>>2],e);K[g>>2]=K[g>>2]+e;if((b|0)!=(d|0)){continue}break}c=c-e|0;if(c){continue}break}}ra=f+256|0}function gd(a){a=a|0;var b=0,c=0,d=0,e=0;b=K[a+24>>2];if(b){c=K[a+28>>2];e=(c>>>0)/52|0;if(c>>>0>=52){while(1){c=K[b>>2];if(c){Ga(c-1|0);K[b>>2]=0}c=K[b+4>>2];if(c){Ga(c);K[b+4>>2]=0}c=K[b+8>>2];if(c){Ga(c);K[b+8>>2]=0}b=b+52|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}b=K[a+24>>2]}Ga(b);K[a+24>>2]=0}}function hd(a){a=a|0;var b=0,c=0,d=0,e=0;b=K[a+24>>2];if(b){c=K[a+28>>2];e=(c>>>0)/68|0;if(c>>>0>=68){while(1){c=K[b>>2];if(c){Ga(c);K[b>>2]=0}c=K[b+4>>2];if(c){Ga(c);K[b+4>>2]=0}Ga(K[b+60>>2]);K[b+60>>2]=0;b=b+68|0;d=d+1|0;if((e|0)!=(d|0)){continue}break}b=K[a+24>>2]}Ga(b);K[a+24>>2]=0}}function md(a,b){a=a|0;b=b|0;var c=0,d=0;c=K[a+32>>2];b=K[a+28>>2];d=b+8|0;if(c>>>0>=d>>>0){while(1){rb(a,K[a+24>>2]+(b<<2)|0,K[a+20>>2],8);c=K[a+32>>2];b=d;d=b+8|0;if(c>>>0>=d>>>0){continue}break}}if(b>>>0>>0){rb(a,K[a+24>>2]+(b<<2)|0,K[a+20>>2],c-b|0)}Ga(K[a>>2]);Ga(a)}function fb(a,b,c){var d=0,e=0,f=0;a:{if(!b){d=a;e=b;break a}while(1){d=Ne(a,b,10,0);e=ua;a=Le(d,e,246)+a|0;c=c-1|0;I[c|0]=a|48;f=b>>>0>9;a=d;b=e;if(f){continue}break}}if(d|e){while(1){c=c-1|0;a=(d>>>0)/10|0;I[c|0]=Q(a,246)+d|48;b=d>>>0>9;d=a;if(b){continue}break}}return c}function Rd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ra-16|0;ra=e;a:{if(K[a+100>>2]){Fa(d,1,11265,0);a=0;break a}if((c|0)!=4){Fa(d,1,5954,0);a=0;break a}Ha(b,e+12|0,4);if(K[e+12>>2]!=218793738){Fa(d,1,4970,0);a=0;break a}K[a+100>>2]=K[a+100>>2]|1;a=1}ra=e+16|0;return a|0}function $a(a,b,c){var d=0,e=0;a:{d=K[a>>2];e=K[a+4>>2];b:{if((d|0)!=(e|0)){e=K[a+8>>2];break b}d=e+10|0;K[a+4>>2]=d;e=La(K[a+8>>2],d<<2);if(!e){break a}K[a+8>>2]=e;d=K[a>>2]}K[(d<<2)+e>>2]=b;K[a>>2]=d+1;return 1}Ga(K[a+8>>2]);K[a>>2]=0;K[a+4>>2]=0;Fa(c,1,6086,0);return 0}function Rc(a){var b=0,c=0,d=0;c=ra-16|0;ra=c;I[c+15|0]=10;b=K[a+16>>2];a:{if(!b){if(Nb(a)){break a}b=K[a+16>>2]}d=b;b=K[a+20>>2];if(!((d|0)==(b|0)|K[a+80>>2]==10)){K[a+20>>2]=b+1;I[b|0]=10;break a}if((va[K[a+36>>2]](a,c+15|0,1)|0)!=1){break a}}ra=c+16|0}function Ic(a){var b=0,c=0,d=0,e=0,f=0;d=K[a>>2];b=I[d|0]-48|0;if(b>>>0>9){return 0}while(1){e=-1;if(c>>>0<=214748364){c=Q(c,10);e=(c^2147483647)>>>0>>0?-1:c+b|0}b=d+1|0;K[a>>2]=b;f=I[d+1|0];c=e;d=b;b=f-48|0;if(b>>>0<10){continue}break}return c}function Fc(a,b){var c=0,d=0,e=0;A(+a);d=v(1)|0;e=v(0)|0;c=d>>>20&2047;if((c|0)!=2047){if(!c){if(a==0){c=0}else{a=Fc(a*0x10000000000000000,b);c=K[b>>2]+-64|0}K[b>>2]=c;return a}K[b>>2]=c-1022;x(0,e|0);x(1,d&-2146435073|1071644672);a=+z()}return a}function he(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=R(0),f=0,g=0;d=ra-16|0;ra=d;if(c){while(1){ad(a,d+12|0);e=O[d+12>>2];if(R(S(e))>2]=f;b=b+4|0;a=a+4|0;g=g+1|0;if((g|0)!=(c|0)){continue}break}}ra=d+16|0}function Ya(a){var b=0,c=0,d=0;if(a){b=K[a+24>>2];if(b){c=K[a+16>>2];if(c){b=0;while(1){d=K[(K[a+24>>2]+Q(b,52)|0)+44>>2];if(d){Ga(d);c=K[a+16>>2]}b=b+1|0;if(c>>>0>b>>>0){continue}break}b=K[a+24>>2]}Ga(b)}b=K[a+28>>2];if(b){Ga(b)}Ga(a)}}function ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=ra-16|0;ra=d;if(c){while(1){Zb(a,d+8|0);e=P[d+8>>3];if(S(e)<2147483647){f=~~e}else{f=-2147483648}K[b>>2]=f;b=b+4|0;a=a+8|0;g=g+1|0;if((g|0)!=(c|0)){continue}break}}ra=d+16|0}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=K[c+4>>2];e=K[c>>2]+K[c+8>>2]|0;if((d|0)==(e|0)){ua=-1;return-1}K[c+4>>2]=a+d;f=a;c=e-d|0;d=c;e=a>>>0>>0;a=c>>31;c=e&(a|0)>=(b|0)|(a|0)>(b|0);d=c?f:d;ua=c?b:a;return d|0}function Me(a,b,c,d){var e=0,f=0,g=0,h=0;f=b^d;g=f>>31;e=b>>31;a=a^e;h=a-e|0;e=(b^e)-((a>>>0>>0)+e|0)|0;a=d>>31;b=c^a;f=f>>31;a=Ne(h,e,b-a|0,(a^d)-((a>>>0>b>>>0)+a|0)|0)^f;b=a-f|0;ua=(g^ua)-((a>>>0>>0)+g|0)|0;return b}function _a(a){var b=0,c=0,d=0,e=0;if(a){b=K[a+20>>2];c=K[a+16>>2];if(Q(b,c)){while(1){e=K[K[a+24>>2]+(d<<2)>>2];if(e){Ga(e);c=K[a+16>>2];b=K[a+20>>2]}d=d+1|0;if(d>>>0>>0){continue}break}}Ga(K[a+24>>2]);Ga(a)}}function sc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;if(d){while(1){e=f<<2;g=e+a|0;h=c+e|0;i=K[h>>2];j=b+e|0;k=K[j>>2];e=K[g>>2]-(i+k>>2)|0;K[g>>2]=e+i;K[j>>2]=e;K[h>>2]=e+k;f=f+1|0;if((f|0)!=(d|0)){continue}break}}}function ib(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;K[a+48>>2]=0;K[a+36>>2]=K[a+32>>2];e=va[K[a+28>>2]](b,c,K[a>>2])|0;d=K[a+68>>2];if(!e){K[a+68>>2]=d|4;return 0}K[a+56>>2]=b;K[a+60>>2]=c;K[a+68>>2]=d&-5;return 1}function Ra(a,b,c,d,e){var f=0;f=ra-256|0;ra=f;if(!(e&73728|(c|0)<=(d|0))){d=c-d|0;c=d>>>0<256;Sc(f,b,c?d:256);if(!c){while(1){Pa(a,f,256);d=d-256|0;if(d>>>0>255){continue}break}}Pa(a,f,d)}ra=f+256|0}function Le(a,b,c){var d=0,e=0,f=0,g=0,h=0;e=c>>>16|0;d=a>>>16|0;h=Q(e,d);f=c&65535;a=a&65535;g=Q(f,a);d=(g>>>16|0)+Q(d,f)|0;a=(d&65535)+Q(a,e)|0;ua=h+Q(b,c)+(d>>>16)+(a>>>16)|0;return g&65535|a<<16}function Nb(a){var b=0;b=K[a+72>>2];K[a+72>>2]=b-1|b;b=K[a>>2];if(b&8){K[a>>2]=b|32;return-1}K[a+4>>2]=0;K[a+8>>2]=0;b=K[a+44>>2];K[a+28>>2]=b;K[a+20>>2]=b;K[a+16>>2]=b+K[a+48>>2];return 0}function xc(a){var b=0,c=0;a:{if(L[a+12|0]==255){K[a+12>>2]=65280;K[a+16>>2]=7;b=K[a+8>>2];c=0;if(b>>>0>=N[a+4>>2]){break a}K[a+8>>2]=b+1;K[a+12>>2]=L[b|0]|65280}K[a+16>>2]=0;c=1}return c}function Hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=K[c+4>>2];d=K[c>>2]+K[c+8>>2]|0;if((e|0)==(d|0)){return-1}d=d-e|0;b=b>>>0>d>>>0?d:b;if(b){E(a,e,b)}K[c+4>>2]=b+K[c+4>>2];return b|0}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=ra-16|0;ra=d;if(c){while(1){ad(a,d+12|0);O[b>>2]=O[d+12>>2];b=b+4|0;a=a+4|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}}ra=d+16|0}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=ra-16|0;ra=d;if(c){while(1){Zb(a,d+8|0);O[b>>2]=P[d+8>>3];b=b+4|0;a=a+8|0;e=e+1|0;if((e|0)!=(c|0)){continue}break}}ra=d+16|0}function nd(a,b){a=a|0;b=b|0;b=K[a+28>>2];if(b>>>0>2]){while(1){pc(a,K[a+24>>2]+(Q(K[a+20>>2],b)<<2)|0);b=b+1|0;if(b>>>0>2]){continue}break}}Ga(K[a>>2]);Ga(a)}function rd(a,b){a=a|0;b=+b;var c=0;ma(a|0,0)|0;a=(a|0)==2?27:(a|0)==1?26:14;a:{if(K[7158]>>>a-1&1){K[7190]=K[7190]|1<>2];if(c){va[c|0](a)}}}function Xc(a,b){a=a|0;b=b|0;var c=0,d=0;c=K[a>>2];d=K[b>>2];a=K[a+4>>2];b=K[b+4>>2];return(c>>>0>d>>>0&(a|0)>=(b|0)|(a|0)>(b|0))-(c>>>0>>0&(a|0)<=(b|0)|(a|0)<(b|0))|0}function zd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=ra-16|0;ra=e;a=Kb(ia(K[a+60>>2],b|0,c|0,d&255,e+8|0)|0);ra=e+16|0;ua=a?-1:K[e+12>>2];return(a?-1:K[e+8>>2])|0}function Cc(a,b,c,d){var e=0,f=0;e=ra-16|0;ra=e;if(c){while(1){Ha(a,e+12|0,d);O[b>>2]=N[e+12>>2];b=b+4|0;a=a+d|0;f=f+1|0;if((f|0)!=(c|0)){continue}break}}ra=e+16|0}function Bc(a,b,c,d){var e=0,f=0;e=ra-16|0;ra=e;if(c){while(1){Ha(a,e+12|0,d);K[b>>2]=K[e+12>>2];b=b+4|0;a=a+d|0;f=f+1|0;if((f|0)!=(c|0)){continue}break}}ra=e+16|0}function Zb(a,b){I[b+7|0]=L[a|0];I[b+6|0]=L[a+1|0];I[b+5|0]=L[a+2|0];I[b+4|0]=L[a+3|0];I[b+3|0]=L[a+4|0];I[b+2|0]=L[a+5|0];I[b+1|0]=L[a+6|0];I[b|0]=L[a+7|0]}function Xd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(c){Fa(d,2,10187,0);if(!Rb(K[a>>2],b,c,d,e)){Fa(d,1,6173,0);return 0}a=Uc(a,c,d)}else{a=0}return a|0}function Va(a){var b=0,c=0,d=0,e=0;b=K[a+12>>2];e=b;c=K[a+8>>2];if(!(b|c)){ua=0;return 0}d=K[a+56>>2];b=c-d|0;ua=e-(K[a+60>>2]+(c>>>0>>0)|0)|0;return b}function $d(a,b,c,d,e,f,g,h,i,j,k){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;return ab(K[a>>2],b,c,d,e,f,g,h,i,j,k)|0}function Ac(a,b){var c=0;c=ra-16|0;ra=c;if(a){if(b&3){a=28}else{a=mb(b,a);K[c+12>>2]=a;a=a?0:48}a=a?0:K[c+12>>2]}else{a=0}ra=c+16|0;return a}function id(a){a=a|0;var b=0;if(a){b=K[a+116>>2];if(b){Ga(b);K[a+116>>2]=0}b=K[a+120>>2];if(b){Ga(b);K[a+120>>2]=0}Ga(K[a+148>>2]);Ga(a)}} +function wb(a,b){var c=0,d=0;a:{if(b>>>0<=31){d=K[a>>2];c=a+4|0;break a}b=b-32|0;c=a}c=K[c>>2];K[a>>2]=d<>2]=c<>>32-b}function yb(a,b){var c=0,d=0;c=K[a+4>>2];a:{if(b>>>0<=31){d=K[a>>2];break a}b=b-32|0;d=c;c=0}K[a+4>>2]=c>>>b;K[a>>2]=c<<32-b|d>>>b}function fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(!c){return 0}if(!Tb(K[a>>2],b,c,d)){Fa(d,1,6173,0);return 0}return Uc(a,c,d)|0}function te(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(K[K[a+96>>2]+16>>2]<<2!=(c|0)){Fa(d,1,4427,0);a=0}else{a=1}return a|0}function zc(){var a=0,b=0;a=Ia(1,44);a:{if(a){K[a+16>>2]=0;b=Ia(1,8);K[a+36>>2]=b;if(b){break a}Ga(a)}a=0}return a}function dc(a,b){a=a|0;b=b|0;if(!(!a|!b)){K[a+188>>2]=K[b+4>>2];K[a+184>>2]=K[b>>2];K[a+248>>2]=K[b+8248>>2]&2}}function ub(){var a=0,b=0;a=Ia(1,12);if(a){K[a+4>>2]=10;b=Ia(10,4);K[a+8>>2]=b;if(b){return a}Ga(a)}return 0}function Yd(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return _b(K[a>>2],b,c,d,e,f,g)|0}function zb(a){var b=0;if(a){b=K[a+4>>2];if(b){va[b|0](K[a>>2])}Ga(K[a+32>>2]);K[a+32>>2]=0;Ga(a)}}function cc(a,b){a=a|0;b=b|0;a:{if(!a){break a}K[a+208>>2]=b;if(!b){break a}I[a+92|0]=L[a+92|0]|8}}function Ed(a,b,c){a=a|0;b=b|0;c=c|0;b=K[c+8>>2];K[c+4>>2]=K[c>>2]+(a>>>0>b>>>0?b:a);return 1}function _d(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return jb(K[a>>2],b,c,d,e,f)|0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(c){a=1}else{Fa(d,1,4338,0);a=0}return a|0}function ob(a){K[a>>2]=0;K[a+4>>2]=0;K[a+16>>2]=0;K[a+20>>2]=0;K[a+8>>2]=0;K[a+12>>2]=0}function ed(a,b,c){a=a|0;b=b|0;c=c|0;return!K[a+8>>2]&(K[a+216>>2]!=0&K[a+220>>2]!=0)}function Xa(a){if(K[a+12>>2]){K[a+40>>2]=0;while(1){if(K[a+24>>2]>0){continue}break}}}function ad(a,b){I[b+3|0]=L[a|0];I[b+2|0]=L[a+1|0];I[b+1|0]=L[a+2|0];I[b|0]=L[a+3|0]}function Cb(a){if(a){va[K[(K[a+76>>2]?20:16)+a>>2]](K[a+48>>2]);K[a+48>>2]=0;Ga(a)}}function ee(a,b){a=a|0;b=b|0;dc(K[a>>2],b);I[a+124|0]=0;K[a+128>>2]=K[b+8248>>2]&1}function Ia(a,b){if(!a|!b){a=0}else{b=Q(a,b);a=mb(8,b);if(a){Sc(a,0,b)}}return a}function Ka(a,b,c){var d=0;d=ra-16|0;ra=d;K[d+12>>2]=c;Kc(a,b,c,0,0);ra=d+16|0}function Pe(a){var b=0;while(1){if(a){a=a-1&a;b=b+1|0;continue}break}return b}function eb(a){var b=0;if(a){b=K[a+12>>2];if(b){Ga(b);K[a+12>>2]=0}Ga(a)}}function Zd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return $b(K[a>>2],b,c,d)|0}function Sa(a,b,c){a:{if(K[c+76>>2]<0){a=Mb(a,b,c);break a}a=Mb(a,b,c)}}function Nc(a,b){a=Lc(a-1|0);if(!a){a=Lc(b);a=a?a|32:0}return a}function ec(a){return K[a+12>>2]==K[a+4>>2]|K[a+8>>2]==K[a>>2]}function Sd(a,b,c){a=a|0;b=b|0;c=c|0;return $c(K[a>>2],b,c)|0}function tb(a){var b=0;if(a){b=K[a+8>>2];if(b){Ga(b)}Ga(a)}}function Lc(a){var b=0,c=0,d=0;return b=Ke(a),c=0,d=a,d?b:c}function vd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ua=0;return 0}function db(a,b,c,d,e,f,g,h){return qc(a,b,c,d,e,f,g,h,0)}function bb(a,b,c){K[((b<<2)+a|0)+28>>2]=(c<<5)+20784}function Pb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return 1}function Dc(a,b,c,d){return va[K[a+44>>2]](a,b,c,d)|0}function Wd(a,b,c){a=a|0;b=b|0;c=c|0;Xb(K[a>>2],b,c)}function vb(a,b,c){return va[K[a+40>>2]](a,b,0,c)|0}function re(a,b,c){a=a|0;b=b|0;c=c|0;ua=-1;return-1}function Ke(a){if(a){return 31-T(a-1^a)|0}return 32}function xd(a){a=a|0;return Kb(aa(K[a+60>>2])|0)|0}function Ua(a,b,c,d,e,f,g,h){qc(a,b,c,d,e,f,g,h,1)}function Kb(a){if(!a){return 0}K[6585]=a;return-1}function ne(a,b,c){a=a|0;b=b|0;c=c|0;Cc(a,b,c,2)}function me(a,b,c){a=a|0;b=b|0;c=c|0;Cc(a,b,c,4)}function je(a,b,c){a=a|0;b=b|0;c=c|0;Bc(a,b,c,2)}function ie(a,b,c){a=a|0;b=b|0;c=c|0;Bc(a,b,c,4)}function Pa(a,b,c){if(!(L[a|0]&32)){Mb(b,c,a)}}function Oe(a,b,c){Je(a,0,b,c);ua=ta;return sa}function bc(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;return-1}function Be(a,b,c){a=a|0;b=b|0;c=c|0;return 0}function Ne(a,b,c,d){a=Je(a,b,c,d);return a}function Ja(a){if(!a){return 0}return Ab(a)}function de(a,b){a=a|0;b=b|0;cc(K[a>>2],b)}function Sc(a,b,c){if(c){B(a,b<<24>>24,c)}}function yc(a){return K[a+8>>2]-K[a>>2]|0}function pd(a){a=a|0;ka();ja(a+128|0);G()}function Vd(a){a=a|0;return Ub(K[a>>2])|0}function Td(a){a=a|0;return Vb(K[a>>2])|0}function fd(a,b){a=a|0;b=b|0;return 0}function Ab(a){a=a|0;return mb(8,a)|0}function Bd(a,b){a=a|0;b=b|0;ca(a|0)}function Ib(a){return K[a+28>>2]!=2}function Ad(a,b){a=a|0;b=b|0;$(a|0)}function hb(a,b,c){if(c){E(a,b,c)}}function gb(a,b){return Xc(a,b)}function sb(a){return Ac(a,32)}function Ma(a){return Ac(a,16)}function wd(a){a=a|0;return 0}function qd(a){a=a|0;Ec();G()}function Bb(){return Ia(1,36)}function gc(a,b){a=a|0;b=b|0}function kb(a){if(a){Ga(a)}}function Ta(a){K[a>>2]=0}function od(){Ec();G()}function Ec(){la();G()} +// EMSCRIPTEN_END_FUNCS +e=L;p(q);var va=c([null,gc,Be,re,Yc,Yc,ib,Ud,Jd,Dd,nd,md,ld,kd,jd,id,hd,gd,bc,ed,dd,cd,bd,Xc,Ie,He,Ge,Fe,Ee,De,Ce,Ae,ze,ye,xe,we,ve,ue,te,Pb,se,qe,Pb,Pb,pe,oe,ne,me,le,ke,je,ie,he,ge,be,Rd,Qd,Pd,Od,Nd,Md,Ld,Kd,Id,Hd,Gd,Fd,Ed,Ub,Vb,Xb,bc,Tb,cc,dc,Eb,ac,fd,$b,$c,Rb,_b,jb,ab,Vd,Td,Wd,ce,fe,fd,Zd,Sd,Xd,Yd,de,ee,Tc,_d,$d,ae,gc,Bd,Ad,sd,ud,td,od,xd,yd,zd,wd,vd,pd,qd]);function wa(){return H.byteLength/65536|0}function Ba(Ca){Ca=Ca|0;var xa=wa()|0;var ya=xa+Ca|0;if(xa{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}wasmBinaryFile??=findWasmBinary();var result=instantiateSync(wasmBinaryFile,info);return receiveInstance(result[0])}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module["noExitRuntime"]||true;var __abort_js=()=>abort("");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();moduleRtn=Module; + + + return moduleRtn; +} +); +})(); +export default OpenJPEG; diff --git a/gulpfile.mjs b/gulpfile.mjs index 010efabde165f..e79b79a96f2f3 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -651,10 +651,17 @@ function createStandardFontBundle() { function createWasmBundle() { return ordered([ - gulp.src(["external/openjpeg/*.wasm", "external/openjpeg/LICENSE_*"], { - base: "external/openjpeg", - encoding: false, - }), + gulp.src( + [ + "external/openjpeg/*.wasm", + "external/openjpeg/openjpeg_nowasm_fallback.js", + "external/openjpeg/LICENSE_*", + ], + { + base: "external/openjpeg", + encoding: false, + } + ), ]); } diff --git a/src/core/jpx.js b/src/core/jpx.js index 94a4dc9879255..2414ed4f8cd05 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -31,18 +31,44 @@ class JpxImage { static #modulePromise = null; + static #hasJSFallback = false; + static #wasmUrl = null; static setOptions({ handler, wasmUrl }) { - if (!this.#buffer) { - this.#wasmUrl = wasmUrl || null; - if (wasmUrl === null) { - this.#handler = handler; - } + if (this.#buffer || this.#hasJSFallback || this.#modulePromise) { + return; + } + this.#wasmUrl = wasmUrl || null; + if (wasmUrl === null) { + this.#handler = handler; } } - static async #instantiateWasm(imports, successCallback) { + static async #getJsModule(fallbackCallback) { + if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { + this.#wasmUrl ??= "/build/generic/web/wasm/"; + } + const path = + typeof PDFJSDev === "undefined" + ? `../${this.#wasmUrl}openjpeg_nowasm_fallback.js` + : `${this.#wasmUrl}openjpeg_nowasm_fallback.js`; + + let instance = null; + try { + const mod = await (typeof PDFJSDev === "undefined" + ? import(path) // eslint-disable-line no-unsanitized/method + : __non_webpack_import__(path)); + instance = mod.default(); + } catch (e) { + warn(`JpxImage#getJsModule: ${e}`); + } + + this.#hasJSFallback = true; + fallbackCallback(instance); + } + + static async #instantiateWasm(fallbackCallback, imports, successCallback) { const filename = "openjpeg.wasm"; try { if (!this.#buffer) { @@ -57,9 +83,13 @@ class JpxImage { } const results = await WebAssembly.instantiate(this.#buffer, imports); return successCallback(results.instance); + } catch (reason) { + warn(`JpxImage#instantiateWasm: ${reason}`); + + this.#getJsModule(fallbackCallback); + return null; } finally { this.#handler = null; - this.#wasmUrl = null; } } @@ -67,12 +97,26 @@ class JpxImage { bytes, { numComponents = 4, isIndexedColormap = false, smaskInData = false } = {} ) { - this.#modulePromise ||= OpenJPEG({ - warn, - instantiateWasm: this.#instantiateWasm.bind(this), - }); - + if (!this.#modulePromise) { + const { promise, resolve } = Promise.withResolvers(); + const promises = [promise]; + if (this.#hasJSFallback) { + this.#getJsModule(resolve); + } else { + promises.push( + OpenJPEG({ + warn, + instantiateWasm: this.#instantiateWasm.bind(this, resolve), + }) + ); + } + this.#modulePromise = Promise.race(promises); + } const module = await this.#modulePromise; + + if (!module) { + throw new JpxError("OpenJPEG failed to initialize"); + } let ptr; try { diff --git a/test/driver.js b/test/driver.js index f9fbee52e8306..6e6ee5d97721e 100644 --- a/test/driver.js +++ b/test/driver.js @@ -638,7 +638,7 @@ class Driver { password: task.password, cMapUrl: CMAP_URL, standardFontDataUrl: STANDARD_FONT_DATA_URL, - wasmUrl: WASM_URL, + wasmUrl: task.noWasm ? null : WASM_URL, disableAutoFetch: !task.enableAutoFetch, pdfBug: true, useSystemFonts: task.useSystemFonts, diff --git a/test/test_manifest.json b/test/test_manifest.json index 60e5b0e5070cd..1101d1ad3f1c2 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -6418,6 +6418,14 @@ "rounds": 1, "type": "eq" }, + { + "id": "issue19326_nowasm", + "file": "pdfs/issue19326.pdf", + "md5": "b4d937017daf439a6318501428e0c6ba", + "noWasm": true, + "rounds": 1, + "type": "eq" + }, { "id": "issue19326_main_thread_fetch", "file": "pdfs/issue19326.pdf", From 6e08204c9904e087d201f38bb2e3398d92139ea4 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Fri, 21 Feb 2025 14:10:35 +0100 Subject: [PATCH 296/338] Disable the loading of node types in the type tests Those type tests are performing type checking on a project using DOM APIs, intended to reflect the usage in a non-node project. Not loading the node types in that project ensures that the library type declarations don't force a dependency on the node types. --- test/types/tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/types/tsconfig.json b/test/types/tsconfig.json index 772a382c71e4d..5cd8ef4507e20 100644 --- a/test/types/tsconfig.json +++ b/test/types/tsconfig.json @@ -10,7 +10,7 @@ "module": "ESNext", "baseUrl": "./", "strict": true, - "types": ["node"], + "types": [], "lib": ["ESNext", "DOM"], "paths": { "pdfjs-dist": ["../../build/typestest"], From a78dabca2bd32bb2e03362eee73723ee9449fac5 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 21 Feb 2025 23:20:44 +0100 Subject: [PATCH 297/338] [api-minor] Re-factor how the `useWorkerFetch` option is used internally With the recently added OpenJPEG no-wasm fallback we need to send the `wasmUrl` option to the worker-thread *regardless* of the value of the `useWorkerFetch` option, since the fallback won't work if we don't have a URL to `import` it from. For consistency the code is re-factored to always send the factory-urls to the worker-thread, and simply check the `useWorkerFetch` option there instead. Also, as a follow-up to PR 19525, introduce a new `useWasm` option that can be used in e.g. browser-tests to forcibly disable WebAssembly usage. --- src/core/evaluator.js | 6 ++++-- src/core/jpx.js | 24 ++++++++++++------------ src/display/api.js | 12 +++++++++--- test/driver.js | 3 ++- test/test_manifest.json | 4 ++-- 5 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 484e167c09978..2f9e6897e6dc3 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -90,6 +90,8 @@ const DefaultPartialEvaluatorOptions = Object.freeze({ canvasMaxAreaInBytes: -1, fontExtraProperties: false, useSystemFonts: true, + useWasm: true, + useWorkerFetch: true, cMapUrl: null, standardFontDataUrl: null, wasmUrl: null, @@ -384,7 +386,7 @@ class PartialEvaluator { } let data; - if (this.options.cMapUrl !== null) { + if (this.options.useWorkerFetch) { // Only compressed CMaps are (currently) supported here. data = { cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`), @@ -424,7 +426,7 @@ class PartialEvaluator { let data; try { - if (this.options.standardFontDataUrl !== null) { + if (this.options.useWorkerFetch) { data = await fetchBinaryData( `${this.options.standardFontDataUrl}${filename}` ); diff --git a/src/core/jpx.js b/src/core/jpx.js index 2414ed4f8cd05..f25fc7c7d4453 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -31,24 +31,26 @@ class JpxImage { static #modulePromise = null; - static #hasJSFallback = false; + static #useWasm = true; + + static #useWorkerFetch = true; static #wasmUrl = null; - static setOptions({ handler, wasmUrl }) { - if (this.#buffer || this.#hasJSFallback || this.#modulePromise) { + static setOptions({ handler, useWasm, useWorkerFetch, wasmUrl }) { + if (this.#buffer || this.#modulePromise) { return; } - this.#wasmUrl = wasmUrl || null; - if (wasmUrl === null) { + this.#useWasm = useWasm; + this.#useWorkerFetch = useWorkerFetch; + this.#wasmUrl = wasmUrl; + + if (!useWorkerFetch) { this.#handler = handler; } } static async #getJsModule(fallbackCallback) { - if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("TESTING")) { - this.#wasmUrl ??= "/build/generic/web/wasm/"; - } const path = typeof PDFJSDev === "undefined" ? `../${this.#wasmUrl}openjpeg_nowasm_fallback.js` @@ -63,8 +65,6 @@ class JpxImage { } catch (e) { warn(`JpxImage#getJsModule: ${e}`); } - - this.#hasJSFallback = true; fallbackCallback(instance); } @@ -72,7 +72,7 @@ class JpxImage { const filename = "openjpeg.wasm"; try { if (!this.#buffer) { - if (this.#wasmUrl !== null) { + if (this.#useWorkerFetch) { this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`); } else { this.#buffer = await this.#handler.sendWithPromise( @@ -100,7 +100,7 @@ class JpxImage { if (!this.#modulePromise) { const { promise, resolve } = Promise.withResolvers(); const promises = [promise]; - if (this.#hasJSFallback) { + if (!this.#useWasm) { this.#getJsModule(resolve); } else { promises.push( diff --git a/src/display/api.js b/src/display/api.js index 63b01b5e60e43..99ee4ba0615a2 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -144,6 +144,9 @@ const RENDERING_CANCELLED_TIMEOUT = 100; // ms * the `CMapReaderFactory`, `StandardFontDataFactory`, and `WasmFactory` * options are ignored. * The default value is `true` in web environments and `false` in Node.js. + * @property {boolean} [useWasm] - Attempt to use WebAssembly in order to + * improve e.g. image decoding performance. + * The default value is `true`. * @property {boolean} [stopAtErrors] - Reject certain promises, e.g. * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated * PDF data cannot be successfully parsed, instead of attempting to recover @@ -320,6 +323,7 @@ function getDocument(src = {}) { ? NodeFilterFactory : DOMFilterFactory); const enableHWA = src.enableHWA === true; + const useWasm = src.useWasm !== false; // Parameters whose default values depend on other parameters. const length = rangeTransport ? rangeTransport.length : (src.length ?? NaN); @@ -410,9 +414,11 @@ function getDocument(src = {}) { canvasMaxAreaInBytes, fontExtraProperties, useSystemFonts, - cMapUrl: useWorkerFetch ? cMapUrl : null, - standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null, - wasmUrl: useWorkerFetch ? wasmUrl : null, + useWasm, + useWorkerFetch, + cMapUrl, + standardFontDataUrl, + wasmUrl, }, }; const transportParams = { diff --git a/test/driver.js b/test/driver.js index 6e6ee5d97721e..c02c455cb9cd4 100644 --- a/test/driver.js +++ b/test/driver.js @@ -638,10 +638,11 @@ class Driver { password: task.password, cMapUrl: CMAP_URL, standardFontDataUrl: STANDARD_FONT_DATA_URL, - wasmUrl: task.noWasm ? null : WASM_URL, + wasmUrl: WASM_URL, disableAutoFetch: !task.enableAutoFetch, pdfBug: true, useSystemFonts: task.useSystemFonts, + useWasm: task.useWasm, useWorkerFetch: task.useWorkerFetch, enableXfa: task.enableXfa, isOffscreenCanvasSupported, diff --git a/test/test_manifest.json b/test/test_manifest.json index 1101d1ad3f1c2..8c9058adfb31a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -6422,9 +6422,9 @@ "id": "issue19326_nowasm", "file": "pdfs/issue19326.pdf", "md5": "b4d937017daf439a6318501428e0c6ba", - "noWasm": true, "rounds": 1, - "type": "eq" + "type": "eq", + "useWasm": false }, { "id": "issue19326_main_thread_fetch", From 59c04839cb124ba148f19468a8b4fd87290a55aa Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 22 Feb 2025 13:38:10 +0100 Subject: [PATCH 298/338] Simplify `JpxImage.setOptions` a little bit After PR 19392 we're only invoking this method *once* per document, hence the early-return branch shouldn't be necessary any more. --- src/core/jpx.js | 3 --- src/core/pdf_manager.js | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/core/jpx.js b/src/core/jpx.js index f25fc7c7d4453..8fd7c8b7f44a8 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -38,9 +38,6 @@ class JpxImage { static #wasmUrl = null; static setOptions({ handler, useWasm, useWorkerFetch, wasmUrl }) { - if (this.#buffer || this.#modulePromise) { - return; - } this.#useWasm = useWasm; this.#useWorkerFetch = useWorkerFetch; this.#wasmUrl = wasmUrl; diff --git a/src/core/pdf_manager.js b/src/core/pdf_manager.js index 3b277ea85bfc4..02c4e58b40f99 100644 --- a/src/core/pdf_manager.js +++ b/src/core/pdf_manager.js @@ -70,7 +70,7 @@ class BasePdfManager { FeatureTest.isImageDecoderSupported; this.evaluatorOptions = Object.freeze(evaluatorOptions); - // Initially image-options once per document. + // Initialize image-options once per document. ImageResizer.setOptions(evaluatorOptions); JpegStream.setOptions(evaluatorOptions); JpxImage.setOptions({ ...evaluatorOptions, handler }); From 3123612acbbc125584ca6209f9f619f5126cf668 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sat, 22 Feb 2025 15:19:10 +0100 Subject: [PATCH 299/338] [Editor] Fix the position in the page of a drawing after it has been moved with the keyboard When a drawing was moved with arrow keys and then printed or saved, the drawing wasn't moved finally. So the fix is just about calling onTranslated once the translation is done. --- src/display/editor/draw.js | 4 +- src/display/editor/editor.js | 4 ++ src/display/editor/tools.js | 3 ++ test/integration/freetext_editor_spec.mjs | 29 +-------------- test/integration/ink_editor_spec.mjs | 45 +++++++++++++++++++++++ test/integration/test_utils.mjs | 29 +++++++++++++++ 6 files changed, 84 insertions(+), 30 deletions(-) diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index 8e9e9641a22f3..e63240a7296fd 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -280,9 +280,9 @@ class DrawingEditor extends AnnotationEditor { } /** @inheritdoc */ - _onTranslating(x, y) { + _onTranslating(_x, _y) { this.parent?.drawLayer.updateProperties(this._drawId, { - bbox: this.#rotateBox(x, y), + bbox: this.#rotateBox(), }); } diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index 54703a4d08c5d..a9f03f8463fc7 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -476,6 +476,10 @@ class AnnotationEditor { this.div.scrollIntoView({ block: "nearest" }); } + translationDone() { + this._onTranslated(this.x, this.y); + } + drag(tx, ty) { this.#initialRect ||= [this.x, this.y, this.width, this.height]; const { diff --git a/src/display/editor/tools.js b/src/display/editor/tools.js index 06a50170013f1..01ff2050aecff 100644 --- a/src/display/editor/tools.js +++ b/src/display/editor/tools.js @@ -2264,6 +2264,7 @@ class AnnotationEditorUIManager { for (const editor of editors) { if (this.#allEditors.has(editor.id)) { editor.translateInPage(totalX, totalY); + editor.translationDone(); } } }, @@ -2271,6 +2272,7 @@ class AnnotationEditorUIManager { for (const editor of editors) { if (this.#allEditors.has(editor.id)) { editor.translateInPage(-totalX, -totalY); + editor.translationDone(); } } }, @@ -2280,6 +2282,7 @@ class AnnotationEditorUIManager { for (const editor of editors) { editor.translateInPage(x, y); + editor.translationDone(); } } diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index a14e107624506..404e24eb96ba5 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -40,6 +40,7 @@ import { kbSelectAll, kbUndo, loadAndWait, + moveEditor, paste, pasteFromClipboard, scrollIntoView, @@ -48,7 +49,6 @@ import { unselectEditor, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, - waitForEditorMovedInDOM, waitForSelectedEditor, waitForSerialized, waitForStorageEntries, @@ -79,33 +79,6 @@ const commit = async page => { const switchToFreeText = switchToEditor.bind(null, "FreeText"); -const getXY = async (page, selector) => { - const rect = await getRect(page, selector); - return `${rect.x}::${rect.y}`; -}; - -const waitForPositionChange = (page, selector, xy) => - page.waitForFunction( - (sel, currentXY) => { - const bbox = document.querySelector(sel).getBoundingClientRect(); - return `${bbox.x}::${bbox.y}` !== currentXY; - }, - {}, - selector, - xy - ); - -const moveEditor = async (page, selector, n, pressKey) => { - let xy = await getXY(page, selector); - for (let i = 0; i < n; i++) { - const handle = await waitForEditorMovedInDOM(page); - await pressKey(); - await awaitPromise(handle); - await waitForPositionChange(page, selector, xy); - xy = await getXY(page, selector); - } -}; - const cancelFocusIn = async (page, selector) => { page.evaluate(sel => { const el = document.querySelector(sel); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 4abc08a7b2835..2e927231f4d13 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -27,6 +27,7 @@ import { kbSelectAll, kbUndo, loadAndWait, + moveEditor, scrollIntoView, selectEditor, switchToEditor, @@ -142,6 +143,50 @@ describe("Ink Editor", () => { }) ); }); + + it("must draw and move with the keyboard", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await switchToInk(page); + + const rect = await getRect(page, ".annotationEditorLayer"); + + const x = rect.x + 100; + const y = rect.y + 100; + const clickHandle = await waitForPointerUp(page); + await page.mouse.move(x, y); + await page.mouse.down(); + await page.mouse.move(x + 50, y + 50); + await page.mouse.up(); + await awaitPromise(clickHandle); + + await commit(page); + + const editorSelector = getEditorSelector(0); + await page.waitForSelector(editorSelector); + const rectBefore = (await getSerialized(page, s => s.rect))[0]; + + const N = 20; + await moveEditor(page, editorSelector, N, () => + page.keyboard.press("ArrowDown") + ); + const rectAfter = (await getSerialized(page, s => s.rect))[0]; + + expect(Math.abs(rectBefore[0] - rectAfter[0])) + .withContext(`In ${browserName}`) + .toBeLessThan(1e-2); + expect(Math.abs(rectBefore[1] - N - rectAfter[1])) + .withContext(`In ${browserName}`) + .toBeLessThan(1e-2); + expect(Math.abs(rectBefore[2] - rectAfter[2])) + .withContext(`In ${browserName}`) + .toBeLessThan(1e-2); + expect(Math.abs(rectBefore[3] - N - rectAfter[3])) + .withContext(`In ${browserName}`) + .toBeLessThan(1e-2); + }) + ); + }); }); describe("with a rotated pdf", () => { diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 5d4396d305efe..b89d0feaef454 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -849,6 +849,34 @@ async function cleanupEditing(pages, switcher) { } } +async function getXY(page, selector) { + const rect = await getRect(page, selector); + return `${rect.x}::${rect.y}`; +} + +function waitForPositionChange(page, selector, xy) { + return page.waitForFunction( + (sel, currentXY) => { + const bbox = document.querySelector(sel).getBoundingClientRect(); + return `${bbox.x}::${bbox.y}` !== currentXY; + }, + {}, + selector, + xy + ); +} + +async function moveEditor(page, selector, n, pressKey) { + let xy = await getXY(page, selector); + for (let i = 0; i < n; i++) { + const handle = await waitForEditorMovedInDOM(page); + await pressKey(); + await awaitPromise(handle); + await waitForPositionChange(page, selector, xy); + xy = await getXY(page, selector); + } +} + export { applyFunctionToEditor, awaitPromise, @@ -893,6 +921,7 @@ export { kbUndo, loadAndWait, mockClipboard, + moveEditor, paste, pasteFromClipboard, scrollIntoView, From 4a2b756a398e61c25c3aa8ab80d75d730bd9c545 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:21:50 +0100 Subject: [PATCH 300/338] Update dependencies to the most recent versions --- package-lock.json | 370 ++++++++++++++++++++-------------------------- package.json | 22 +-- 2 files changed, 172 insertions(+), 220 deletions(-) diff --git a/package-lock.json b/package-lock.json index d92436f3cddc9..a9ac5548ff46e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,25 +7,25 @@ "name": "pdf.js", "license": "Apache-2.0", "devDependencies": { - "@babel/core": "^7.26.8", - "@babel/preset-env": "^7.26.8", - "@babel/runtime": "^7.26.7", + "@babel/core": "^7.26.9", + "@babel/preset-env": "^7.26.9", + "@babel/runtime": "^7.26.9", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.67", - "@types/node": "^22.13.1", + "@types/node": "^22.13.5", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001699", + "caniuse-lite": "^1.0.30001700", "core-js": "^3.40.0", - "eslint": "^9.20.0", + "eslint": "^9.21.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.8.0", + "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -43,13 +43,13 @@ "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.5.1", + "postcss": "^8.5.3", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.5.0", - "puppeteer": "^24.2.0", + "prettier": "^3.5.2", + "puppeteer": "^24.2.1", "stylelint": "^16.14.1", "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", @@ -58,7 +58,7 @@ "ttest": "^4.0.0", "typescript": "^5.7.3", "vinyl": "^3.0.0", - "webpack": "^5.97.1", + "webpack": "^5.98.0", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, @@ -127,23 +127,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", - "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", + "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/traverse": "^7.26.8", - "@babel/types": "^7.26.8", - "@types/gensync": "^1.0.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -168,14 +167,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -473,27 +472,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -927,13 +926,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1494,9 +1493,9 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.8.tgz", - "integrity": "sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1529,7 +1528,7 @@ "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", @@ -1601,9 +1600,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "dev": true, "license": "MIT", "dependencies": { @@ -1614,32 +1613,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1658,9 +1657,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -1775,13 +1774,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1790,9 +1789,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1803,9 +1802,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1860,9 +1859,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.21.0.tgz", + "integrity": "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==", "dev": true, "license": "MIT", "engines": { @@ -1870,9 +1869,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1880,13 +1879,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -1991,9 +1990,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2582,13 +2581,6 @@ "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", "dev": true }, - "node_modules/@types/gensync": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", - "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -2631,9 +2623,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", "dev": true, "license": "MIT", "dependencies": { @@ -2669,14 +2661,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.23.0.tgz", - "integrity": "sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.23.0", - "@typescript-eslint/visitor-keys": "8.23.0" + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2687,9 +2679,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.23.0.tgz", - "integrity": "sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", "dev": true, "license": "MIT", "engines": { @@ -2701,14 +2693,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.23.0.tgz", - "integrity": "sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.23.0", - "@typescript-eslint/visitor-keys": "8.23.0", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -2767,16 +2759,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.23.0.tgz", - "integrity": "sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.23.0", - "@typescript-eslint/types": "8.23.0", - "@typescript-eslint/typescript-estree": "8.23.0" + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2791,13 +2783,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.23.0.tgz", - "integrity": "sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==", + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.23.0", + "@typescript-eslint/types": "8.24.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3091,15 +3083,6 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -3879,9 +3862,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001700", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", + "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", "dev": true, "funding": [ { @@ -3984,9 +3967,9 @@ } }, "node_modules/chromium-bidi": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.2.0.tgz", - "integrity": "sha512-XtdJ1GSN6S3l7tO7F77GhNsw0K367p0IsLYf2yZawCVAKKC3lUvDhPdMVrB2FNhmhfW43QGYbEX3Wg6q0maGwQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-1.3.0.tgz", + "integrity": "sha512-G3x1bkST13kmbL7+dT/oRkNH/7C4UqG+0YQpmySrzXspyOhYgDNc6lhSGpj3cuexvH25WTENhTYq2Tt9JRXtbw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -5013,22 +4996,22 @@ } }, "node_modules/eslint": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.0.tgz", - "integrity": "sha512-aL4F8167Hg4IvsW89ejnpTwx+B/UQRzJPGgbIOl+4XqffWsahVVsLEWoZvnrVuwpWmnRd7XeXmQI1zlKcFDteA==", + "version": "9.21.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.21.0.tgz", + "integrity": "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.21.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -5234,14 +5217,14 @@ } }, "node_modules/eslint-plugin-perfectionist": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.8.0.tgz", - "integrity": "sha512-ZF04IAPGItYMlj9xjgvvl/QpksZf79g0dkxbNcuxDjbcUSZ4CwucJ7h5Yzt5JuHe+i6igQbUYEp40j4ndfbvWQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-perfectionist/-/eslint-plugin-perfectionist-4.9.0.tgz", + "integrity": "sha512-76lDfJnonOcXGW3bEXuqhEGId0LrOlvIE1yLHvK/eKMMPOc0b43KchAIR2Bdbqlg+LPXU5/Q+UzuzkO+cWHT6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "^8.23.0", - "@typescript-eslint/utils": "^8.23.0", + "@typescript-eslint/types": "^8.24.0", + "@typescript-eslint/utils": "^8.24.0", "natural-orderby": "^5.0.0" }, "engines": { @@ -5402,19 +5385,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9227,9 +9197,9 @@ } }, "node_modules/pac-proxy-agent": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz", - "integrity": "sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", "dev": true, "license": "MIT", "dependencies": { @@ -9557,9 +9527,9 @@ } }, "node_modules/postcss": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", - "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -9854,9 +9824,9 @@ } }, "node_modules/prettier": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz", - "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz", + "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==", "dev": true, "license": "MIT", "bin": { @@ -9979,18 +9949,18 @@ } }, "node_modules/puppeteer": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.2.0.tgz", - "integrity": "sha512-z8vv7zPEgrilIbOo3WNvM+2mXMnyM9f4z6zdrB88Fzeuo43Oupmjrzk3EpuvuCtyK0A7Lsllfx7Z+4BvEEGJcQ==", + "version": "24.2.1", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-24.2.1.tgz", + "integrity": "sha512-Euno62ou0cd0dTkOYTNioSOsFF4VpSnz4ldD38hi9ov9xCNtr8DbhmoJRUx+V9OuPgecueZbKOohRrnrhkbg3Q==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.7.1", - "chromium-bidi": "1.2.0", + "chromium-bidi": "1.3.0", "cosmiconfig": "^9.0.0", "devtools-protocol": "0.0.1402036", - "puppeteer-core": "24.2.0", + "puppeteer-core": "24.2.1", "typed-query-selector": "^2.12.0" }, "bin": { @@ -10001,14 +9971,14 @@ } }, "node_modules/puppeteer-core": { - "version": "24.2.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.2.0.tgz", - "integrity": "sha512-e4A4/xqWdd4kcE6QVHYhJ+Qlx/+XpgjP4d8OwBx0DJoY/nkIRhSgYmKQnv7+XSs1ofBstalt+XPGrkaz4FoXOQ==", + "version": "24.2.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.2.1.tgz", + "integrity": "sha512-bCypUh3WXzETafv1TCFAjIUnI8BiQ/d+XvEfEXDLcIMm9CAvROqnBmbt79yBjwasoDZsgfXnUmIJU7Y27AalVQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@puppeteer/browsers": "2.7.1", - "chromium-bidi": "1.2.0", + "chromium-bidi": "1.3.0", "debug": "^4.4.0", "devtools-protocol": "0.0.1402036", "typed-query-selector": "^2.12.0", @@ -10791,9 +10761,9 @@ } }, "node_modules/socks": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", - "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12680,9 +12650,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, "license": "MIT", "dependencies": { @@ -12704,9 +12674,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -12807,24 +12777,6 @@ "node": ">= 0.10" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -12973,9 +12925,9 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "license": "MIT", "engines": { @@ -13109,9 +13061,9 @@ } }, "node_modules/zod": { - "version": "3.24.1", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", - "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==", + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", "dev": true, "license": "MIT", "funding": { diff --git a/package.json b/package.json index 029b79f8a3249..7e6e44e919ad2 100644 --- a/package.json +++ b/package.json @@ -2,25 +2,25 @@ "name": "pdf.js", "type": "module", "devDependencies": { - "@babel/core": "^7.26.8", - "@babel/preset-env": "^7.26.8", - "@babel/runtime": "^7.26.7", + "@babel/core": "^7.26.9", + "@babel/preset-env": "^7.26.9", + "@babel/runtime": "^7.26.9", "@fluent/bundle": "^0.18.0", "@fluent/dom": "^0.10.0", "@metalsmith/layouts": "^2.7.0", "@metalsmith/markdown": "^1.10.0", "@napi-rs/canvas": "^0.1.67", - "@types/node": "^22.13.1", + "@types/node": "^22.13.5", "autoprefixer": "^10.4.20", "babel-loader": "^9.2.1", - "caniuse-lite": "^1.0.30001699", + "caniuse-lite": "^1.0.30001700", "core-js": "^3.40.0", - "eslint": "^9.20.0", + "eslint": "^9.21.0", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jasmine": "^4.2.2", "eslint-plugin-json": "^4.0.1", "eslint-plugin-no-unsanitized": "^4.1.2", - "eslint-plugin-perfectionist": "^4.8.0", + "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^56.0.1", "globals": "^15.14.0", @@ -38,13 +38,13 @@ "metalsmith-html-relative": "^2.0.6", "ordered-read-streams": "^2.0.0", "pngjs": "^7.0.0", - "postcss": "^8.5.1", + "postcss": "^8.5.3", "postcss-dark-theme-class": "^1.3.0", "postcss-dir-pseudo-class": "^9.0.1", "postcss-discard-comments": "^7.0.3", "postcss-nesting": "^13.0.1", - "prettier": "^3.5.0", - "puppeteer": "^24.2.0", + "prettier": "^3.5.2", + "puppeteer": "^24.2.1", "stylelint": "^16.14.1", "stylelint-prettier": "^5.0.3", "svglint": "^3.1.0", @@ -53,7 +53,7 @@ "ttest": "^4.0.0", "typescript": "^5.7.3", "vinyl": "^3.0.0", - "webpack": "^5.97.1", + "webpack": "^5.98.0", "webpack-stream": "^7.0.0", "yargs": "^17.7.2" }, From 5c7659a70df949bb71665878721234922350aa09 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:23:06 +0100 Subject: [PATCH 301/338] Upgrade `eslint-plugin-unicorn` to version 57.0.0 This is a major version bump, but the changelog at https://github.com/sindresorhus/eslint-plugin-unicorn/releases/tag/v57.0.0 doesn't indicate any breaking changes that should impact us. However, we do replace the deprecated `no-instanceof-array` rule with the new `no-instanceof-builtins` rule. Note that the changelog calls this rule `no-instanceof-builtin-object`, but it got renamed in https://github.com/sindresorhus/eslint-plugin-unicorn/pull/2537. --- eslint.config.mjs | 2 +- package-lock.json | 470 +++++++++++++++++++++------------------------- package.json | 2 +- 3 files changed, 220 insertions(+), 254 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 27893feeaaaaf..954b23a050989 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -127,7 +127,7 @@ export default [ "unicorn/no-abusive-eslint-disable": "error", "unicorn/no-array-push-push": "error", "unicorn/no-console-spaces": "error", - "unicorn/no-instanceof-array": "error", + "unicorn/no-instanceof-builtins": "error", "unicorn/no-invalid-remove-event-listener": "error", "unicorn/no-new-buffer": "error", "unicorn/no-single-promise-in-promise-methods": "error", diff --git a/package-lock.json b/package-lock.json index a9ac5548ff46e..860094e9f9b26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,7 @@ "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", - "eslint-plugin-unicorn": "^56.0.1", + "eslint-plugin-unicorn": "^57.0.0", "globals": "^15.14.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", @@ -1749,16 +1749,20 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } @@ -2513,19 +2517,6 @@ "node": ">=18" } }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2633,10 +2624,11 @@ } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/vinyl": { "version": "2.0.12", @@ -2745,19 +2737,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "8.24.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", @@ -3760,6 +3739,19 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "node_modules/builtin-modules": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-4.0.0.tgz", + "integrity": "sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cacheable": { "version": "1.8.7", "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.7.tgz", @@ -3981,9 +3973,9 @@ } }, "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true, "funding": [ { @@ -3991,6 +3983,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -5266,28 +5259,28 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "56.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", - "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", + "version": "57.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-57.0.0.tgz", + "integrity": "sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "@eslint-community/eslint-utils": "^4.4.0", - "ci-info": "^4.0.0", + "@babel/helper-validator-identifier": "^7.25.9", + "@eslint-community/eslint-utils": "^4.4.1", + "ci-info": "^4.1.0", "clean-regexp": "^1.0.0", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "esquery": "^1.6.0", - "globals": "^15.9.0", - "indent-string": "^4.0.0", - "is-builtin-module": "^3.2.1", - "jsesc": "^3.0.2", + "globals": "^15.15.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^4.0.0", + "jsesc": "^3.1.0", "pluralize": "^8.0.0", - "read-pkg-up": "^7.0.1", + "read-package-up": "^11.0.0", "regexp-tree": "^0.1.27", - "regjsparser": "^0.10.0", - "semver": "^7.6.3", - "strip-indent": "^3.0.0" + "regjsparser": "^0.12.0", + "semver": "^7.7.1", + "strip-indent": "^4.0.0" }, "engines": { "node": ">=18.18" @@ -5296,68 +5289,46 @@ "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" }, "peerDependencies": { - "eslint": ">=8.56.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "eslint": ">=9.20.0" } }, - "node_modules/eslint-plugin-unicorn/node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, "engines": { "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-unicorn/node_modules/regjsparser": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", - "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/eslint-plugin-unicorn/node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" }, "engines": { - "node": ">=10" + "node": ">=6" } }, "node_modules/eslint-scope": { @@ -5957,6 +5928,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-up-simple": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", + "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/findup-sync": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", @@ -6489,9 +6473,9 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { @@ -6948,10 +6932,24 @@ "license": "MIT" }, "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" }, "node_modules/html-tags": { "version": "3.3.1", @@ -7093,12 +7091,29 @@ } }, "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/index-to-position": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-0.1.2.tgz", + "integrity": "sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/inflight": { @@ -7245,6 +7260,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-builtin-module": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-4.0.0.tgz", + "integrity": "sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^4.0.0" + }, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -8942,15 +8973,18 @@ "license": "MIT" }, "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/normalize-range": { @@ -10041,117 +10075,62 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/read-package-up": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/read-package-up/-/read-package-up-11.0.0.tgz", + "integrity": "sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "find-up-simple": "^1.0.0", + "read-pkg": "^9.0.0", + "type-fest": "^4.6.0" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" + "node": ">=18" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.1.0.tgz", + "integrity": "sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "@babel/code-frame": "^7.22.13", + "index-to-position": "^0.1.2", + "type-fest": "^4.7.1" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", @@ -10195,33 +10174,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/redent/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/redent/node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -10634,12 +10586,16 @@ } }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver-greatest-satisfied-range": { @@ -11036,15 +10992,19 @@ } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, + "license": "MIT", "dependencies": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -11640,18 +11600,6 @@ "node": ">= 6" } }, - "node_modules/svglint/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/svglint/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", @@ -12117,12 +12065,16 @@ } }, "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "4.35.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.35.0.tgz", + "integrity": "sha512-2/AwEFQDFEy30iOLjrvHDIH7e4HEWH+f1Yl1bI5XMqzuoCUqwYCdxachgsgv0og/JdVZUhbfjcJAoHj5L1753A==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typed-array-buffer": { @@ -12357,6 +12309,19 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", @@ -12413,10 +12378,11 @@ } }, "node_modules/validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" diff --git a/package.json b/package.json index 7e6e44e919ad2..f5bd6c56b34c7 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "eslint-plugin-no-unsanitized": "^4.1.2", "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", - "eslint-plugin-unicorn": "^56.0.1", + "eslint-plugin-unicorn": "^57.0.0", "globals": "^15.14.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", From 582b790bb45840e7b74e299cf8a089aaad762d6d Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:24:24 +0100 Subject: [PATCH 302/338] Upgrade `globals` to version 16.0.0 This is a major version bump, but the changelog at https://github.com/sindresorhus/globals/releases/tag/v16.0.0 doesn't indicate any breaking changes that should impact us. --- package-lock.json | 21 +++++++++++++++++---- package.json | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 860094e9f9b26..a3ee44fab00c6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,7 @@ "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^57.0.0", - "globals": "^15.14.0", + "globals": "^16.0.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", @@ -5292,6 +5292,19 @@ "eslint": ">=9.20.0" } }, + "node_modules/eslint-plugin-unicorn/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-unicorn/node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -6473,9 +6486,9 @@ } }, "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index f5bd6c56b34c7..90f999ce15b91 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-unicorn": "^57.0.0", - "globals": "^15.14.0", + "globals": "^16.0.0", "gulp": "^5.0.0", "gulp-cli": "^3.0.0", "gulp-postcss": "^10.0.0", From 2bfe273eedc16d2962841289c17320467c0f85eb Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:25:36 +0100 Subject: [PATCH 303/338] Update translations to the most recent versions --- l10n/ach/viewer.ftl | 9 +++++ l10n/af/viewer.ftl | 9 +++++ l10n/an/viewer.ftl | 9 +++++ l10n/ar/viewer.ftl | 9 +++++ l10n/ast/viewer.ftl | 9 +++++ l10n/az/viewer.ftl | 9 +++++ l10n/be/viewer.ftl | 60 +++++++++++++++++++++++++++++++ l10n/bg/viewer.ftl | 9 +++++ l10n/bn/viewer.ftl | 9 +++++ l10n/bo/viewer.ftl | 9 +++++ l10n/br/viewer.ftl | 9 +++++ l10n/brx/viewer.ftl | 9 +++++ l10n/bs/viewer.ftl | 9 +++++ l10n/ca/viewer.ftl | 9 +++++ l10n/cak/viewer.ftl | 9 +++++ l10n/ckb/viewer.ftl | 9 +++++ l10n/cs/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/cy/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/da/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/de/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/dsb/viewer.ftl | 23 ++++++++++++ l10n/el/viewer.ftl | 25 +++++++++++++ l10n/en-CA/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/en-GB/viewer.ftl | 21 +++++++++++ l10n/eo/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/es-AR/viewer.ftl | 22 ++++++++++++ l10n/es-CL/viewer.ftl | 21 +++++++++++ l10n/es-ES/viewer.ftl | 9 +++++ l10n/es-MX/viewer.ftl | 9 +++++ l10n/et/viewer.ftl | 9 +++++ l10n/eu/viewer.ftl | 9 +++++ l10n/fa/viewer.ftl | 9 +++++ l10n/ff/viewer.ftl | 9 +++++ l10n/fi/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/fr/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/fur/viewer.ftl | 82 +++++++++++++++++++++++++++++++++++++++++++ l10n/fy-NL/viewer.ftl | 51 +++++++++++++++++++++++++++ l10n/ga-IE/viewer.ftl | 9 +++++ l10n/gd/viewer.ftl | 9 +++++ l10n/gl/viewer.ftl | 9 +++++ l10n/gn/viewer.ftl | 59 +++++++++++++++++++++++++++++++ l10n/gu-IN/viewer.ftl | 9 +++++ l10n/he/viewer.ftl | 26 ++++++++++++++ l10n/hi-IN/viewer.ftl | 9 +++++ l10n/hr/viewer.ftl | 9 +++++ l10n/hsb/viewer.ftl | 22 ++++++++++++ l10n/hu/viewer.ftl | 22 ++++++++++++ l10n/hy-AM/viewer.ftl | 9 +++++ l10n/hye/viewer.ftl | 9 +++++ l10n/ia/viewer.ftl | 21 +++++++++++ l10n/id/viewer.ftl | 9 +++++ l10n/is/viewer.ftl | 27 ++++++++++++-- l10n/it/viewer.ftl | 21 +++++++++++ l10n/ja/viewer.ftl | 57 ++++++++++++++++++++++++++++++ l10n/ka/viewer.ftl | 51 +++++++++++++++++++++++++++ l10n/kab/viewer.ftl | 9 +++++ l10n/kk/viewer.ftl | 53 ++++++++++++++++++++++++++++ l10n/km/viewer.ftl | 9 +++++ l10n/kn/viewer.ftl | 9 +++++ l10n/ko/viewer.ftl | 21 +++++++++++ l10n/lij/viewer.ftl | 9 +++++ l10n/lo/viewer.ftl | 9 +++++ l10n/lt/viewer.ftl | 9 +++++ l10n/ltg/viewer.ftl | 9 +++++ l10n/lv/viewer.ftl | 9 +++++ l10n/meh/viewer.ftl | 9 +++++ l10n/mk/viewer.ftl | 9 +++++ l10n/mr/viewer.ftl | 9 +++++ l10n/ms/viewer.ftl | 9 +++++ l10n/my/viewer.ftl | 9 +++++ l10n/nb-NO/viewer.ftl | 9 +++++ l10n/ne-NP/viewer.ftl | 9 +++++ l10n/nl/viewer.ftl | 51 +++++++++++++++++++++++++++ l10n/nn-NO/viewer.ftl | 15 ++++++++ l10n/oc/viewer.ftl | 9 +++++ l10n/pa-IN/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/pl/viewer.ftl | 9 +++++ l10n/pt-BR/viewer.ftl | 26 ++++++++++++-- l10n/pt-PT/viewer.ftl | 51 +++++++++++++++++++++++++++ l10n/rm/viewer.ftl | 27 ++++++++++++++ l10n/ro/viewer.ftl | 9 +++++ l10n/ru/viewer.ftl | 21 +++++++++++ l10n/sat/viewer.ftl | 9 +++++ l10n/sc/viewer.ftl | 9 +++++ l10n/scn/viewer.ftl | 9 +++++ l10n/sco/viewer.ftl | 9 +++++ l10n/si/viewer.ftl | 9 +++++ l10n/sk/viewer.ftl | 9 +++++ l10n/skr/viewer.ftl | 9 +++++ l10n/sl/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/son/viewer.ftl | 9 +++++ l10n/sq/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/sr/viewer.ftl | 9 +++++ l10n/sv-SE/viewer.ftl | 21 +++++++++++ l10n/szl/viewer.ftl | 9 +++++ l10n/ta/viewer.ftl | 9 +++++ l10n/te/viewer.ftl | 9 +++++ l10n/tg/viewer.ftl | 23 ++++++++++++ l10n/th/viewer.ftl | 51 +++++++++++++++++++++++++++ l10n/tl/viewer.ftl | 9 +++++ l10n/tr/viewer.ftl | 62 ++++++++++++++++++++++++++++++++ l10n/trs/viewer.ftl | 9 +++++ l10n/uk/viewer.ftl | 9 +++++ l10n/ur/viewer.ftl | 9 +++++ l10n/uz/viewer.ftl | 9 +++++ l10n/vi/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/wo/viewer.ftl | 9 +++++ l10n/xh/viewer.ftl | 9 +++++ l10n/zh-CN/viewer.ftl | 63 +++++++++++++++++++++++++++++++++ l10n/zh-TW/viewer.ftl | 21 +++++++++++ 110 files changed, 2471 insertions(+), 5 deletions(-) diff --git a/l10n/ach/viewer.ftl b/l10n/ach/viewer.ftl index 3f4cc554e563b..1b33bdfccf0ce 100644 --- a/l10n/ach/viewer.ftl +++ b/l10n/ach/viewer.ftl @@ -261,3 +261,12 @@ pdfjs-web-fonts-disabled = Kijuko dit pa coc me kakube woko: pe romo tic ki dit ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/af/viewer.ftl b/l10n/af/viewer.ftl index 111b02b794baa..d1f1a2bdf7dbe 100644 --- a/l10n/af/viewer.ftl +++ b/l10n/af/viewer.ftl @@ -248,3 +248,12 @@ pdfjs-web-fonts-disabled = Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingeb ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/an/viewer.ftl b/l10n/an/viewer.ftl index 06611750b408b..5b8592d30c2c0 100644 --- a/l10n/an/viewer.ftl +++ b/l10n/an/viewer.ftl @@ -293,3 +293,12 @@ pdfjs-web-fonts-disabled = As fuents web son desactivadas: no se puet incrustar ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ar/viewer.ftl b/l10n/ar/viewer.ftl index eb754ddaece4e..478824cfd20f6 100644 --- a/l10n/ar/viewer.ftl +++ b/l10n/ar/viewer.ftl @@ -582,3 +582,12 @@ pdfjs-editor-add-signature-error-close-button = أغلق pdfjs-editor-add-signature-cancel-button = ألغِ pdfjs-editor-add-signature-add-button = أضِف + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ast/viewer.ftl b/l10n/ast/viewer.ftl index b3e3ac6077097..f5c8e610f62d7 100644 --- a/l10n/ast/viewer.ftl +++ b/l10n/ast/viewer.ftl @@ -237,3 +237,12 @@ pdfjs-password-cancel-button = Encaboxar ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/az/viewer.ftl b/l10n/az/viewer.ftl index 1632acf815e6f..e74ef6bacd4c9 100644 --- a/l10n/az/viewer.ftl +++ b/l10n/az/viewer.ftl @@ -293,3 +293,12 @@ pdfjs-web-fonts-disabled = Web Şriftlər söndürülüb: yerləşdirilmiş PDF ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/be/viewer.ftl b/l10n/be/viewer.ftl index e3bca5be90b8d..5f8e06d421422 100644 --- a/l10n/be/viewer.ftl +++ b/l10n/be/viewer.ftl @@ -318,6 +318,9 @@ pdfjs-highlight-floating-button1 = .title = Падфарбаваць .aria-label = Падфарбаваць pdfjs-highlight-floating-button-label = Падфарбаваць +pdfjs-editor-signature-button = + .title = Дадаць подпіс +pdfjs-editor-signature-button-label = Дадаць подпіс ## Remove button for the various kind of editor. @@ -329,6 +332,8 @@ pdfjs-editor-remove-stamp-button = .title = Выдаліць выяву pdfjs-editor-remove-highlight-button = .title = Выдаліць падфарбоўку +pdfjs-editor-remove-signature-button = + .title = Выдаліць подпіс ## @@ -345,6 +350,9 @@ pdfjs-editor-stamp-add-image-button-label = Дадаць выяву pdfjs-editor-free-highlight-thickness-input = Таўшчыня pdfjs-editor-free-highlight-thickness-title = .title = Змяняць таўшчыню пры вылучэнні іншых элементаў, акрамя тэксту +pdfjs-editor-signature-add-signature-button = + .title = Дадаць новы подпіс +pdfjs-editor-signature-add-signature-button-label = Дадаць новы подпіс # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Тэкставы рэдактар @@ -502,6 +510,7 @@ pdfjs-editor-undo-bar-message-highlight = Падсвятленне выдале pdfjs-editor-undo-bar-message-freetext = Тэкст выдалены pdfjs-editor-undo-bar-message-ink = Малюнак выдалены pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены +pdfjs-editor-undo-bar-message-signature = Подпіс выдалены # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -519,18 +528,69 @@ pdfjs-editor-undo-bar-close-button-label = Закрыць ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Гэты рэжым дазваляе карыстальніку ствараць подпіс для дадання ў дакумент PDF. Карыстальнік можа рэдагаваць імя (якое таксама служыць альтэрнатыўным тэкстам) і пры жаданні захаваць подпіс для паўторнага выкарыстання. +pdfjs-editor-add-signature-dialog-title = Дадаць подпіс ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Увод + .title = Увод +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Маляваць + .title = Маляваць +pdfjs-editor-add-signature-image-button = Выява + .title = Выява ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Увядзіце свой подпіс + .placeholder = Увядзіце свой подпіс +pdfjs-editor-add-signature-draw-placeholder = Намалюйце свой подпіс +pdfjs-editor-add-signature-draw-thickness-range-label = Таўшчыня +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Таўшчыня малюнка: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Перацягнуць файл сюды, каб загрузіць +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Або праглядайце файлы малюнкаў + *[other] Або праглядайце файлы малюнкаў + } ## Controls +pdfjs-editor-add-signature-description-label = Апісанне (альтэрнатыўны тэкст) +pdfjs-editor-add-signature-description-input = + .title = Апісанне (альтэрнатыўны тэкст) +pdfjs-editor-add-signature-description-default-when-drawing = Подпіс +pdfjs-editor-add-signature-clear-button-label = Выдаліць подпіс +pdfjs-editor-add-signature-clear-button = + .title = Выдаліць подпіс +pdfjs-editor-add-signature-save-checkbox = Захаваць подпіс +pdfjs-editor-add-signature-save-warning-message = Вы дасягнулі ліміту ў 5 захаваных подпісаў. Выдаліце адзін, каб захаваць іншы. +pdfjs-editor-add-signature-image-upload-error-title = Не ўдалося загрузіць выяву +pdfjs-editor-add-signature-image-upload-error-description = Праверце падключэнне да сеткі ці паспрабуйце іншую выяву. pdfjs-editor-add-signature-error-close-button = Закрыць ## Dialog buttons pdfjs-editor-add-signature-cancel-button = Скасаваць pdfjs-editor-add-signature-add-button = Дадаць +pdfjs-editor-edit-signature-update-button = Абнавіць + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Выдаліць подпіс +pdfjs-editor-delete-signature-button-label = Выдаліць подпіс + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Рэдагаваць апісанне + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Рэдагаваць апісанне diff --git a/l10n/bg/viewer.ftl b/l10n/bg/viewer.ftl index 10649911edb89..bfc13e3502cef 100644 --- a/l10n/bg/viewer.ftl +++ b/l10n/bg/viewer.ftl @@ -433,3 +433,12 @@ pdfjs-editor-new-alt-text-not-now-button = Не сега ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/bn/viewer.ftl b/l10n/bn/viewer.ftl index 628b363389f62..4f9320c606673 100644 --- a/l10n/bn/viewer.ftl +++ b/l10n/bn/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = ওয়েব ফন্ট নিষ্ক্রিয় ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/bo/viewer.ftl b/l10n/bo/viewer.ftl index 6a0c482592533..fec5da03ce90f 100644 --- a/l10n/bo/viewer.ftl +++ b/l10n/bo/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/br/viewer.ftl b/l10n/br/viewer.ftl index d92015f123022..e8a6c3a642aaa 100644 --- a/l10n/br/viewer.ftl +++ b/l10n/br/viewer.ftl @@ -356,3 +356,12 @@ pdfjs-editor-alt-text-settings-close-button = Serriñ ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/brx/viewer.ftl b/l10n/brx/viewer.ftl index 8de66edbc3140..62ee75f1f704a 100644 --- a/l10n/brx/viewer.ftl +++ b/l10n/brx/viewer.ftl @@ -254,3 +254,12 @@ pdfjs-web-fonts-disabled = वेब फन्टखौ लोरबां ख ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/bs/viewer.ftl b/l10n/bs/viewer.ftl index 317c66a091e18..d57185efb2e65 100644 --- a/l10n/bs/viewer.ftl +++ b/l10n/bs/viewer.ftl @@ -259,3 +259,12 @@ pdfjs-web-fonts-disabled = Web fontovi su onemogućeni: nemoguće koristiti uba ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ca/viewer.ftl b/l10n/ca/viewer.ftl index 056a271398199..7a2746dc64227 100644 --- a/l10n/ca/viewer.ftl +++ b/l10n/ca/viewer.ftl @@ -329,3 +329,12 @@ pdfjs-ink-canvas = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/cak/viewer.ftl b/l10n/cak/viewer.ftl index a226e535b3f2b..e92b591d226e7 100644 --- a/l10n/cak/viewer.ftl +++ b/l10n/cak/viewer.ftl @@ -327,3 +327,12 @@ pdfjs-ink-canvas = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ckb/viewer.ftl b/l10n/ckb/viewer.ftl index a4d4ad16e37ce..b72eec213a625 100644 --- a/l10n/ckb/viewer.ftl +++ b/l10n/ckb/viewer.ftl @@ -278,3 +278,12 @@ pdfjs-web-fonts-disabled = جۆرەپیتی وێب ناچالاکە: نەتوا ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/cs/viewer.ftl b/l10n/cs/viewer.ftl index 0dfb21942f929..e01f099d2377d 100644 --- a/l10n/cs/viewer.ftl +++ b/l10n/cs/viewer.ftl @@ -320,6 +320,9 @@ pdfjs-highlight-floating-button1 = .title = Zvýraznit .aria-label = Zvýraznit pdfjs-highlight-floating-button-label = Zvýraznit +pdfjs-editor-signature-button = + .title = Přidat podpis +pdfjs-editor-signature-button-label = Přidat podpis ## Remove button for the various kind of editor. @@ -331,6 +334,8 @@ pdfjs-editor-remove-stamp-button = .title = Odebrat obrázek pdfjs-editor-remove-highlight-button = .title = Odebrat zvýraznění +pdfjs-editor-remove-signature-button = + .title = Odebrat podpis ## @@ -347,6 +352,9 @@ pdfjs-editor-stamp-add-image-button-label = Přidat obrázek pdfjs-editor-free-highlight-thickness-input = Tloušťka pdfjs-editor-free-highlight-thickness-title = .title = Změna tloušťky při zvýrazňování jiných položek než textu +pdfjs-editor-signature-add-signature-button = + .title = Přidat nový podpis +pdfjs-editor-signature-add-signature-button-label = Přidat nový podpis # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Textový editor @@ -504,6 +512,7 @@ pdfjs-editor-undo-bar-message-highlight = Zvýraznění odebráno pdfjs-editor-undo-bar-message-freetext = Text odstraněn pdfjs-editor-undo-bar-message-ink = Kresba odstraněna pdfjs-editor-undo-bar-message-stamp = Obrázek odebrán +pdfjs-editor-undo-bar-message-signature = Podpis odebrán # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -522,15 +531,69 @@ pdfjs-editor-undo-bar-close-button-label = Zavřít ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Tento způsob umožňuje uživateli vytvořit podpis, který se přidá do dokumentu PDF. Uživatel může upravit jméno (které slouží zároveň jako alternativní text) a podpis uložit pro pozdější použití. +pdfjs-editor-add-signature-dialog-title = Přidat podpis ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typ + .title = Typ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Kreslit + .title = Kreslit +pdfjs-editor-add-signature-image-button = Obrázek + .title = Obrázek ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Zadejte svůj podpis + .placeholder = Zadejte svůj podpis +pdfjs-editor-add-signature-draw-placeholder = Nakreslete svůj podpis +pdfjs-editor-add-signature-draw-thickness-range-label = Tloušťka +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Tloušťka kresby: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Pro nahrání přetáhněte soubor sem +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Nebo vyberte soubory s obrázky + *[other] Nebo vyberte soubory s obrázky + } ## Controls +pdfjs-editor-add-signature-description-label = Popis (alternativní text) +pdfjs-editor-add-signature-description-input = + .title = Popis (alternativní text) +pdfjs-editor-add-signature-description-default-when-drawing = Podpis +pdfjs-editor-add-signature-clear-button-label = Vymazání podpisu +pdfjs-editor-add-signature-clear-button = + .title = Vymazání podpisu +pdfjs-editor-add-signature-save-checkbox = Uložit podpis +pdfjs-editor-add-signature-save-warning-message = Dosáhli jste limitu 5 uložených podpisů. Odstraňte jeden a uložte další. +pdfjs-editor-add-signature-image-upload-error-title = Obrázek se nepodařilo nahrát +pdfjs-editor-add-signature-image-upload-error-description = Zkontrolujte připojení k síti nebo zkuste jiný obrázek. +pdfjs-editor-add-signature-error-close-button = Zavřít ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Zrušit +pdfjs-editor-add-signature-add-button = Přidat +pdfjs-editor-edit-signature-update-button = Aktualizovat + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Odebrat podpis +pdfjs-editor-delete-signature-button-label = Odebrat podpis + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Upravit popis + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Upravit popis diff --git a/l10n/cy/viewer.ftl b/l10n/cy/viewer.ftl index f65f66ad8fcb1..e855c4bbd067a 100644 --- a/l10n/cy/viewer.ftl +++ b/l10n/cy/viewer.ftl @@ -324,6 +324,9 @@ pdfjs-highlight-floating-button1 = .title = Amlygu .aria-label = Amlygu pdfjs-highlight-floating-button-label = Amlygu +pdfjs-editor-signature-button = + .title = Ychwanegu llofnod +pdfjs-editor-signature-button-label = Ychwanegu llofnod ## Remove button for the various kind of editor. @@ -335,6 +338,8 @@ pdfjs-editor-remove-stamp-button = .title = Dileu delwedd pdfjs-editor-remove-highlight-button = .title = Tynnu amlygiad +pdfjs-editor-remove-signature-button = + .title = Dileu llofnod ## @@ -351,6 +356,9 @@ pdfjs-editor-stamp-add-image-button-label = Ychwanegu delwedd pdfjs-editor-free-highlight-thickness-input = Trwch pdfjs-editor-free-highlight-thickness-title = .title = Newid trwch wrth amlygu eitemau heblaw testun +pdfjs-editor-signature-add-signature-button = + .title = Ychwanegu llofnod newydd +pdfjs-editor-signature-add-signature-button-label = Ychwanegu llofnod newydd # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Golygydd Testun @@ -508,6 +516,7 @@ pdfjs-editor-undo-bar-message-highlight = Tynnwyd yr amlygu pdfjs-editor-undo-bar-message-freetext = Tynnwyd y testun pdfjs-editor-undo-bar-message-ink = Tynnwyd y lluniad pdfjs-editor-undo-bar-message-stamp = Tynnwyd y ddelwedd +pdfjs-editor-undo-bar-message-signature = Llofnod wedi'i dynnu # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -528,15 +537,69 @@ pdfjs-editor-undo-bar-close-button-label = Cau ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Mae'r modd hwn yn caniatáu i'r defnyddiwr greu llofnod i'w ychwanegu at ddogfen PDF. Gall y defnyddiwr olygu'r enw (sydd hefyd yn gweithredu fel y testun amgen), ac yn ddewisol cadw'r llofnod i'w ddefnyddio dro ar ôl tro. +pdfjs-editor-add-signature-dialog-title = Ychwanegu llofnod ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Math + .title = Math +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Lluniadu + .title = Lluniadu +pdfjs-editor-add-signature-image-button = Delwedd + .title = Delwedd ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Teipiwch eich llofnod + .placeholder = Teipiwch eich llofnod +pdfjs-editor-add-signature-draw-placeholder = Lluniwch eich llofnod +pdfjs-editor-add-signature-draw-thickness-range-label = Trwch +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Trwch y llinell: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Llusgwch ffeil yma i'w llwytho +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Neu ddewis ffeiliau delwedd + *[other] Neu bori ffeiliau delwedd + } ## Controls +pdfjs-editor-add-signature-description-label = Disgrifiad (testun amgen) +pdfjs-editor-add-signature-description-input = + .title = Disgrifiad (testun amgen) +pdfjs-editor-add-signature-description-default-when-drawing = Llofnod +pdfjs-editor-add-signature-clear-button-label = Diddymu llofnod +pdfjs-editor-add-signature-clear-button = + .title = Diddymu llofnod +pdfjs-editor-add-signature-save-checkbox = Cadw llofnod +pdfjs-editor-add-signature-save-warning-message = Rydych chi wedi cyrraedd y terfyn o 5 llofnod sydd wedi'u cadw. Tynnwch un i gadw rhagor +pdfjs-editor-add-signature-image-upload-error-title = Methu llwytho'r ddelwedd. +pdfjs-editor-add-signature-image-upload-error-description = Gwiriwch eich cysylltiad rhwydwaith neu rhowch gynnig ar ddelwedd arall. +pdfjs-editor-add-signature-error-close-button = Cau ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Diddymu +pdfjs-editor-add-signature-add-button = Ychwanegu +pdfjs-editor-edit-signature-update-button = Diweddaru + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Dileu llofnod +pdfjs-editor-delete-signature-button-label = Dileu llofnod + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Golygu disgrifiad + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Golygu disgrifiad diff --git a/l10n/da/viewer.ftl b/l10n/da/viewer.ftl index faa971573ebab..9b71b4131b084 100644 --- a/l10n/da/viewer.ftl +++ b/l10n/da/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Fremhæv .aria-label = Fremhæv pdfjs-highlight-floating-button-label = Fremhæv +pdfjs-editor-signature-button = + .title = Tilføj underskrift +pdfjs-editor-signature-button-label = Tilføj underskrift ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Fjern billede pdfjs-editor-remove-highlight-button = .title = Fjern fremhævning +pdfjs-editor-remove-signature-button = + .title = Fjern underskrift ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Tilføj billede pdfjs-editor-free-highlight-thickness-input = Tykkelse pdfjs-editor-free-highlight-thickness-title = .title = Ændr tykkelse, når andre elementer end tekst fremhæves +pdfjs-editor-signature-add-signature-button = + .title = Tilføj ny underskrift +pdfjs-editor-signature-add-signature-button-label = Tilføj ny underskrift # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Teksteditor @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Fremhævning fjernet pdfjs-editor-undo-bar-message-freetext = Tekst fjernet pdfjs-editor-undo-bar-message-ink = Tegning fjernet pdfjs-editor-undo-bar-message-stamp = Billede fjernet +pdfjs-editor-undo-bar-message-signature = Underskrift fjernet # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = Luk ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Modal-vinduet gør det muligt for brugeren at oprette en underskrift, som kan føjes til PDF-dokumenter. Brugeren kan redigere navnet (der også fungerer som alternativ tekst) og eventuelt gemme signaturen, så den kan bruges igen. +pdfjs-editor-add-signature-dialog-title = Tilføj en underskrift ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Indtast + .title = Indtast +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Tegn + .title = Tegn +pdfjs-editor-add-signature-image-button = Billede + .title = Billede ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Indtast din underskrift + .placeholder = Indtast din underskrift +pdfjs-editor-add-signature-draw-placeholder = Tegn din underskrift +pdfjs-editor-add-signature-draw-thickness-range-label = Tykkelse +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Linjetykkelse: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Træk en fil herhen for at uploade den +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Eller vælg billedfiler + *[other] Eller vælg billedfiler + } ## Controls +pdfjs-editor-add-signature-description-label = Beskrivelse (alternativ tekst) +pdfjs-editor-add-signature-description-input = + .title = Beskrivelse (alternativ tekst) +pdfjs-editor-add-signature-description-default-when-drawing = Underskrift +pdfjs-editor-add-signature-clear-button-label = Ryd underskrift +pdfjs-editor-add-signature-clear-button = + .title = Ryd underskrift +pdfjs-editor-add-signature-save-checkbox = Gem underskrift +pdfjs-editor-add-signature-save-warning-message = Du har nået grænsen på 5 gemte underskrifter. Fjern en for at tilføje en ny. +pdfjs-editor-add-signature-image-upload-error-title = Kunne ikke uploade billede +pdfjs-editor-add-signature-image-upload-error-description = Kontroller din netværksforbindelse eller prøv med et andet billede. +pdfjs-editor-add-signature-error-close-button = Luk ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Annuller +pdfjs-editor-add-signature-add-button = Tilføj +pdfjs-editor-edit-signature-update-button = Opdater + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Fjern underskrift +pdfjs-editor-delete-signature-button-label = Fjern underskrift + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Rediger beskrivelse + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Rediger beskrivelse diff --git a/l10n/de/viewer.ftl b/l10n/de/viewer.ftl index cda899c0fcb13..f64e95dc730fb 100644 --- a/l10n/de/viewer.ftl +++ b/l10n/de/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Hervorheben .aria-label = Hervorheben pdfjs-highlight-floating-button-label = Hervorheben +pdfjs-editor-signature-button = + .title = Unterschrift hinzufügen +pdfjs-editor-signature-button-label = Unterschrift hinzufügen ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Grafik entfernen pdfjs-editor-remove-highlight-button = .title = Hervorhebung entfernen +pdfjs-editor-remove-signature-button = + .title = Unterschrift entfernen ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Grafik hinzufügen pdfjs-editor-free-highlight-thickness-input = Linienstärke pdfjs-editor-free-highlight-thickness-title = .title = Linienstärke beim Hervorheben anderer Elemente als Text ändern +pdfjs-editor-signature-add-signature-button = + .title = Neue Unterschrift hinzufügen +pdfjs-editor-signature-add-signature-button-label = Neue Unterschrift hinzufügen # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Texteditor @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Hervorhebung entfernt pdfjs-editor-undo-bar-message-freetext = Text entfernt pdfjs-editor-undo-bar-message-ink = Zeichnung entfernt pdfjs-editor-undo-bar-message-stamp = Grafik entfernt +pdfjs-editor-undo-bar-message-signature = Unterschrift entfernt # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = Schließen ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Dieses Modal ermöglicht es dem Benutzer, eine Unterschrift zu erstellen, um sie zu einem PDF-Dokument hinzuzufügen. Der Benutzer kann den Namen bearbeiten (der auch als Alt-Text dient) und optional die Unterschrift zur wiederholten Verwendung speichern. +pdfjs-editor-add-signature-dialog-title = Unterschrift hinzufügen ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Eintippen + .title = Eintippen +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Zeichnen + .title = Zeichnen +pdfjs-editor-add-signature-image-button = Grafik + .title = Grafik ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Tippen Sie Ihre Unterschrift ein + .placeholder = Tippen Sie Ihre Unterschrift ein +pdfjs-editor-add-signature-draw-placeholder = Ihre Unterschrift zeichnen +pdfjs-editor-add-signature-draw-thickness-range-label = Linienstärke +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Zeichnungsstärke: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Datei zum Hochladen hierher ziehen +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Oder Grafikdateien wählen + *[other] Oder Bilddateien durchsuchen + } ## Controls +pdfjs-editor-add-signature-description-label = Beschreibung (alternativer Text) +pdfjs-editor-add-signature-description-input = + .title = Beschreibung (alternativer Text) +pdfjs-editor-add-signature-description-default-when-drawing = Unterschrift +pdfjs-editor-add-signature-clear-button-label = Unterschrift löschen +pdfjs-editor-add-signature-clear-button = + .title = Unterschrift löschen +pdfjs-editor-add-signature-save-checkbox = Unterschrift speichern +pdfjs-editor-add-signature-save-warning-message = Sie haben die Grenze von 5 gespeicherten Unterschriften erreicht. Entfernen Sie eine, um weitere zu speichern. +pdfjs-editor-add-signature-image-upload-error-title = Grafik konnte nicht hochgeladen werden +pdfjs-editor-add-signature-image-upload-error-description = Überprüfen Sie Ihre Netzwerkverbindung, oder versuchen Sie es mit einer anderen Grafik. +pdfjs-editor-add-signature-error-close-button = Schließen ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Abbrechen +pdfjs-editor-add-signature-add-button = Hinzufügen +pdfjs-editor-edit-signature-update-button = Aktualisieren + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Unterschrift entfernen +pdfjs-editor-delete-signature-button-label = Unterschrift entfernen + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Beschreibung bearbeiten + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Beschreibung bearbeiten diff --git a/l10n/dsb/viewer.ftl b/l10n/dsb/viewer.ftl index 2e140a38c05c0..4c0b72ed0cbc2 100644 --- a/l10n/dsb/viewer.ftl +++ b/l10n/dsb/viewer.ftl @@ -320,6 +320,9 @@ pdfjs-highlight-floating-button1 = .title = Wuzwignuś .aria-label = Wuzwignuś pdfjs-highlight-floating-button-label = Wuzwignuś +pdfjs-editor-signature-button = + .title = Signaturu pśidaś +pdfjs-editor-signature-button-label = Signaturu pśidaś ## Remove button for the various kind of editor. @@ -349,6 +352,9 @@ pdfjs-editor-stamp-add-image-button-label = Wobraz pśidaś pdfjs-editor-free-highlight-thickness-input = Tłustosć pdfjs-editor-free-highlight-thickness-title = .title = Tłustosć změniś, gaž se zapiski wuzwiguju, kótarež tekst njejsu +pdfjs-editor-signature-add-signature-button = + .title = Nowu signaturu pśidaś +pdfjs-editor-signature-add-signature-button-label = Nowu signaturu pśidaś # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Tekstowy editor @@ -525,6 +531,7 @@ pdfjs-editor-undo-bar-close-button-label = Zacyniś ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Toś ten modalny dialog wužywarjeju zmóžnja, signaturu napóraś, aby PDF-dokument pśidał. Wužywaŕ móžo mě wobźěłaś (kótarež teke ako alternatiwny tekst słužy) a pó žycenju signaturu za wóspjetne wužywanje składowaś. pdfjs-editor-add-signature-dialog-title = Signaturu pśidaś ## Tab names @@ -566,6 +573,7 @@ pdfjs-editor-add-signature-clear-button-label = Signaturu lašowaś pdfjs-editor-add-signature-clear-button = .title = Signaturu lašowaś pdfjs-editor-add-signature-save-checkbox = Signaturu składowaś +pdfjs-editor-add-signature-save-warning-message = Sćo dojśpił limit 5 skłaźonych signaturow. Wótwónoźćo jadnu, aby wěcej składował. pdfjs-editor-add-signature-image-upload-error-title = Wobraz njedajo se nagraś pdfjs-editor-add-signature-image-upload-error-description = Pśeglědajśo swój seśowy zwisk abo wopytajśo drugi wobraz. pdfjs-editor-add-signature-error-close-button = Zacyniś @@ -574,3 +582,18 @@ pdfjs-editor-add-signature-error-close-button = Zacyniś pdfjs-editor-add-signature-cancel-button = Pśetergnuś pdfjs-editor-add-signature-add-button = Pśidaś +pdfjs-editor-edit-signature-update-button = Aktualizěrowaś + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Signaturu wótwónoźeś +pdfjs-editor-delete-signature-button-label = Signaturu wótwónoźeś + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Wopisanje wobźěłaś + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Wopisanje wobźěłaś diff --git a/l10n/el/viewer.ftl b/l10n/el/viewer.ftl index fe3dc3de58925..d68da090bb9f5 100644 --- a/l10n/el/viewer.ftl +++ b/l10n/el/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Επισήμανση .aria-label = Επισήμανση pdfjs-highlight-floating-button-label = Επισήμανση +pdfjs-editor-signature-button = + .title = Προσθήκη υπογραφής +pdfjs-editor-signature-button-label = Προσθήκη υπογραφής ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Προσθήκη εικόνας pdfjs-editor-free-highlight-thickness-input = Πάχος pdfjs-editor-free-highlight-thickness-title = .title = Αλλαγή πάχους κατά την επισήμανση στοιχείων εκτός κειμένου +pdfjs-editor-signature-add-signature-button = + .title = Προσθήκη νέας υπογραφής +pdfjs-editor-signature-add-signature-button-label = Προσθήκη νέας υπογραφής # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Επεξεργασία κειμένου @@ -519,6 +525,7 @@ pdfjs-editor-undo-bar-close-button-label = Κλείσιμο ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Αυτό το παράθυρο διαλόγου επιτρέπει στον χρήστη να δημιουργήσει μια υπογραφή για να την προσθέσει σε ένα έγγραφο PDF. Ο χρήστης μπορεί να επεξεργαστεί το όνομα (το οποίο χρησιμεύει και ως εναλλακτικό κείμενο) και, προαιρετικά, να αποθηκεύσει την υπογραφή για επαναλαμβανόμενη χρήση. pdfjs-editor-add-signature-dialog-title = Προσθήκη υπογραφής ## Tab names @@ -560,9 +567,27 @@ pdfjs-editor-add-signature-clear-button-label = Απαλοιφή υπογραφ pdfjs-editor-add-signature-clear-button = .title = Απαλοιφή υπογραφής pdfjs-editor-add-signature-save-checkbox = Αποθήκευση υπογραφής +pdfjs-editor-add-signature-save-warning-message = Έχετε φτάσει το όριο των 5 αποθηκευμένων υπογραφών. Αφαιρέστε μία για να αποθηκεύσετε περισσότερες. +pdfjs-editor-add-signature-image-upload-error-title = Δεν ήταν δυνατή η μεταφόρτωση της εικόνας +pdfjs-editor-add-signature-image-upload-error-description = Ελέγξτε τη σύνδεση δικτύου σας ή δοκιμάστε μια άλλη εικόνα. pdfjs-editor-add-signature-error-close-button = Κλείσιμο ## Dialog buttons pdfjs-editor-add-signature-cancel-button = Ακύρωση pdfjs-editor-add-signature-add-button = Προσθήκη +pdfjs-editor-edit-signature-update-button = Ενημέρωση + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Αφαίρεση υπογραφής +pdfjs-editor-delete-signature-button-label = Αφαίρεση υπογραφής + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Επεξεργασία περιγραφής + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Επεξεργασία περιγραφής diff --git a/l10n/en-CA/viewer.ftl b/l10n/en-CA/viewer.ftl index 2338fb498e7c8..b2fc2a1f7699e 100644 --- a/l10n/en-CA/viewer.ftl +++ b/l10n/en-CA/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Highlight .aria-label = Highlight pdfjs-highlight-floating-button-label = Highlight +pdfjs-editor-signature-button = + .title = Add signature +pdfjs-editor-signature-button-label = Add signature ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Remove image pdfjs-editor-remove-highlight-button = .title = Remove highlight +pdfjs-editor-remove-signature-button = + .title = Remove signature ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Add image pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-title = .title = Change thickness when highlighting items other than text +pdfjs-editor-signature-add-signature-button = + .title = Add new signature +pdfjs-editor-signature-add-signature-button-label = Add new signature # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Text Editor @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Highlight removed pdfjs-editor-undo-bar-message-freetext = Text removed pdfjs-editor-undo-bar-message-ink = Drawing removed pdfjs-editor-undo-bar-message-stamp = Image removed +pdfjs-editor-undo-bar-message-signature = Signature removed # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = Close ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use. +pdfjs-editor-add-signature-dialog-title = Add a signature ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Type + .title = Type +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Draw + .title = Draw +pdfjs-editor-add-signature-image-button = Image + .title = Image ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Type your signature + .placeholder = Type your signature +pdfjs-editor-add-signature-draw-placeholder = Draw your signature +pdfjs-editor-add-signature-draw-thickness-range-label = Thickness +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Drawing thickness: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Or choose image files + *[other] Or browse image files + } ## Controls +pdfjs-editor-add-signature-description-label = Description (alt text) +pdfjs-editor-add-signature-description-input = + .title = Description (alt text) +pdfjs-editor-add-signature-description-default-when-drawing = Signature +pdfjs-editor-add-signature-clear-button-label = Clear signature +pdfjs-editor-add-signature-clear-button = + .title = Clear signature +pdfjs-editor-add-signature-save-checkbox = Save signature +pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more. +pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image +pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image. +pdfjs-editor-add-signature-error-close-button = Close ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Cancel +pdfjs-editor-add-signature-add-button = Add +pdfjs-editor-edit-signature-update-button = Update + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Remove signature +pdfjs-editor-delete-signature-button-label = Remove signature + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Edit description + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Edit description diff --git a/l10n/en-GB/viewer.ftl b/l10n/en-GB/viewer.ftl index f2586e1071cb6..08e16ca688bec 100644 --- a/l10n/en-GB/viewer.ftl +++ b/l10n/en-GB/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Highlight .aria-label = Highlight pdfjs-highlight-floating-button-label = Highlight +pdfjs-editor-signature-button = + .title = Add signature +pdfjs-editor-signature-button-label = Add signature ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Add image pdfjs-editor-free-highlight-thickness-input = Thickness pdfjs-editor-free-highlight-thickness-title = .title = Change thickness when highlighting items other than text +pdfjs-editor-signature-add-signature-button = + .title = Add new signature +pdfjs-editor-signature-add-signature-button-label = Add new signature # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Text Editor @@ -570,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Close pdfjs-editor-add-signature-cancel-button = Cancel pdfjs-editor-add-signature-add-button = Add +pdfjs-editor-edit-signature-update-button = Update + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Remove signature +pdfjs-editor-delete-signature-button-label = Remove signature + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Edit description + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Edit description diff --git a/l10n/eo/viewer.ftl b/l10n/eo/viewer.ftl index beb7e81763c75..b43027a8b59f6 100644 --- a/l10n/eo/viewer.ftl +++ b/l10n/eo/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Elstarigi .aria-label = Elstarigi pdfjs-highlight-floating-button-label = Elstarigi +pdfjs-editor-signature-button = + .title = Aldoni subskribon +pdfjs-editor-signature-button-label = Aldoni subskribon ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Forigi bildon pdfjs-editor-remove-highlight-button = .title = Forigi elstaraĵon +pdfjs-editor-remove-signature-button = + .title = Forigi subskribon ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Aldoni bildon pdfjs-editor-free-highlight-thickness-input = Dikeco pdfjs-editor-free-highlight-thickness-title = .title = Ŝanĝi dikecon dum elstarigo de netekstaj elementoj +pdfjs-editor-signature-add-signature-button = + .title = Aldoni novan subskribon +pdfjs-editor-signature-add-signature-button-label = Aldoni novan subskribon # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Teksta redaktilo @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Elstaraĵo forigita pdfjs-editor-undo-bar-message-freetext = Teksto forigita pdfjs-editor-undo-bar-message-ink = Desegno forigita pdfjs-editor-undo-bar-message-stamp = Bildo forigita +pdfjs-editor-undo-bar-message-signature = Subskribo forigita # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = Fermi ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Tiu ĉi fenestro permesas al la uzanto krei subskribon por aldoni al dokumento PDF. La uzanto povas modifi la nomon (kiu estas cetere la alternativa teksto) kaj havas la eblon konservi la subskribon por posta uzo. +pdfjs-editor-add-signature-dialog-title = Aldoni subskribon ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Tajpi + .title = Tajpi +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Desegni + .title = Desegni +pdfjs-editor-add-signature-image-button = Bildo + .title = Bildo ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Tajpu vian subskribon + .placeholder = Tajpu vian subskribon +pdfjs-editor-add-signature-draw-placeholder = Desegni vian subskribon +pdfjs-editor-add-signature-draw-thickness-range-label = Dikeco +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Dikeco de desegno: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Trenu dosieron ĉi tien por alŝuti ĝin +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Aŭ elektu bildan dosieron + *[other] Aŭ elektu bildan dosieron + } ## Controls +pdfjs-editor-add-signature-description-label = Priskribo (alternativa teksto) +pdfjs-editor-add-signature-description-input = + .title = Priskribo (alternativa teksto) +pdfjs-editor-add-signature-description-default-when-drawing = Subskribo +pdfjs-editor-add-signature-clear-button-label = Viŝi subskribon +pdfjs-editor-add-signature-clear-button = + .title = Viŝi subskribon +pdfjs-editor-add-signature-save-checkbox = Konservi subskribon +pdfjs-editor-add-signature-save-warning-message = Vi atingis la limon de kvin konservitaj subskriboj. Forigi unu por povi konservi pli da. +pdfjs-editor-add-signature-image-upload-error-title = Ne eblis alŝuti bildon +pdfjs-editor-add-signature-image-upload-error-description = Kontrolu vian retaliron aŭ provu alŝuti alian bildon. +pdfjs-editor-add-signature-error-close-button = Fermi ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Nuligi +pdfjs-editor-add-signature-add-button = Aldoni +pdfjs-editor-edit-signature-update-button = Ĝisdatigi + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Forigi subskribon +pdfjs-editor-delete-signature-button-label = Forigi subskribon + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Modifi priskribon + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Modifi priskribon diff --git a/l10n/es-AR/viewer.ftl b/l10n/es-AR/viewer.ftl index 8c681b84539f3..9e7bf9452385f 100644 --- a/l10n/es-AR/viewer.ftl +++ b/l10n/es-AR/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Resaltar .aria-label = Resaltar pdfjs-highlight-floating-button-label = Resaltar +pdfjs-editor-signature-button = + .title = Agregar firma +pdfjs-editor-signature-button-label = Agregar firma ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Agregar una imagen pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar el grosor al resaltar elementos que no sean texto +pdfjs-editor-signature-add-signature-button = + .title = Agregar nueva firma +pdfjs-editor-signature-add-signature-button-label = Agregar nueva firma # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor de texto @@ -519,6 +525,7 @@ pdfjs-editor-undo-bar-close-button-label = Cerrar ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregar a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y opcionalmente guardar la firma para un uso repetido. pdfjs-editor-add-signature-dialog-title = Agregar una firma ## Tab names @@ -569,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Cerrar pdfjs-editor-add-signature-cancel-button = Cancelar pdfjs-editor-add-signature-add-button = Agregar +pdfjs-editor-edit-signature-update-button = Actualizar + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Eliminar firma +pdfjs-editor-delete-signature-button-label = Eliminar firma + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Editar descripción + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Editar descripción diff --git a/l10n/es-CL/viewer.ftl b/l10n/es-CL/viewer.ftl index 8be05e328de32..c7fb5f220050b 100644 --- a/l10n/es-CL/viewer.ftl +++ b/l10n/es-CL/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Destacar .aria-label = Destacar pdfjs-highlight-floating-button-label = Destacar +pdfjs-editor-signature-button = + .title = Añadir firma +pdfjs-editor-signature-button-label = Añadir firma ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Añadir imagen pdfjs-editor-free-highlight-thickness-input = Grosor pdfjs-editor-free-highlight-thickness-title = .title = Cambia el grosor al resaltar elementos que no sean texto +pdfjs-editor-signature-add-signature-button = + .title = Añadir nueva firma +pdfjs-editor-signature-add-signature-button-label = Añadir nueva firma # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor de texto @@ -570,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Cerrar pdfjs-editor-add-signature-cancel-button = Cancelar pdfjs-editor-add-signature-add-button = Añadir +pdfjs-editor-edit-signature-update-button = Actualizar + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Eliminar firma +pdfjs-editor-delete-signature-button-label = Eliminar firma + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Editar descripción + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Editar descripción diff --git a/l10n/es-ES/viewer.ftl b/l10n/es-ES/viewer.ftl index 4ed4c7c47efa3..b378246f11c85 100644 --- a/l10n/es-ES/viewer.ftl +++ b/l10n/es-ES/viewer.ftl @@ -528,3 +528,12 @@ pdfjs-editor-undo-bar-close-button-label = Cerrar ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/es-MX/viewer.ftl b/l10n/es-MX/viewer.ftl index 3d4eee86b1fc8..45574d50c50cc 100644 --- a/l10n/es-MX/viewer.ftl +++ b/l10n/es-MX/viewer.ftl @@ -528,3 +528,12 @@ pdfjs-editor-undo-bar-close-button-label = Cerrar ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/et/viewer.ftl b/l10n/et/viewer.ftl index 7cdaa8e1806ad..d08906b5e6e87 100644 --- a/l10n/et/viewer.ftl +++ b/l10n/et/viewer.ftl @@ -304,3 +304,12 @@ pdfjs-web-fonts-disabled = Veebifondid on keelatud: PDFiga kaasatud fonte pole v ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/eu/viewer.ftl b/l10n/eu/viewer.ftl index 3447d2f7f7ee8..03f55debed183 100644 --- a/l10n/eu/viewer.ftl +++ b/l10n/eu/viewer.ftl @@ -574,3 +574,12 @@ pdfjs-editor-add-signature-error-close-button = Itxi pdfjs-editor-add-signature-cancel-button = Utzi pdfjs-editor-add-signature-add-button = Gehitu + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/fa/viewer.ftl b/l10n/fa/viewer.ftl index 3df2266e0d711..0ac2a1c760257 100644 --- a/l10n/fa/viewer.ftl +++ b/l10n/fa/viewer.ftl @@ -364,3 +364,12 @@ pdfjs-editor-alt-text-settings-close-button = بستن ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ff/viewer.ftl b/l10n/ff/viewer.ftl index 82240af847ed9..9ae6ef1cbcfbe 100644 --- a/l10n/ff/viewer.ftl +++ b/l10n/ff/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = Ponte geese ko daaƴaaɗe: horiima huutoraade ponte P ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/fi/viewer.ftl b/l10n/fi/viewer.ftl index 2cdc7efe5366c..b18bc33bb4c3a 100644 --- a/l10n/fi/viewer.ftl +++ b/l10n/fi/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Korostus .aria-label = Korostus pdfjs-highlight-floating-button-label = Korostus +pdfjs-editor-signature-button = + .title = Lisää allekirjoitus +pdfjs-editor-signature-button-label = Lisää allekirjoitus ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Poista kuva pdfjs-editor-remove-highlight-button = .title = Poista korostus +pdfjs-editor-remove-signature-button = + .title = Poista allekirjoitus ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Lisää kuva pdfjs-editor-free-highlight-thickness-input = Paksuus pdfjs-editor-free-highlight-thickness-title = .title = Muuta paksuutta korostaessasi muita kohteita kuin tekstiä +pdfjs-editor-signature-add-signature-button = + .title = Lisää uusi allekirjoitus +pdfjs-editor-signature-add-signature-button-label = Lisää uusi allekirjoitus # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Tekstimuokkain @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Korostus poistettu pdfjs-editor-undo-bar-message-freetext = Teksti poistettu pdfjs-editor-undo-bar-message-ink = Piirustus poistettu pdfjs-editor-undo-bar-message-stamp = Kuva poistettu +pdfjs-editor-undo-bar-message-signature = Allekirjoitus poistettu # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = Sulje ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Tämän ikkunan avulla käyttäjä voi luoda allekirjoituksen PDF-asiakirjaan lisättäväksi. Käyttäjä voi muokata nimeä (joka toimii myös vaihtoehtoisena tekstinä) ja valinnaisesti tallentaa allekirjoituksen toistuvaa käyttöä varten. +pdfjs-editor-add-signature-dialog-title = Lisää allekirjoitus ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Kirjoita + .title = Kirjoita +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Piirrä + .title = Piirrä +pdfjs-editor-add-signature-image-button = Kuva + .title = Kuva ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Kirjoita allekirjoituksesi + .placeholder = Kirjoita allekirjoituksesi +pdfjs-editor-add-signature-draw-placeholder = Piirrä allekirjoituksesi +pdfjs-editor-add-signature-draw-thickness-range-label = Paksuus +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Piirustuksen paksuus: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Lähetä tiedosto vetämällä se tähän +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Tai selaa kuvatiedostoja + *[other] Tai selaa kuvatiedostoja + } ## Controls +pdfjs-editor-add-signature-description-label = Kuvaus (vaihtoehtoinen teksti) +pdfjs-editor-add-signature-description-input = + .title = Kuvaus (vaihtoehtoinen teksti) +pdfjs-editor-add-signature-description-default-when-drawing = Allekirjoitus +pdfjs-editor-add-signature-clear-button-label = Tyhjennä allekirjoitus +pdfjs-editor-add-signature-clear-button = + .title = Tyhjennä allekirjoitus +pdfjs-editor-add-signature-save-checkbox = Tallenna allekirjoitus +pdfjs-editor-add-signature-save-warning-message = Olet saavuttanut viiden tallennetun allekirjoituksen rajan. Poista yksi säästääksesi lisää. +pdfjs-editor-add-signature-image-upload-error-title = Kuvaa ei voitu lähettää +pdfjs-editor-add-signature-image-upload-error-description = Tarkista verkkoyhteyden tila tai kokeile toista kuvaa. +pdfjs-editor-add-signature-error-close-button = Sulje ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Peruuta +pdfjs-editor-add-signature-add-button = Lisää +pdfjs-editor-edit-signature-update-button = Päivitä + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Poista allekirjoitus +pdfjs-editor-delete-signature-button-label = Poista allekirjoitus + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Muokkaa kuvausta + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Muokkaa kuvausta diff --git a/l10n/fr/viewer.ftl b/l10n/fr/viewer.ftl index d18252ad5dafe..3a1187c37995c 100644 --- a/l10n/fr/viewer.ftl +++ b/l10n/fr/viewer.ftl @@ -312,6 +312,9 @@ pdfjs-highlight-floating-button1 = .title = Surligner .aria-label = Surligner pdfjs-highlight-floating-button-label = Surligner +pdfjs-editor-signature-button = + .title = Ajouter une signature +pdfjs-editor-signature-button-label = Ajouter une signature ## Remove button for the various kind of editor. @@ -323,6 +326,8 @@ pdfjs-editor-remove-stamp-button = .title = Supprimer l’image pdfjs-editor-remove-highlight-button = .title = Supprimer le surlignage +pdfjs-editor-remove-signature-button = + .title = Retirer la signature ## @@ -339,6 +344,9 @@ pdfjs-editor-stamp-add-image-button-label = Ajouter une image pdfjs-editor-free-highlight-thickness-input = Épaisseur pdfjs-editor-free-highlight-thickness-title = .title = Modifier l’épaisseur pour le surlignage d’éléments non textuels +pdfjs-editor-signature-add-signature-button = + .title = Ajouter une nouvelle signature +pdfjs-editor-signature-add-signature-button-label = Ajouter une nouvelle signature # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Éditeur de texte @@ -496,6 +504,7 @@ pdfjs-editor-undo-bar-message-highlight = Surlignage supprimé pdfjs-editor-undo-bar-message-freetext = Texte supprimé pdfjs-editor-undo-bar-message-ink = Dessin supprimé pdfjs-editor-undo-bar-message-stamp = Image supprimée +pdfjs-editor-undo-bar-message-signature = Signature retirée # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -512,15 +521,69 @@ pdfjs-editor-undo-bar-close-button-label = Fermer ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Cette fenêtre permet de créer une signature à ajouter à un document au format PDF. Il est possible d’en modifier le nom (qui sert également de texte alternatif) et, éventuellement, de l’enregistrer pour une utilisation répétée. +pdfjs-editor-add-signature-dialog-title = Ajout d’une signature ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Saisir + .title = Saisir au clavier +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Dessiner + .title = Dessiner +pdfjs-editor-add-signature-image-button = Image + .title = Image ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Saisissez votre signature + .placeholder = Saisissez votre signature +pdfjs-editor-add-signature-draw-placeholder = Tracez votre signature +pdfjs-editor-add-signature-draw-thickness-range-label = Épaisseur +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Épaisseur du trait : { $thickness } +pdfjs-editor-add-signature-image-placeholder = Déposez un fichier ici pour l’envoyer +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ou choisissez parmi les fichiers image + *[other] Ou parcourez les fichiers image + } ## Controls +pdfjs-editor-add-signature-description-label = Description (texte alternatif) +pdfjs-editor-add-signature-description-input = + .title = Description (texte alternatif) +pdfjs-editor-add-signature-description-default-when-drawing = Signature +pdfjs-editor-add-signature-clear-button-label = Effacer la signature +pdfjs-editor-add-signature-clear-button = + .title = Effacer la signature +pdfjs-editor-add-signature-save-checkbox = Enregistrer la signature +pdfjs-editor-add-signature-save-warning-message = Vous avez atteint la limite de 5 signatures enregistrées. Supprimez-en une pour en enregistrer une autre. +pdfjs-editor-add-signature-image-upload-error-title = Impossible d’envoyer l’image +pdfjs-editor-add-signature-image-upload-error-description = Vérifiez votre connexion réseau ou essayez avec une autre image. +pdfjs-editor-add-signature-error-close-button = Fermer ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Annuler +pdfjs-editor-add-signature-add-button = Ajouter +pdfjs-editor-edit-signature-update-button = Mettre à jour + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Supprimer la signature +pdfjs-editor-delete-signature-button-label = Supprimer la signature + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Modifier la description + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Modifier la description diff --git a/l10n/fur/viewer.ftl b/l10n/fur/viewer.ftl index 8f029ed18c3f8..1bca7d5811edd 100644 --- a/l10n/fur/viewer.ftl +++ b/l10n/fur/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Gjave imagjin pdfjs-editor-remove-highlight-button = .title = Gjave evidenziazion +pdfjs-editor-remove-signature-button = + .title = Gjave firme ## @@ -358,6 +360,8 @@ pdfjs-ink-canvas = ## Alt-text dialog pdfjs-editor-alt-text-button-label = Test alternatîf +pdfjs-editor-alt-text-edit-button = + .aria-label = Modifiche test alternatîf pdfjs-editor-alt-text-edit-button-label = Modifiche test alternatîf pdfjs-editor-alt-text-dialog-label = Sielç une opzion pdfjs-editor-alt-text-dialog-description = Il test alternatîf (“alt text”) al jude cuant che lis personis no puedin viodi la imagjin o cuant che la imagjine no ven cjariade. @@ -371,6 +375,9 @@ pdfjs-editor-alt-text-decorative-tooltip = Segnade come decorative # .placeholder: This is a placeholder for the alt text input area pdfjs-editor-alt-text-textarea = .placeholder = Par esempli, “Un zovin si sente a taule par mangjâ” +# Alternative text (alt text) helps when people can't see the image. +pdfjs-editor-alt-text-button = + .aria-label = Test alternatîf ## Editor resizers ## This is used in an aria label to help to understand the role of the resizer. @@ -451,8 +458,17 @@ pdfjs-editor-new-alt-text-error-close-button = Siere # $percent (Number) - the percentage of the downloaded size. pdfjs-editor-new-alt-text-ai-model-downloading-progress = Daûr a discjariâil model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) .aria-valuetext = Daûr a discjariâ il model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB) +# This is a button that users can click to edit the alt text they have already added. +pdfjs-editor-new-alt-text-added-button = + .aria-label = Test alternatîf zontât pdfjs-editor-new-alt-text-added-button-label = Test alternatîf zontât +# This is a button that users can click to open the alt text editor and add alt text when it is not present. +pdfjs-editor-new-alt-text-missing-button = + .aria-label = Al mancje il test alternatîf pdfjs-editor-new-alt-text-missing-button-label = Al mancje il test alternatîf +# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated. +pdfjs-editor-new-alt-text-to-review-button = + .aria-label = Verifiche test alternatîf pdfjs-editor-new-alt-text-to-review-button-label = Verifiche test alternatîf # "Created automatically" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see/hear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear. # Variables: @@ -482,18 +498,84 @@ pdfjs-editor-alt-text-settings-close-button = Siere ## "Annotations removed" bar +pdfjs-editor-undo-bar-message-highlight = Evidenziazion gjavade +pdfjs-editor-undo-bar-message-freetext = Test gjavât +pdfjs-editor-undo-bar-message-ink = Dissen gjavât +pdfjs-editor-undo-bar-message-stamp = Imagjin gjavade +pdfjs-editor-undo-bar-message-signature = Firme gjavade +# Variables: +# $count (Number) - the number of removed annotations. +pdfjs-editor-undo-bar-message-multiple = + { $count -> + [one] { $count } note gjavade + *[other] { $count } notis gjavadis + } +pdfjs-editor-undo-bar-undo-button = + .title = Anule +pdfjs-editor-undo-bar-undo-button-label = Anule +pdfjs-editor-undo-bar-close-button = + .title = Siere +pdfjs-editor-undo-bar-close-button-label = Siere ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Chest barcon al permet al utent di creâ une firme di zontâ a un document PDF. L’utent al pues modificâ il non (che al vignarà doprât ancje come test alternatîf) e, se lu desidere, salvâ la firme par tornâ a doprâle un doman. +pdfjs-editor-add-signature-dialog-title = Zonte une firme ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Scrîf + .title = Scrîf +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Dissegne + .title = Dissegne +pdfjs-editor-add-signature-image-button = Imagjin + .title = Imagjin ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Scrîf la tô firme + .placeholder = Scrîf la tô firme +pdfjs-editor-add-signature-draw-placeholder = Dissegne la tô firme +pdfjs-editor-add-signature-draw-thickness-range-label = Spessôr +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Spessôr de tresse: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Strissine un file achì par cjariâlu +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Opûr sielç i files imagjin + *[other] Opûr sgarfe pai files imagjin + } ## Controls +pdfjs-editor-add-signature-description-label = Descrizion (test alternatîf) +pdfjs-editor-add-signature-description-input = + .title = Descrizion (test alternatîf) +pdfjs-editor-add-signature-description-default-when-drawing = Firme +pdfjs-editor-add-signature-clear-button-label = Nete firme +pdfjs-editor-add-signature-clear-button = + .title = Nete firme +pdfjs-editor-add-signature-save-checkbox = Salve firme +pdfjs-editor-add-signature-save-warning-message = Tu sês rivât/rivade al limit di 5 firmis salvadis. Gjave une par salvânt une altre. +pdfjs-editor-add-signature-image-upload-error-title = Impussibil cjariâ la imagjin +pdfjs-editor-add-signature-image-upload-error-description = Controle la conession di rêt o prove cuntune altre imagjin. +pdfjs-editor-add-signature-error-close-button = Siere ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Anule +pdfjs-editor-add-signature-add-button = Zonte + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/fy-NL/viewer.ftl b/l10n/fy-NL/viewer.ftl index 1032f5935e761..60679f590ab06 100644 --- a/l10n/fy-NL/viewer.ftl +++ b/l10n/fy-NL/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Ofbylding fuortsmite pdfjs-editor-remove-highlight-button = .title = Markearring fuortsmite +pdfjs-editor-remove-signature-button = + .title = Hantekening fuortsmite ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Markearring fuortsmiten pdfjs-editor-undo-bar-message-freetext = Tekst fuortsmiten pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten +pdfjs-editor-undo-bar-message-signature = Hantekening fuortsmiten # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +519,63 @@ pdfjs-editor-undo-bar-close-button-label = Slute ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Mei dizze modal kin de brûker in hantekening meitsje om oan in PDF-dokumint ta te foegjen. De brûker kin de namme bewurkje (dy't ek tsjinnet as alternative tekst), en opsjoneel de ûndertekening bewarje foar werhelle gebrûk. +pdfjs-editor-add-signature-dialog-title = In hantekening tafoegje ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Type + .title = Type +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Tekenje + .title = Tekenje +pdfjs-editor-add-signature-image-button = Ofbylding + .title = Ofbylding ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Jo hantekening type + .placeholder = Jo hantekening type +pdfjs-editor-add-signature-draw-placeholder = Jo hantekening tekenje +pdfjs-editor-add-signature-draw-thickness-range-label = Tsjokte +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Tekentsjokte: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Sleep bestân hjirhinne om op te laden +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Of kies ôfbyldingsbestannen + *[other] Of kies ôfbyldingsbestannen + } ## Controls +pdfjs-editor-add-signature-description-label = Beskriuwing (alternative tekst) +pdfjs-editor-add-signature-description-input = + .title = Beskriuwing (alternative tekst) +pdfjs-editor-add-signature-description-default-when-drawing = Hantekening +pdfjs-editor-add-signature-clear-button-label = Hantekening wiskje +pdfjs-editor-add-signature-clear-button = + .title = Hantekening wiskje +pdfjs-editor-add-signature-save-checkbox = Hantekening bewarje +pdfjs-editor-add-signature-save-warning-message = Jo hawwe de limyt fan 5 bewarre hantekeningen berikt. Ferwiderje ien om in oar te bewarjen. +pdfjs-editor-add-signature-image-upload-error-title = Kin de ôfbylding net oplade +pdfjs-editor-add-signature-image-upload-error-description = Kontrolearje jo netwurkferbining of probearje in oare ôfbylding. +pdfjs-editor-add-signature-error-close-button = Slute ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Annulearje +pdfjs-editor-add-signature-add-button = Tafoegje + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ga-IE/viewer.ftl b/l10n/ga-IE/viewer.ftl index ea22483ea3e51..e81e149cad1fd 100644 --- a/l10n/ga-IE/viewer.ftl +++ b/l10n/ga-IE/viewer.ftl @@ -249,3 +249,12 @@ pdfjs-web-fonts-disabled = Tá clófhoirne Gréasáin díchumasaithe: ní féidi ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/gd/viewer.ftl b/l10n/gd/viewer.ftl index d3e53ae75f94d..71d39c255cc82 100644 --- a/l10n/gd/viewer.ftl +++ b/l10n/gd/viewer.ftl @@ -329,3 +329,12 @@ pdfjs-ink-canvas = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/gl/viewer.ftl b/l10n/gl/viewer.ftl index 5596493b5323a..dced173f39973 100644 --- a/l10n/gl/viewer.ftl +++ b/l10n/gl/viewer.ftl @@ -400,3 +400,12 @@ pdfjs-editor-resizer-middle-left = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/gn/viewer.ftl b/l10n/gn/viewer.ftl index 2462849621728..19e14f3fbd82d 100644 --- a/l10n/gn/viewer.ftl +++ b/l10n/gn/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Mbosa’y .aria-label = Mbosa’y pdfjs-highlight-floating-button-label = Mbosa’y +pdfjs-editor-signature-button = + .title = Embojuaju teraguapy +pdfjs-editor-signature-button-label = Embojuaju teraguapy ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Emboguete ta’ãnga pdfjs-editor-remove-highlight-button = .title = Eipe’a jehechaveha +pdfjs-editor-remove-signature-button = + .title = Embogue teraguapy ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Embojuaju ta’ãnga pdfjs-editor-free-highlight-thickness-input = Anambusu pdfjs-editor-free-highlight-thickness-title = .title = Emoambue anambusukue embosa’ývo mba’eporu ha’e’ỹva moñe’ẽrã +pdfjs-editor-signature-add-signature-button = + .title = Embojuaju teraguapy pyahu +pdfjs-editor-signature-add-signature-button-label = Embojuaju teraguapy pyahu # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Moñe’ẽrã moheñoiha @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Mbosa’ýva mboguete pdfjs-editor-undo-bar-message-freetext = Moñe’ẽrã mboguepyre pdfjs-editor-undo-bar-message-ink = Ta’ãnga mboguepyre pdfjs-editor-undo-bar-message-stamp = Ta’ãnga mboguepyre +pdfjs-editor-undo-bar-message-signature = Teraguapy mboguepyre # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,65 @@ pdfjs-editor-undo-bar-close-button-label = Mboty ## Add a signature dialog +pdfjs-editor-add-signature-dialog-title = Embojuaju teraguapy ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Jehai + .title = Jehai +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Moha’ãnga + .title = Moha’ãnga +pdfjs-editor-add-signature-image-button = Ta’ãnga + .title = Ta’ãnga ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Ehai nde reraguapy + .placeholder = Ehai nde reraguapy +pdfjs-editor-add-signature-draw-placeholder = Emoha’ãnga nde reraguapy +pdfjs-editor-add-signature-draw-thickness-range-label = Anambusu +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Ta’ãnga anambusukue: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Egueru marandurenda ápe ehupi hag̃ua +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Eiporavo ta’ãnga marandurenda + *[other] Eiporavo ta’ãnga marandurenda + } ## Controls +pdfjs-editor-add-signature-description-label = Moha’ãnga (moñe’ẽrã ykepegua) +pdfjs-editor-add-signature-description-input = + .title = Moha’ãnga (moñe’ẽrã ykepegua) +pdfjs-editor-add-signature-description-default-when-drawing = Teraguapy +pdfjs-editor-add-signature-clear-button-label = Emboguete teraguapy +pdfjs-editor-add-signature-clear-button = + .title = Emboguete teraguapy +pdfjs-editor-add-signature-save-checkbox = Eñongatu teraguapy +pdfjs-editor-add-signature-error-close-button = Mboty ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Heja +pdfjs-editor-add-signature-add-button = Mbojuaju +pdfjs-editor-edit-signature-update-button = Mbohekopyahu + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Embogue teraguapy +pdfjs-editor-delete-signature-button-label = Embogue teraguapy + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Embosako’i moha’ãnga + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Embosako’i moha’ãnga diff --git a/l10n/gu-IN/viewer.ftl b/l10n/gu-IN/viewer.ftl index 5c5c187234bc9..b3beb1556e21a 100644 --- a/l10n/gu-IN/viewer.ftl +++ b/l10n/gu-IN/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = વેબ ફોન્ટ નિષ્ક્રિય ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/he/viewer.ftl b/l10n/he/viewer.ftl index b7a027d10b07c..28d6d7f426771 100644 --- a/l10n/he/viewer.ftl +++ b/l10n/he/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = סימון .aria-label = סימון pdfjs-highlight-floating-button-label = סימון +pdfjs-editor-signature-button = + .title = הוספת חתימה +pdfjs-editor-signature-button-label = הוספת חתימה ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = הוספת תמונה pdfjs-editor-free-highlight-thickness-input = עובי pdfjs-editor-free-highlight-thickness-title = .title = שינוי עובי בעת סימון פריטים שאינם טקסט +pdfjs-editor-signature-add-signature-button = + .title = הוספת חתימה חדשה +pdfjs-editor-signature-add-signature-button-label = הוספת חתימה חדשה # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = עורך טקסט @@ -553,6 +559,11 @@ pdfjs-editor-add-signature-image-browse-link = ## Controls +pdfjs-editor-add-signature-description-label = תיאור (טקסט חלופי) +pdfjs-editor-add-signature-description-input = + .title = תיאור (טקסט חלופי) +pdfjs-editor-add-signature-description-default-when-drawing = חתימה +pdfjs-editor-add-signature-clear-button-label = ניקוי חתימה pdfjs-editor-add-signature-clear-button = .title = ניקוי חתימה pdfjs-editor-add-signature-save-checkbox = שמירת החתימה @@ -565,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = סגירה pdfjs-editor-add-signature-cancel-button = ביטול pdfjs-editor-add-signature-add-button = הוספה +pdfjs-editor-edit-signature-update-button = עדכון + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = הסרת חתימה +pdfjs-editor-delete-signature-button-label = הסרת חתימה + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = עריכת תיאור + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = עריכת תיאור diff --git a/l10n/hi-IN/viewer.ftl b/l10n/hi-IN/viewer.ftl index e4478f58f87a9..e0822aef407fd 100644 --- a/l10n/hi-IN/viewer.ftl +++ b/l10n/hi-IN/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-editor-free-text-color-input = रंग ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/hr/viewer.ftl b/l10n/hr/viewer.ftl index 4af3bd3bff7ff..d2a97eff21b8c 100644 --- a/l10n/hr/viewer.ftl +++ b/l10n/hr/viewer.ftl @@ -531,3 +531,12 @@ pdfjs-editor-undo-bar-close-button-label = Zatvori ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/hsb/viewer.ftl b/l10n/hsb/viewer.ftl index e33d9cc86a6c8..9c9abb84ed379 100644 --- a/l10n/hsb/viewer.ftl +++ b/l10n/hsb/viewer.ftl @@ -320,6 +320,9 @@ pdfjs-highlight-floating-button1 = .title = Wuzběhnjenje .aria-label = Wuzběhnjenje pdfjs-highlight-floating-button-label = Wuzběhnjenje +pdfjs-editor-signature-button = + .title = Signaturu přidać +pdfjs-editor-signature-button-label = Signaturu přidać ## Remove button for the various kind of editor. @@ -349,6 +352,9 @@ pdfjs-editor-stamp-add-image-button-label = Wobraz přidać pdfjs-editor-free-highlight-thickness-input = Tołstosć pdfjs-editor-free-highlight-thickness-title = .title = Tołstosć změnić, hdyž so zapiski wuzběhuja, kotrež tekst njejsu +pdfjs-editor-signature-add-signature-button = + .title = Nowu signaturu přidać +pdfjs-editor-signature-add-signature-button-label = Nowu signaturu přidać # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Tekstowy editor @@ -525,6 +531,7 @@ pdfjs-editor-undo-bar-close-button-label = Začinić ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Tutón modalny dialog wužiwarjej zmóžnja, signaturu wutworić, zo by PDF-dokument přidał. Wužiwar móže mjeno wobdźěłać (kotrež tež jako alternatiwny tekst słuži) a po přeću signaturu za wospjetne wužiwanje składować. pdfjs-editor-add-signature-dialog-title = Signaturu přidać ## Tab names @@ -575,3 +582,18 @@ pdfjs-editor-add-signature-error-close-button = Začinić pdfjs-editor-add-signature-cancel-button = Přetorhnyć pdfjs-editor-add-signature-add-button = Přidać +pdfjs-editor-edit-signature-update-button = Aktualizować + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Signaturu wotstronić +pdfjs-editor-delete-signature-button-label = Signaturu wotstronić + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Wopisanje wobdźěłać + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Wopisanje wobdźěłać diff --git a/l10n/hu/viewer.ftl b/l10n/hu/viewer.ftl index 0d495de4cca40..57b5fd7a8d891 100644 --- a/l10n/hu/viewer.ftl +++ b/l10n/hu/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Kiemelés .aria-label = Kiemelés pdfjs-highlight-floating-button-label = Kiemelés +pdfjs-editor-signature-button = + .title = Aláírás hozzáadása +pdfjs-editor-signature-button-label = Aláírás hozzáadása ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Kép hozzáadása pdfjs-editor-free-highlight-thickness-input = Vastagság pdfjs-editor-free-highlight-thickness-title = .title = Vastagság módosítása, ha nem szöveges elemeket emel ki +pdfjs-editor-signature-add-signature-button = + .title = Új aláírás hozzáadása +pdfjs-editor-signature-add-signature-button-label = Új aláírás hozzáadása # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Szövegszerkesztő @@ -519,6 +525,7 @@ pdfjs-editor-undo-bar-close-button-label = Bezárás ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Ez a mód lehetővé teszi a felhasználónak, hogy aláírást hozzon létre, és ezt egy PDF dokumentumhoz adja. A felhasználó szerkesztheti a nevet (ez egyben alternatív szövegként is szolgál), és ismételt felhasználás céljából tetszés szerint mentheti az aláírást. pdfjs-editor-add-signature-dialog-title = Aláírás hozzáadása ## Tab names @@ -569,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Bezárás pdfjs-editor-add-signature-cancel-button = Mégse pdfjs-editor-add-signature-add-button = Hozzáadás +pdfjs-editor-edit-signature-update-button = Frissítés + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Aláírás eltávolítása +pdfjs-editor-delete-signature-button-label = Aláírás eltávolítása + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Leírás szerkesztése + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Leírás szerkesztése diff --git a/l10n/hy-AM/viewer.ftl b/l10n/hy-AM/viewer.ftl index 093e05d21b54c..605825b7abbe1 100644 --- a/l10n/hy-AM/viewer.ftl +++ b/l10n/hy-AM/viewer.ftl @@ -295,3 +295,12 @@ pdfjs-editor-highlight-show-all-button = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/hye/viewer.ftl b/l10n/hye/viewer.ftl index a08e47b54e23a..007225c63df28 100644 --- a/l10n/hye/viewer.ftl +++ b/l10n/hye/viewer.ftl @@ -304,3 +304,12 @@ pdfjs-web-fonts-disabled = Վեբ-տառատեսակները անջատուած ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ia/viewer.ftl b/l10n/ia/viewer.ftl index d44104464565d..e34be65b448d8 100644 --- a/l10n/ia/viewer.ftl +++ b/l10n/ia/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Evidentiar .aria-label = Evidentiar pdfjs-highlight-floating-button-label = Evidentiar +pdfjs-editor-signature-button = + .title = Adder signatura +pdfjs-editor-signature-button-label = Adder signatura ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Adder imagine pdfjs-editor-free-highlight-thickness-input = Spissor pdfjs-editor-free-highlight-thickness-title = .title = Cambiar spissor evidentiante elementos differente de texto +pdfjs-editor-signature-add-signature-button = + .title = Adder nove signatura +pdfjs-editor-signature-add-signature-button-label = Adder nove signatura # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor de texto @@ -570,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Clauder pdfjs-editor-add-signature-cancel-button = Cancellar pdfjs-editor-add-signature-add-button = Adder +pdfjs-editor-edit-signature-update-button = Actualisar + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Remover signatura +pdfjs-editor-delete-signature-button-label = Remover signatura + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Rediger description + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Rediger description diff --git a/l10n/id/viewer.ftl b/l10n/id/viewer.ftl index acb922b81a1b4..9784ab179f534 100644 --- a/l10n/id/viewer.ftl +++ b/l10n/id/viewer.ftl @@ -516,3 +516,12 @@ pdfjs-editor-undo-bar-close-button-label = Tutup ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/is/viewer.ftl b/l10n/is/viewer.ftl index 7d91bafa65b0f..56ee2976343df 100644 --- a/l10n/is/viewer.ftl +++ b/l10n/is/viewer.ftl @@ -179,10 +179,10 @@ pdfjs-printing-not-ready = Aðvörun: Ekki er búið að hlaða inn allri PDF sk ## Tooltips and alt text for side panel toolbar buttons pdfjs-toggle-sidebar-button = - .title = Víxla hliðarspjaldi af/á + .title = Víxla hliðarstiku af/á pdfjs-toggle-sidebar-notification-button = - .title = Víxla hliðarslá (skjal inniheldur yfirlit/viðhengi/lög) -pdfjs-toggle-sidebar-button-label = Víxla hliðarspjaldi af/á + .title = Víxla hliðarstiku af/á (skjal inniheldur yfirlit/viðhengi/lög) +pdfjs-toggle-sidebar-button-label = Víxla hliðarstiku af/á pdfjs-document-outline-button = .title = Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum) pdfjs-document-outline-button-label = Efnisskipan skjals @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Áherslulita .aria-label = Áherslulita pdfjs-highlight-floating-button-label = Áherslulita +pdfjs-editor-signature-button = + .title = Bæta við undirritun +pdfjs-editor-signature-button-label = Bæta við undirritun ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Bæta við mynd pdfjs-editor-free-highlight-thickness-input = Þykkt pdfjs-editor-free-highlight-thickness-title = .title = Breyta þykkt við áherslulitun annarra atriða en texta +pdfjs-editor-signature-add-signature-button = + .title = Bæta við nýrri undirritun +pdfjs-editor-signature-add-signature-button-label = Bæta við nýrri undirritun # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Textaritill @@ -570,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Loka pdfjs-editor-add-signature-cancel-button = Hætta við pdfjs-editor-add-signature-add-button = Bæta við +pdfjs-editor-edit-signature-update-button = Uppfæra + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Fjarlægja undirritun +pdfjs-editor-delete-signature-button-label = Fjarlægja undirritun + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Breyta lýsingu + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Breyta lýsingu diff --git a/l10n/it/viewer.ftl b/l10n/it/viewer.ftl index b54744a78a39d..b573a573215ef 100644 --- a/l10n/it/viewer.ftl +++ b/l10n/it/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Evidenzia .aria-label = Evidenzia pdfjs-highlight-floating-button-label = Evidenzia +pdfjs-editor-signature-button = + .title = Aggiungi firma +pdfjs-editor-signature-button-label = Aggiungi firma ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Aggiungi immagine pdfjs-editor-free-highlight-thickness-input = Spessore pdfjs-editor-free-highlight-thickness-title = .title = Modifica lo spessore della selezione per elementi non testuali +pdfjs-editor-signature-add-signature-button = + .title = Aggiungi nuova firma +pdfjs-editor-signature-add-signature-button-label = Aggiungi nuova firma # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor di testo @@ -570,4 +576,19 @@ pdfjs-editor-add-signature-error-close-button = Chiudi pdfjs-editor-add-signature-cancel-button = Annulla pdfjs-editor-add-signature-add-button = Aggiungi +pdfjs-editor-edit-signature-update-button = Aggiorna + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Rimuovi firma +pdfjs-editor-delete-signature-button-label = Rimuovi firma + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Modifica descrizione + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Modifica descrizione diff --git a/l10n/ja/viewer.ftl b/l10n/ja/viewer.ftl index 0f37f2a177bbf..60dd0758d9b3f 100644 --- a/l10n/ja/viewer.ftl +++ b/l10n/ja/viewer.ftl @@ -319,6 +319,8 @@ pdfjs-editor-remove-stamp-button = .title = 画像を削除します pdfjs-editor-remove-highlight-button = .title = 強調を削除します +pdfjs-editor-remove-signature-button = + .title = 署名を削除します ## @@ -492,6 +494,7 @@ pdfjs-editor-undo-bar-message-highlight = 強調表示が削除されました pdfjs-editor-undo-bar-message-freetext = フリーテキスト注釈が削除されました pdfjs-editor-undo-bar-message-ink = インク注釈が削除されました pdfjs-editor-undo-bar-message-stamp = 画像が削除されました +pdfjs-editor-undo-bar-message-signature = 署名が削除されました # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = { $count } 個の注釈が削除されました @@ -501,3 +504,57 @@ pdfjs-editor-undo-bar-undo-button-label = 元に戻す pdfjs-editor-undo-bar-close-button = .title = 閉じる pdfjs-editor-undo-bar-close-button-label = 閉じる + +## Add a signature dialog + +pdfjs-editor-add-signature-dialog-label = このダイアログではユーザーが署名を作成して PDF 文書に追加できます。 +pdfjs-editor-add-signature-dialog-title = 署名を追加 + +## Tab names + +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = タイプ + .title = キーボード入力します +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = 手書き + .title = 手書き入力します +pdfjs-editor-add-signature-image-button = 画像 + .title = 画像を指定します + +## Tab panels + +pdfjs-editor-add-signature-type-input = + .aria-label = 署名をキーボード入力 + .placeholder = 署名をキーボード入力 +pdfjs-editor-add-signature-draw-placeholder = 署名を手書き入力 +pdfjs-editor-add-signature-draw-thickness-range-label = 線の太さ +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = 線の太さ: { $thickness } +pdfjs-editor-add-signature-image-placeholder = ファイルをここにドラッグしてアップロード +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] または画像ファイルを選択 + *[other] または画像ファイルを参照 + } + +## Controls + +pdfjs-editor-add-signature-description-label = 説明 (代替テキスト) +pdfjs-editor-add-signature-description-input = + .title = 説明 (代替テキスト) を追加します +pdfjs-editor-add-signature-description-default-when-drawing = 署名 +pdfjs-editor-add-signature-clear-button-label = 署名を消去 +pdfjs-editor-add-signature-clear-button = + .title = 署名を消去します +pdfjs-editor-add-signature-save-checkbox = 署名を保存 +pdfjs-editor-add-signature-save-warning-message = 保存された署名が上限の 5 個に達しました。さらに保存するにはいずれかを削除してください。 +pdfjs-editor-add-signature-image-upload-error-title = 画像をアップロードできません +pdfjs-editor-add-signature-image-upload-error-description = ネットワーク接続を確認するか別の画像を試してください。 +pdfjs-editor-add-signature-error-close-button = 閉じる + +## Dialog buttons + +pdfjs-editor-add-signature-cancel-button = キャンセル +pdfjs-editor-add-signature-add-button = 追加 diff --git a/l10n/ka/viewer.ftl b/l10n/ka/viewer.ftl index 8c1fe5050d5bd..c63d44d09ba0a 100644 --- a/l10n/ka/viewer.ftl +++ b/l10n/ka/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = სურათის მოცილება pdfjs-editor-remove-highlight-button = .title = მონიშვნის მოცილება +pdfjs-editor-remove-signature-button = + .title = ხელმოწერის მოცილება ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = მონიშვნა მოცი pdfjs-editor-undo-bar-message-freetext = წარწერა მოცილებულია pdfjs-editor-undo-bar-message-ink = ნახატი მოცილებულია pdfjs-editor-undo-bar-message-stamp = სურათი მოცილებულია +pdfjs-editor-undo-bar-message-signature = ხელმოწერა მოცილებულია # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +519,63 @@ pdfjs-editor-undo-bar-close-button-label = დახურვა ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = ეს არე საშუალებას აძლევს მომხმარებელს, შექმნას საკუთარი ხელმოწერა PDF-დოკუმენტისთვის. მომხმარებელს შეეძლება ჩაასწოროს სახელი (რომელიც დართული ტექსტის მოვალეობასაც ასრულებს) და სურვილისამებრ შეინახოს ხელმოწერა განმეორებით გამოსაყენებლად. +pdfjs-editor-add-signature-dialog-title = ხელმოწერის დამატება ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = აკრეფა + .title = აკრეფა +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = მოხაზვა + .title = მოხაზვა +pdfjs-editor-add-signature-image-button = სურათი + .title = სურათი ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = აკრიფეთ ხელმოწერა + .placeholder = აკრიფეთ ხელმოწერა +pdfjs-editor-add-signature-draw-placeholder = მოხაზეთ ხელმოწერა +pdfjs-editor-add-signature-draw-thickness-range-label = სისქე +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = მოხაზულის სისქე: { $thickness } +pdfjs-editor-add-signature-image-placeholder = ჩავლებით გადმოიტანეთ ასატვირთად +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] ან ამოარჩიეთ სურათებიდან + *[other] ან ამოარჩიეთ სურათებიდან + } ## Controls +pdfjs-editor-add-signature-description-label = აღწერილობა (დართული ტექსტი) +pdfjs-editor-add-signature-description-input = + .title = აღწერილობა (დართული ტექსტი) +pdfjs-editor-add-signature-description-default-when-drawing = ხელმოწერა +pdfjs-editor-add-signature-clear-button-label = ხელმოწერის წაშლა +pdfjs-editor-add-signature-clear-button = + .title = ხელმოწერის წაშლა +pdfjs-editor-add-signature-save-checkbox = ხელმოწერის შენახვა +pdfjs-editor-add-signature-save-warning-message = მიღწეულია 5 ხელმოწერის შენახვის ზღვარი. მოაცილეთ რომელიმე ახლის შესანახად. +pdfjs-editor-add-signature-image-upload-error-title = ვერ აიტვირთა სურათი +pdfjs-editor-add-signature-image-upload-error-description = შეამოწმეთ ქსელთან კავშირი ან მოსინჯეთ სხვა სურათი. +pdfjs-editor-add-signature-error-close-button = დახურვა ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = გაუქმება +pdfjs-editor-add-signature-add-button = დამატება + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/kab/viewer.ftl b/l10n/kab/viewer.ftl index 63a83227aa5e7..2da4edd874f9d 100644 --- a/l10n/kab/viewer.ftl +++ b/l10n/kab/viewer.ftl @@ -453,3 +453,12 @@ pdfjs-editor-alt-text-settings-close-button = Mdel ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/kk/viewer.ftl b/l10n/kk/viewer.ftl index 31f1d8c2fc1f1..109a65d2de339 100644 --- a/l10n/kk/viewer.ftl +++ b/l10n/kk/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Ерекшелеу .aria-label = Ерекшелеу pdfjs-highlight-floating-button-label = Ерекшелеу +pdfjs-editor-signature-button = + .title = Қолтаңбаны қосу +pdfjs-editor-signature-button-label = Қолтаңбаны қосу ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Суретті өшіру pdfjs-editor-remove-highlight-button = .title = Түспен ерекшелеуді өшіру +pdfjs-editor-remove-signature-button = + .title = Қолтаңбаны өшіру ## @@ -516,15 +521,63 @@ pdfjs-editor-undo-bar-close-button-label = Жабу ## Add a signature dialog +pdfjs-editor-add-signature-dialog-title = Қолтаңба қосу ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Енгізу + .title = Енгізу +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Сурет салу + .title = Сурет салу +pdfjs-editor-add-signature-image-button = Сурет + .title = Сурет ## Tab panels +pdfjs-editor-add-signature-draw-thickness-range-label = Қалыңдығы +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Сызба қалыңздығы: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Жүктеп жіберу үшін файлды осы жерге сүйреңіз +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Немесе сурет файлдарын таңдаңыз + *[other] Немесе сурет файлдарын шолыңыз + } ## Controls +pdfjs-editor-add-signature-description-label = Сипаттама (балама мәтін) +pdfjs-editor-add-signature-description-input = + .title = Сипаттама (балама мәтін) +pdfjs-editor-add-signature-description-default-when-drawing = Қолтаңба +pdfjs-editor-add-signature-clear-button-label = Қолтаңбаны өшіру +pdfjs-editor-add-signature-clear-button = + .title = Қолтаңбаны өшіру +pdfjs-editor-add-signature-save-checkbox = Қолтаңбаны сақтау +pdfjs-editor-add-signature-save-warning-message = Сақталған 5 қолтаңбаның шегіне жеттіңіз. Көбірек сақтау үшін біреуін алып тастаңыз. +pdfjs-editor-add-signature-image-upload-error-title = Суретті жүктеп жіберу мүмкін емес. +pdfjs-editor-add-signature-error-close-button = Жабу ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Бас тарту +pdfjs-editor-add-signature-add-button = Қосу +pdfjs-editor-edit-signature-update-button = Жаңарту + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Қолтаңбаны өшіру +pdfjs-editor-delete-signature-button-label = Қолтаңбаны өшіру + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Сипаттаманы түзету + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Сипаттаманы түзету diff --git a/l10n/km/viewer.ftl b/l10n/km/viewer.ftl index f7195e0d5e733..af8cf52ef8d01 100644 --- a/l10n/km/viewer.ftl +++ b/l10n/km/viewer.ftl @@ -259,3 +259,12 @@ pdfjs-web-fonts-disabled = បាន​បិទ​ពុម្ពអក្ស ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/kn/viewer.ftl b/l10n/kn/viewer.ftl index 939ad307fcf8f..61dc8e962ffe7 100644 --- a/l10n/kn/viewer.ftl +++ b/l10n/kn/viewer.ftl @@ -249,3 +249,12 @@ pdfjs-web-fonts-disabled = ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ko/viewer.ftl b/l10n/ko/viewer.ftl index 237e9945fa9ef..e07e68f868262 100644 --- a/l10n/ko/viewer.ftl +++ b/l10n/ko/viewer.ftl @@ -308,6 +308,9 @@ pdfjs-highlight-floating-button1 = .title = 강조 표시 .aria-label = 강조 표시 pdfjs-highlight-floating-button-label = 강조 표시 +pdfjs-editor-signature-button = + .title = 서명 추가 +pdfjs-editor-signature-button-label = 서명 추가 ## Remove button for the various kind of editor. @@ -337,6 +340,9 @@ pdfjs-editor-stamp-add-image-button-label = 이미지 추가 pdfjs-editor-free-highlight-thickness-input = 두께 pdfjs-editor-free-highlight-thickness-title = .title = 텍스트 이외의 항목을 강조 표시할 때 두께 변경 +pdfjs-editor-signature-add-signature-button = + .title = 새 서명 추가 +pdfjs-editor-signature-add-signature-button-label = 새 서명 추가 # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = 텍스트 편집기 @@ -558,3 +564,18 @@ pdfjs-editor-add-signature-error-close-button = 닫기 pdfjs-editor-add-signature-cancel-button = 취소 pdfjs-editor-add-signature-add-button = 추가 +pdfjs-editor-edit-signature-update-button = 업데이트 + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = 서명 제거 +pdfjs-editor-delete-signature-button-label = 서명 제거 + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = 설명 편집 + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = 설명 편집 diff --git a/l10n/lij/viewer.ftl b/l10n/lij/viewer.ftl index 70f0a159465e4..1fbc3259d5553 100644 --- a/l10n/lij/viewer.ftl +++ b/l10n/lij/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = I font do web en dizativæ: inposcibile adeuviâ i ca ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/lo/viewer.ftl b/l10n/lo/viewer.ftl index 5bd0f8b029085..3a6c1f52cc747 100644 --- a/l10n/lo/viewer.ftl +++ b/l10n/lo/viewer.ftl @@ -329,3 +329,12 @@ pdfjs-ink-canvas = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/lt/viewer.ftl b/l10n/lt/viewer.ftl index f89b39408ff3c..daf56c1093fb3 100644 --- a/l10n/lt/viewer.ftl +++ b/l10n/lt/viewer.ftl @@ -304,3 +304,12 @@ pdfjs-web-fonts-disabled = Saityno šriftai išjungti – PDF faile esančių š ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ltg/viewer.ftl b/l10n/ltg/viewer.ftl index 8cee14948984c..9c716b7334c09 100644 --- a/l10n/ltg/viewer.ftl +++ b/l10n/ltg/viewer.ftl @@ -282,3 +282,12 @@ pdfjs-web-fonts-disabled = Šķārsteikla fonti nav aktivizāti: Navar īgult PD ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/lv/viewer.ftl b/l10n/lv/viewer.ftl index 719f8449d9998..2da76c12e2d34 100644 --- a/l10n/lv/viewer.ftl +++ b/l10n/lv/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fon ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/meh/viewer.ftl b/l10n/meh/viewer.ftl index 5ac3713606603..28c883c32d41c 100644 --- a/l10n/meh/viewer.ftl +++ b/l10n/meh/viewer.ftl @@ -123,3 +123,12 @@ pdfjs-password-cancel-button = Nkuvi-ka ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/mk/viewer.ftl b/l10n/mk/viewer.ftl index da0618eb8df82..b990bdaaa42a1 100644 --- a/l10n/mk/viewer.ftl +++ b/l10n/mk/viewer.ftl @@ -251,3 +251,12 @@ pdfjs-web-fonts-disabled = Интернет фонтовите се оневоз ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/mr/viewer.ftl b/l10n/mr/viewer.ftl index e61a8ce3dacb3..4b57de7c19561 100644 --- a/l10n/mr/viewer.ftl +++ b/l10n/mr/viewer.ftl @@ -275,3 +275,12 @@ pdfjs-web-fonts-disabled = वेब टंक असमर्थीत आह ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ms/viewer.ftl b/l10n/ms/viewer.ftl index 3cc03f3fe7746..5e389394512c4 100644 --- a/l10n/ms/viewer.ftl +++ b/l10n/ms/viewer.ftl @@ -283,3 +283,12 @@ pdfjs-web-fonts-disabled = Fon web dinyahdayakan: tidak dapat menggunakan fon te ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/my/viewer.ftl b/l10n/my/viewer.ftl index 0a4ecb5bb7778..50cf34861d4c6 100644 --- a/l10n/my/viewer.ftl +++ b/l10n/my/viewer.ftl @@ -242,3 +242,12 @@ pdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fo ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/nb-NO/viewer.ftl b/l10n/nb-NO/viewer.ftl index 82c9592bdd8b5..f2324859a36b9 100644 --- a/l10n/nb-NO/viewer.ftl +++ b/l10n/nb-NO/viewer.ftl @@ -517,3 +517,12 @@ pdfjs-editor-undo-bar-close-button-label = Lukk ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ne-NP/viewer.ftl b/l10n/ne-NP/viewer.ftl index caa7fae7a6ddd..8d29315de6843 100644 --- a/l10n/ne-NP/viewer.ftl +++ b/l10n/ne-NP/viewer.ftl @@ -270,3 +270,12 @@ pdfjs-web-fonts-disabled = वेब फन्ट असक्षम छन्: ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/nl/viewer.ftl b/l10n/nl/viewer.ftl index 5a8767a14290a..b4b5013275321 100644 --- a/l10n/nl/viewer.ftl +++ b/l10n/nl/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Afbeelding verwijderen pdfjs-editor-remove-highlight-button = .title = Markering verwijderen +pdfjs-editor-remove-signature-button = + .title = Handtekening verwijderen ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Markering verwijderd pdfjs-editor-undo-bar-message-freetext = Tekst verwijderd pdfjs-editor-undo-bar-message-ink = Tekening verwijderd pdfjs-editor-undo-bar-message-stamp = Afbeelding verwijderd +pdfjs-editor-undo-bar-message-signature = Handtekening verwijderd # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +519,63 @@ pdfjs-editor-undo-bar-close-button-label = Sluiten ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Met deze modal kan de gebruiker een handtekening maken om aan een PDF-document toe te voegen. De gebruiker kan de naam (die ook als alternatieve tekst dient) bewerken en optioneel de ondertekening opslaan voor herhaald gebruik. +pdfjs-editor-add-signature-dialog-title = Een handtekening toevoegen ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Typen + .title = Typen +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Tekenen + .title = Tekenen +pdfjs-editor-add-signature-image-button = Afbeelding + .title = Afbeelding ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Uw handtekening typen + .placeholder = Uw handtekening typen +pdfjs-editor-add-signature-draw-placeholder = Uw handtekening tekenen +pdfjs-editor-add-signature-draw-thickness-range-label = Dikte +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Tekendikte: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Sleep bestand hierheen om te uploaden +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Of kies afbeeldingsbestanden + *[other] Of kies afbeeldingsbestanden + } ## Controls +pdfjs-editor-add-signature-description-label = Beschrijving (alternatieve tekst) +pdfjs-editor-add-signature-description-input = + .title = Beschrijving (alternatieve tekst) +pdfjs-editor-add-signature-description-default-when-drawing = Handtekening +pdfjs-editor-add-signature-clear-button-label = Handtekening wissen +pdfjs-editor-add-signature-clear-button = + .title = Handtekening wissen +pdfjs-editor-add-signature-save-checkbox = Handtekening opslaan +pdfjs-editor-add-signature-save-warning-message = U hebt de limiet van 5 opgeslagen handtekeningen bereikt. Verwijder er een om een andere op te slaan. +pdfjs-editor-add-signature-image-upload-error-title = Kan afbeelding niet uploaden +pdfjs-editor-add-signature-image-upload-error-description = Controleer uw netwerkverbinding of probeer een andere afbeelding. +pdfjs-editor-add-signature-error-close-button = Sluiten ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Annuleren +pdfjs-editor-add-signature-add-button = Toevoegen + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/nn-NO/viewer.ftl b/l10n/nn-NO/viewer.ftl index 065bffbd0fd73..e14f432866ea3 100644 --- a/l10n/nn-NO/viewer.ftl +++ b/l10n/nn-NO/viewer.ftl @@ -514,9 +514,24 @@ pdfjs-editor-undo-bar-close-button-label = Lat att ## Tab panels +pdfjs-editor-add-signature-draw-thickness-range-label = Tjukn ## Controls +pdfjs-editor-add-signature-image-upload-error-title = Klarte ikkje å oppdatere bilde +pdfjs-editor-add-signature-error-close-button = Lat att ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Avbryt +pdfjs-editor-add-signature-add-button = Legg til +pdfjs-editor-edit-signature-update-button = Oppdater + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/oc/viewer.ftl b/l10n/oc/viewer.ftl index 27cd7bc8bcdcd..d022f5da1cdc3 100644 --- a/l10n/oc/viewer.ftl +++ b/l10n/oc/viewer.ftl @@ -422,3 +422,12 @@ pdfjs-editor-undo-bar-close-button-label = Tampar ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/pa-IN/viewer.ftl b/l10n/pa-IN/viewer.ftl index 7376d30107a17..83c0f7ea93031 100644 --- a/l10n/pa-IN/viewer.ftl +++ b/l10n/pa-IN/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = ਹਾਈਲਾਈਟ .aria-label = ਹਾਈਲਾਈਟ pdfjs-highlight-floating-button-label = ਹਾਈਲਾਈਟ +pdfjs-editor-signature-button = + .title = ਦਸਤਖ਼ਤ ਜੋੜੋ +pdfjs-editor-signature-button-label = ਦਸਤਖ਼ਤ ਜੋੜੋ ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = ਚਿੱਤਰ ਨੂੰ ਹਟਾਓ pdfjs-editor-remove-highlight-button = .title = ਹਾਈਲਾਈਟ ਨੂੰ ਹਟਾਓ +pdfjs-editor-remove-signature-button = + .title = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = ਚਿੱਤਰ ਜੋੜੋ pdfjs-editor-free-highlight-thickness-input = ਮੋਟਾਈ pdfjs-editor-free-highlight-thickness-title = .title = ਚੀਜ਼ਾਂ ਨੂੰ ਹੋਰ ਲਿਖਤਾਂ ਤੋਂ ਉਘਾੜਨ ਸਮੇਂ ਮੋਟਾਈ ਨੂੰ ਬਦਲੋ +pdfjs-editor-signature-add-signature-button = + .title = ਨਵੇਂ ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ +pdfjs-editor-signature-add-signature-button-label = ਨਵੇਂ ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = ਲਿਖਤ ਐਡੀਟਰ @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = ਹਾਈਲਾਈਟ ਨੂੰ ਹਟ pdfjs-editor-undo-bar-message-freetext = ਲਿਖਤ ਨੂੰ ਹਟਾਇਆ ਗਿਆ pdfjs-editor-undo-bar-message-ink = ਡਰਾਇੰਗ ਨੂੰ ਹਟਾਇਆ ਗਿਆ pdfjs-editor-undo-bar-message-stamp = ਚਿੱਤਰ ਨੂੰ ਹਟਾਇਆ ਗਿਆ +pdfjs-editor-undo-bar-message-signature = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਇਆ # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,69 @@ pdfjs-editor-undo-bar-close-button-label = ਬੰਦ ਕਰੋ ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = ਇਹ ਮਾਡਲ ਵਰਤੋਂਕਾਰ ਨੂੰ PDF ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਜੋੜਨ ਲਈ ਦਸਤਖ਼ਤ ਬਣਾਉਣ ਦਿੰਦਾ ਹੈ। ਵਰਤੋਂਕਾਰ ਨਾਂ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ (ਜੋ ਕਿ ਬਦਲਵੀਂ ਲਿਖਤ ਵਜੋਂ ਕੰਮ ਕਰੇਗਾ) ਅਤੇ ਦੁਬਾਰਾ ਵਰਤੋਂ ਕਰਨ ਲਈ ਦਸਤਖ਼ਤਾਂ ਨੂੰ ਸੰਭਾਲ ਵੀ ਸਕਦਾ ਹੈ। +pdfjs-editor-add-signature-dialog-title = ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = ਕਿਸਮ + .title = ਕਿਸਮ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = ਵਾਹੋ + .title = ਵਾਹੋ +pdfjs-editor-add-signature-image-button = ਚਿੱਤਰ + .title = ਚਿੱਤਰ ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਟਾਈਪ ਕਰੋ + .placeholder = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਟਾਈਪ ਕਰੋ +pdfjs-editor-add-signature-draw-placeholder = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਵਾਹੋ +pdfjs-editor-add-signature-draw-thickness-range-label = ਮੋਟਾਈ +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = ਵਹਾਉਣ ਲਈ ਚੌੜਾਈ: { $thickness } +pdfjs-editor-add-signature-image-placeholder = ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਫ਼ਾਇਲ ਨੂੰ ਇੱਥੇ ਖਿੱਚੋ +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] ਜਾਂ ਚਿੱਤਰ ਫ਼ਾਇਲਾਂ ਨੂੰ ਚੁਣੋ + *[other] ਜਾਂ ਚਿੱਤਰ ਫ਼ਾਇਲਾਂ ਦੀ ਝਲਕ ਵੇਖੋ + } ## Controls +pdfjs-editor-add-signature-description-label = ਵਰਣਨ (ਬਦਲਵੀਂ ਲਿਖਤ) +pdfjs-editor-add-signature-description-input = + .title = ਵਰਣਨ (ਬਦਲਵੀਂ ਲਿਖਤ) +pdfjs-editor-add-signature-description-default-when-drawing = ਦਸਤਖ਼ਤ +pdfjs-editor-add-signature-clear-button-label = ਦਸਤਖ਼ਤ ਨੂੰ ਮਿਟਾਓ +pdfjs-editor-add-signature-clear-button = + .title = ਦਸਤਖ਼ਤ ਨੂੰ ਮਿਟਾਓ +pdfjs-editor-add-signature-save-checkbox = ਦਸਤਖ਼ਤ ਨੂੰ ਸੰਭਾਲੋ +pdfjs-editor-add-signature-save-warning-message = ਤੁਸੀਂ ਵੱਧ ਤੋਂ ਵੱਧ 5 ਸੰਭਾਲੇ ਦਸਤਖ਼ਤਾਂ ਦੀ ਹੱਦ ਤੱਕ ਅੱਪੜੇ। ਹੋਰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਨੂੰ ਹਟਾਓ। +pdfjs-editor-add-signature-image-upload-error-title = ਚਿੱਤਰ ਨੂੰ ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ +pdfjs-editor-add-signature-image-upload-error-description = ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ ਜਾਂ ਹੋਰ ਚਿੱਤਰ ਨੂੰ ਅਜ਼ਮਾਓ। +pdfjs-editor-add-signature-error-close-button = ਬੰਦ ਕਰੋ ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = ਰੱਦ ਕਰੋ +pdfjs-editor-add-signature-add-button = ਜੋੜੋ +pdfjs-editor-edit-signature-update-button = ਅੱਪਡੇਟ + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ +pdfjs-editor-delete-signature-button-label = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = ਵਰਣਨ ਨੂੰ ਸੋਧੋ + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = ਵਰਣਨ ਨੂੰ ਸੋਧੋ diff --git a/l10n/pl/viewer.ftl b/l10n/pl/viewer.ftl index 7d6da2efff6af..8fe75bbd71b45 100644 --- a/l10n/pl/viewer.ftl +++ b/l10n/pl/viewer.ftl @@ -531,3 +531,12 @@ pdfjs-editor-undo-bar-close-button-label = Zamknij ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/pt-BR/viewer.ftl b/l10n/pt-BR/viewer.ftl index 523e9b65b3593..12a662ed85647 100644 --- a/l10n/pt-BR/viewer.ftl +++ b/l10n/pt-BR/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Destaque .aria-label = Destaque pdfjs-highlight-floating-button-label = Destaque +pdfjs-editor-signature-button = + .title = Adicionar assinatura +pdfjs-editor-signature-button-label = Adicionar assinatura ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Adicionar imagem pdfjs-editor-free-highlight-thickness-input = Espessura pdfjs-editor-free-highlight-thickness-title = .title = Mudar espessura ao destacar itens que não são texto +pdfjs-editor-signature-add-signature-button = + .title = Adicionar nova assinatura +pdfjs-editor-signature-add-signature-button-label = Adicionar nova assinatura # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Editor de texto @@ -519,13 +525,14 @@ pdfjs-editor-undo-bar-close-button-label = Fechar ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Esta janela permite ao usuário criar uma assinatura para adicionar a um documento PDF. O usuário pode editar o nome (que também serve como texto alternativo) e, opcionalmente, salvar a assinatura usar novamente. pdfjs-editor-add-signature-dialog-title = Adicionar uma assinatura ## Tab names # Type is a verb (you can type your name as signature) -pdfjs-editor-add-signature-type-button = Tipo - .title = Tipo +pdfjs-editor-add-signature-type-button = Digitar + .title = Digitar # Draw is a verb (you can draw your signature) pdfjs-editor-add-signature-draw-button = Desenhar .title = Desenhar @@ -569,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Fechar pdfjs-editor-add-signature-cancel-button = Cancelar pdfjs-editor-add-signature-add-button = Adicionar +pdfjs-editor-edit-signature-update-button = Atualizar + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Remover assinatura +pdfjs-editor-delete-signature-button-label = Remover assinatura + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Mudar descrição + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Mudar descrição diff --git a/l10n/pt-PT/viewer.ftl b/l10n/pt-PT/viewer.ftl index c653fd3534b5d..5256a11e9e3dc 100644 --- a/l10n/pt-PT/viewer.ftl +++ b/l10n/pt-PT/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Remover imagem pdfjs-editor-remove-highlight-button = .title = Remover destaque +pdfjs-editor-remove-signature-button = + .title = Remover assinatura ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Destaque removido pdfjs-editor-undo-bar-message-freetext = Texto removido pdfjs-editor-undo-bar-message-ink = Desenho removido pdfjs-editor-undo-bar-message-stamp = Imagem removida +pdfjs-editor-undo-bar-message-signature = Assinatura removida # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +519,63 @@ pdfjs-editor-undo-bar-close-button-label = Fechar ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Este modo permite ao utilizador criar uma assinatura para adicionar a um documento PDF. O utilizador pode editar o nome (que também funciona como texto alternativo) e, opcionalmente, guardar a assinatura para utilizações frequentes. +pdfjs-editor-add-signature-dialog-title = Adicionar uma assinatura ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Digitar + .title = Digitar +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Desenhar + .title = Desenhar +pdfjs-editor-add-signature-image-button = Imagem + .title = Imagem ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Digite a sua assinatura + .placeholder = Digite a sua assinatura +pdfjs-editor-add-signature-draw-placeholder = Desenhe a sua assinatura +pdfjs-editor-add-signature-draw-thickness-range-label = Espessura +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Espessura do desenho: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Arraste um ficheiro aqui para carregar +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ou escolha ficheiros de imagem + *[other] Ou explore ficheiros de imagem + } ## Controls +pdfjs-editor-add-signature-description-label = Descrição (texto alternativo) +pdfjs-editor-add-signature-description-input = + .title = Descrição (texto alternativo) +pdfjs-editor-add-signature-description-default-when-drawing = Assinatura +pdfjs-editor-add-signature-clear-button-label = Limpar assinatura +pdfjs-editor-add-signature-clear-button = + .title = Limpar assinatura +pdfjs-editor-add-signature-save-checkbox = Guardar assinatura +pdfjs-editor-add-signature-save-warning-message = Atingiu o limite de 5 assinaturas guardadas. Remova uma para guardar mais. +pdfjs-editor-add-signature-image-upload-error-title = Não foi possível carregar a imagem +pdfjs-editor-add-signature-image-upload-error-description = Verifique a sua ligação à rede ou tente outra imagem. +pdfjs-editor-add-signature-error-close-button = Fechar ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Cancelar +pdfjs-editor-add-signature-add-button = Adicionar + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/rm/viewer.ftl b/l10n/rm/viewer.ftl index 484489d1cfd5a..5a151abefa5f6 100644 --- a/l10n/rm/viewer.ftl +++ b/l10n/rm/viewer.ftl @@ -327,6 +327,8 @@ pdfjs-editor-remove-stamp-button = .title = Allontanar la grafica pdfjs-editor-remove-highlight-button = .title = Allontanar l'emfasa +pdfjs-editor-remove-signature-button = + .title = Allontanar la signatura ## @@ -500,6 +502,7 @@ pdfjs-editor-undo-bar-message-highlight = Allontanà la marcaziun pdfjs-editor-undo-bar-message-freetext = Allontanà il text pdfjs-editor-undo-bar-message-ink = Allontanà il dissegn pdfjs-editor-undo-bar-message-stamp = Allontanà il maletg +pdfjs-editor-undo-bar-message-signature = Allontanà la signatura # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +519,39 @@ pdfjs-editor-undo-bar-close-button-label = Serrar ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Questa fanestra permetta a l’utilisader da crear ina signatura per l’agiuntar ad in document PDF. L’utilisader po modifitgar il num (che serva era sco text alternativ) e memorisar opziunalmain la signatura per l’utilisar anc ina giada en l’avegnir. +pdfjs-editor-add-signature-dialog-title = Agiuntar ina signatura ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Tippar + .title = Tippar +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Dissegnar + .title = Dissegnar +pdfjs-editor-add-signature-image-button = Maletg + .title = Maletg ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Tippa tia signatura + .placeholder = Tippa tia signatura +pdfjs-editor-add-signature-draw-placeholder = Dissegna tia signatura +pdfjs-editor-add-signature-draw-thickness-range-label = Grossezza ## Controls ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ro/viewer.ftl b/l10n/ro/viewer.ftl index 86e5b6b8554af..b0c3e8431e3ea 100644 --- a/l10n/ro/viewer.ftl +++ b/l10n/ro/viewer.ftl @@ -287,3 +287,12 @@ pdfjs-web-fonts-disabled = Fonturile web sunt dezactivate: nu se pot folosi font ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ru/viewer.ftl b/l10n/ru/viewer.ftl index d44342c4d6f19..3011e8cb7c3f7 100644 --- a/l10n/ru/viewer.ftl +++ b/l10n/ru/viewer.ftl @@ -318,6 +318,9 @@ pdfjs-highlight-floating-button1 = .title = Выделение .aria-label = Выделение pdfjs-highlight-floating-button-label = Выделение +pdfjs-editor-signature-button = + .title = Добавить подпись +pdfjs-editor-signature-button-label = Добавить подпись ## Remove button for the various kind of editor. @@ -347,6 +350,9 @@ pdfjs-editor-stamp-add-image-button-label = Добавить изображен pdfjs-editor-free-highlight-thickness-input = Толщина pdfjs-editor-free-highlight-thickness-title = .title = Изменить толщину при выделении элементов, кроме текста +pdfjs-editor-signature-add-signature-button = + .title = Добавить новую подпись +pdfjs-editor-signature-add-signature-button-label = Добавить новую подпись # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Текстовый редактор @@ -573,3 +579,18 @@ pdfjs-editor-add-signature-error-close-button = Закрыть pdfjs-editor-add-signature-cancel-button = Отмена pdfjs-editor-add-signature-add-button = Добавить +pdfjs-editor-edit-signature-update-button = Обновить + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Удалить подпись +pdfjs-editor-delete-signature-button-label = Удалить подпись + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Изменить описание + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Изменить описание diff --git a/l10n/sat/viewer.ftl b/l10n/sat/viewer.ftl index 885b93ad083be..569bf72b8e4c5 100644 --- a/l10n/sat/viewer.ftl +++ b/l10n/sat/viewer.ftl @@ -341,3 +341,12 @@ pdfjs-ink-canvas = ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sc/viewer.ftl b/l10n/sc/viewer.ftl index b9659582a4568..d48b8dd0b50f6 100644 --- a/l10n/sc/viewer.ftl +++ b/l10n/sc/viewer.ftl @@ -380,3 +380,12 @@ pdfjs-editor-alt-text-settings-close-button = Serra ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/scn/viewer.ftl b/l10n/scn/viewer.ftl index 94e0859ddc8d8..510bcbe41508f 100644 --- a/l10n/scn/viewer.ftl +++ b/l10n/scn/viewer.ftl @@ -110,3 +110,12 @@ pdfjs-password-cancel-button = Sfai ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sco/viewer.ftl b/l10n/sco/viewer.ftl index c82bd51a8eae5..8b74e2545830a 100644 --- a/l10n/sco/viewer.ftl +++ b/l10n/sco/viewer.ftl @@ -300,3 +300,12 @@ pdfjs-web-fonts-disabled = Wab fonts are disabled: cannae yaise embeddit PDF fon ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/si/viewer.ftl b/l10n/si/viewer.ftl index 94fab4b76a80d..8018182323a42 100644 --- a/l10n/si/viewer.ftl +++ b/l10n/si/viewer.ftl @@ -287,3 +287,12 @@ pdfjs-editor-alt-text-mark-decorative-description = මෙය දාර හෝ ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sk/viewer.ftl b/l10n/sk/viewer.ftl index 44b2220bafb7e..833291342b7f0 100644 --- a/l10n/sk/viewer.ftl +++ b/l10n/sk/viewer.ftl @@ -576,3 +576,12 @@ pdfjs-editor-add-signature-error-close-button = Zavrieť pdfjs-editor-add-signature-cancel-button = Zrušiť pdfjs-editor-add-signature-add-button = Pridať + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/skr/viewer.ftl b/l10n/skr/viewer.ftl index bbd63793d26ef..7f10336ab6451 100644 --- a/l10n/skr/viewer.ftl +++ b/l10n/skr/viewer.ftl @@ -511,3 +511,12 @@ pdfjs-editor-undo-bar-close-button-label = بند کرو ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sl/viewer.ftl b/l10n/sl/viewer.ftl index 0f06687a0a55a..c427c96153e28 100644 --- a/l10n/sl/viewer.ftl +++ b/l10n/sl/viewer.ftl @@ -320,6 +320,9 @@ pdfjs-highlight-floating-button1 = .title = Označi .aria-label = Označi pdfjs-highlight-floating-button-label = Označi +pdfjs-editor-signature-button = + .title = Dodaj podpis +pdfjs-editor-signature-button-label = Dodaj podpis ## Remove button for the various kind of editor. @@ -331,6 +334,8 @@ pdfjs-editor-remove-stamp-button = .title = Odstrani sliko pdfjs-editor-remove-highlight-button = .title = Odstrani označbo +pdfjs-editor-remove-signature-button = + .title = Odstrani podpis ## @@ -347,6 +352,9 @@ pdfjs-editor-stamp-add-image-button-label = Dodaj sliko pdfjs-editor-free-highlight-thickness-input = Debelina pdfjs-editor-free-highlight-thickness-title = .title = Spremeni debelino pri označevanju nebesedilnih elementov +pdfjs-editor-signature-add-signature-button = + .title = Dodaj nov podpis +pdfjs-editor-signature-add-signature-button-label = Dodaj nov podpis # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Urejevalnik besedila @@ -504,6 +512,7 @@ pdfjs-editor-undo-bar-message-highlight = Označba odstranjena pdfjs-editor-undo-bar-message-freetext = Besedilo odstranjeno pdfjs-editor-undo-bar-message-ink = Risba odstranjena pdfjs-editor-undo-bar-message-stamp = Slika odstranjena +pdfjs-editor-undo-bar-message-signature = Podpis odstranjen # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -522,15 +531,69 @@ pdfjs-editor-undo-bar-close-button-label = Zapri ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Ta način omogoča uporabniku ustvariti podpis, ki ga želi dodati dokumentu PDF. Uporabnik lahko uredi ime (ki se uporablja tudi kot nadomestno besedilo) in podpis po želji shrani za ponovno uporabo. +pdfjs-editor-add-signature-dialog-title = Dodaj podpis ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Natipkaj + .title = Natipkaj +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Nariši + .title = Nariši +pdfjs-editor-add-signature-image-button = Slika + .title = Slika ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Natipkajte svoj podpis + .placeholder = Natipkajte svoj podpis +pdfjs-editor-add-signature-draw-placeholder = Narišite svoj podpis +pdfjs-editor-add-signature-draw-thickness-range-label = Debelina +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Debelina peresa: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Povlecite datoteko sem za nalaganje +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ali prebrskajte slikovne datoteke + *[other] Ali prebrskajte slikovne datoteke + } ## Controls +pdfjs-editor-add-signature-description-label = Opis (nadomestno besedilo) +pdfjs-editor-add-signature-description-input = + .title = Opis (nadomestno besedilo) +pdfjs-editor-add-signature-description-default-when-drawing = Podpis +pdfjs-editor-add-signature-clear-button-label = Pobriši podpis +pdfjs-editor-add-signature-clear-button = + .title = Pobriši podpis +pdfjs-editor-add-signature-save-checkbox = Shrani podpis +pdfjs-editor-add-signature-save-warning-message = Dosegli ste omejitev 5 shranjenih podpisov. Če želite shraniti novega, enega odstranite. +pdfjs-editor-add-signature-image-upload-error-title = Slike ni bilo mogoče naložiti +pdfjs-editor-add-signature-image-upload-error-description = Preverite svojo povezavo z omrežjem ali poskusite z drugo sliko. +pdfjs-editor-add-signature-error-close-button = Zapri ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Prekliči +pdfjs-editor-add-signature-add-button = Dodaj +pdfjs-editor-edit-signature-update-button = Spremeni + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Odstrani podpis +pdfjs-editor-delete-signature-button-label = Odstrani podpis + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Uredi opis + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Uredi opis diff --git a/l10n/son/viewer.ftl b/l10n/son/viewer.ftl index 56134910b0ee2..011870c4ae049 100644 --- a/l10n/son/viewer.ftl +++ b/l10n/son/viewer.ftl @@ -242,3 +242,12 @@ pdfjs-web-fonts-disabled = Interneti šigirawey kay: ši hin ka goy nda PDF šig ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sq/viewer.ftl b/l10n/sq/viewer.ftl index daea36a34c0f3..f98d8da7a808b 100644 --- a/l10n/sq/viewer.ftl +++ b/l10n/sq/viewer.ftl @@ -307,6 +307,9 @@ pdfjs-highlight-floating-button1 = .title = Theksim .aria-label = Theksim pdfjs-highlight-floating-button-label = Theksim +pdfjs-editor-signature-button = + .title = Shtoni nënshkrim +pdfjs-editor-signature-button-label = Shtoni nënshkrim ## Remove button for the various kind of editor. @@ -318,6 +321,8 @@ pdfjs-editor-remove-stamp-button = .title = Hiq figurë pdfjs-editor-remove-highlight-button = .title = Hiqe theksimin +pdfjs-editor-remove-signature-button = + .title = Hiqe nënshkrimin ## @@ -334,6 +339,9 @@ pdfjs-editor-stamp-add-image-button-label = Shtoni figurë pdfjs-editor-free-highlight-thickness-input = Trashësi pdfjs-editor-free-highlight-thickness-title = .title = Ndryshoni trashësinë kur theksoni objekte tjetër nga tekst +pdfjs-editor-signature-add-signature-button = + .title = Shtoni nënshkrim të ri +pdfjs-editor-signature-add-signature-button-label = Shtoni nënshkrim të ri # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Përpunues Tekstesh @@ -491,6 +499,7 @@ pdfjs-editor-undo-bar-message-highlight = U hoq theksimi pdfjs-editor-undo-bar-message-freetext = U hoq tekst pdfjs-editor-undo-bar-message-ink = U hoq vizatim pdfjs-editor-undo-bar-message-stamp = U hoq figurë +pdfjs-editor-undo-bar-message-signature = Nënshkrimi u hoq # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -507,15 +516,69 @@ pdfjs-editor-undo-bar-close-button-label = Mbylle ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Kjo dritare modale i lejon përdoruesit të krijojë një nënshkrim për ta shtuar te një dokument PDF. Përdoruesi mund të përpunojë emrin (i cili shërben edhe si tekst alternativ) dhe, nëse do, ta ruajë nënshkrimin, për ta përdorur prapë. +pdfjs-editor-add-signature-dialog-title = Shtoni një nënshkrim ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Lloj + .title = Lloj +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Vizatoni + .title = Vizatoni +pdfjs-editor-add-signature-image-button = Figurë + .title = Figurë ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Shtypni nënshkrimin tuaj + .placeholder = Shtypni nënshkrimin tuaj +pdfjs-editor-add-signature-draw-placeholder = Vizatoni nënshkrimin tuaj +pdfjs-editor-add-signature-draw-thickness-range-label = Trashësi +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Trashësi vizatimi: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Tërhiqni këtu një kartelë për ngarkim +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Ose zgjidhni kartelë figure + *[other] Ose zgjidhni kartelë figure + } ## Controls +pdfjs-editor-add-signature-description-label = Përshkrim (tekst alternativ) +pdfjs-editor-add-signature-description-input = + .title = Përshkrim (tekst alternativ) +pdfjs-editor-add-signature-description-default-when-drawing = Nënshkrim +pdfjs-editor-add-signature-clear-button-label = Spastroje nënshkrimin +pdfjs-editor-add-signature-clear-button = + .title = Spastroje nënshkrimin +pdfjs-editor-add-signature-save-checkbox = Ruaje nënshkrimin +pdfjs-editor-add-signature-save-warning-message = Keni mbërritur në kufirin e 5 nënshkrimeve të ruajtura. Që të ruani tjetër, hiqni një. +pdfjs-editor-add-signature-image-upload-error-title = S’u ngarkua dot figurë +pdfjs-editor-add-signature-image-upload-error-description = Kontrolloni lidhjen tuaj në rrjet, ose provoni figurë tjetër. +pdfjs-editor-add-signature-error-close-button = Mbylle ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Anuloje +pdfjs-editor-add-signature-add-button = Shtoje +pdfjs-editor-edit-signature-update-button = Përditësoje + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Hiqe nënshkrimin +pdfjs-editor-delete-signature-button-label = Hiqe nënshkrimin + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Përpunoni përshkrimin + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Përpunoni përshkrimin diff --git a/l10n/sr/viewer.ftl b/l10n/sr/viewer.ftl index f30a8660f0384..a30caaeecaef0 100644 --- a/l10n/sr/viewer.ftl +++ b/l10n/sr/viewer.ftl @@ -437,3 +437,12 @@ pdfjs-editor-new-alt-text-not-now-button = Не сада ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/sv-SE/viewer.ftl b/l10n/sv-SE/viewer.ftl index b57f8c394745e..e2a3de11b8266 100644 --- a/l10n/sv-SE/viewer.ftl +++ b/l10n/sv-SE/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Markera .aria-label = Markera pdfjs-highlight-floating-button-label = Markera +pdfjs-editor-signature-button = + .title = Lägg till signatur +pdfjs-editor-signature-button-label = Lägg till signatur ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Lägg till bild pdfjs-editor-free-highlight-thickness-input = Tjocklek pdfjs-editor-free-highlight-thickness-title = .title = Ändra tjocklek när du markerar andra objekt än text +pdfjs-editor-signature-add-signature-button = + .title = Lägg till ny signatur +pdfjs-editor-signature-add-signature-button-label = Lägg till ny signatur # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Textredigerare @@ -570,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Stäng pdfjs-editor-add-signature-cancel-button = Avbryt pdfjs-editor-add-signature-add-button = Lägg till +pdfjs-editor-edit-signature-update-button = Uppdatera + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Ta bort signatur +pdfjs-editor-delete-signature-button-label = Ta bort signatur + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Redigera beskrivning + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Redigera beskrivning diff --git a/l10n/szl/viewer.ftl b/l10n/szl/viewer.ftl index 87f85b35b7b5c..6f9274fb2c57d 100644 --- a/l10n/szl/viewer.ftl +++ b/l10n/szl/viewer.ftl @@ -293,3 +293,12 @@ pdfjs-web-fonts-disabled = Necowe fōnty sōm zastawiōne: niy idzie użyć wklu ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ta/viewer.ftl b/l10n/ta/viewer.ftl index f724b4dfb990e..9edf9e8b63ce5 100644 --- a/l10n/ta/viewer.ftl +++ b/l10n/ta/viewer.ftl @@ -259,3 +259,12 @@ pdfjs-web-fonts-disabled = வலை எழுத்துருக்கள் ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/te/viewer.ftl b/l10n/te/viewer.ftl index a44cecb69f6fd..173f97f820ef6 100644 --- a/l10n/te/viewer.ftl +++ b/l10n/te/viewer.ftl @@ -275,3 +275,12 @@ pdfjs-editor-ink-opacity-input = అకిరణ్యత ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/tg/viewer.ftl b/l10n/tg/viewer.ftl index f9364936a7db2..4d9669c098d03 100644 --- a/l10n/tg/viewer.ftl +++ b/l10n/tg/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Ҷудокунӣ .aria-label = Ҷудокунӣ pdfjs-highlight-floating-button-label = Ҷудокунӣ +pdfjs-editor-signature-button = + .title = Илова кардани имзо +pdfjs-editor-signature-button-label = Илова кардани имзо ## Remove button for the various kind of editor. @@ -345,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Илова кардани тасви pdfjs-editor-free-highlight-thickness-input = Ғафсӣ pdfjs-editor-free-highlight-thickness-title = .title = Иваз кардани ғафсӣ ҳангоми ҷудокунии унсурҳо ба ғайр аз матн +pdfjs-editor-signature-add-signature-button = + .title = Илова кардани имзои нав +pdfjs-editor-signature-add-signature-button-label = Илова кардани имзои нав # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Муҳаррири матн @@ -519,6 +525,7 @@ pdfjs-editor-undo-bar-close-button-label = Пӯшидан ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Ин равзанаи зоҳирӣ ба корбар имкон медиҳад, ки тавонад имзоеро эҷод карда, ба ҳуҷҷати «PDF» илова намояд. Корбар метавонад номро таҳрир кунад (ном, инчунин, ҳамчун матни иловагӣ хизмат мекунад), ва ихтиёран имзоро барои истифодаи такрорӣ нигоҳ медорад. pdfjs-editor-add-signature-dialog-title = Илова кардани имзо ## Tab names @@ -560,6 +567,7 @@ pdfjs-editor-add-signature-clear-button-label = Пок кардани имзо pdfjs-editor-add-signature-clear-button = .title = Пок кардани имзо pdfjs-editor-add-signature-save-checkbox = Нигоҳ доштани имзо +pdfjs-editor-add-signature-save-warning-message = Шумо ба ҳадди 5 имзои нигоҳдошташуда расидед. Барои нигоҳ доштани имзои нав, яке аз имзоҳои нигоҳдошташударо тоза намоед. pdfjs-editor-add-signature-image-upload-error-title = Тасвир бор карда нашуд pdfjs-editor-add-signature-image-upload-error-description = Пайвастшавии шабакаи худро санҷед ё тасвири дигареро кӯшиш кунед. pdfjs-editor-add-signature-error-close-button = Пӯшидан @@ -568,3 +576,18 @@ pdfjs-editor-add-signature-error-close-button = Пӯшидан pdfjs-editor-add-signature-cancel-button = Бекор кардан pdfjs-editor-add-signature-add-button = Илова кардан +pdfjs-editor-edit-signature-update-button = Навсозӣ кардан + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Тоза кардани имзо +pdfjs-editor-delete-signature-button-label = Тоза кардани имзо + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Таҳрир кардани тавсиф + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Таҳрир кардани тавсиф diff --git a/l10n/th/viewer.ftl b/l10n/th/viewer.ftl index d8692721d7d58..d7d24c641e2e1 100644 --- a/l10n/th/viewer.ftl +++ b/l10n/th/viewer.ftl @@ -319,6 +319,8 @@ pdfjs-editor-remove-stamp-button = .title = เอาภาพออก pdfjs-editor-remove-highlight-button = .title = เอาการเน้นสีออก +pdfjs-editor-remove-signature-button = + .title = ลบลายเซ็น ## @@ -492,6 +494,7 @@ pdfjs-editor-undo-bar-message-highlight = เอาการเน้นสี pdfjs-editor-undo-bar-message-freetext = เอาข้อความออกแล้ว pdfjs-editor-undo-bar-message-ink = เอาภาพวาดออกแล้ว pdfjs-editor-undo-bar-message-stamp = เอาภาพออกแล้ว +pdfjs-editor-undo-bar-message-signature = ลบลายเซ็นแล้ว # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = เอาคำอธิบายประกอบ { $count } รายการออกแล้ว @@ -504,15 +507,63 @@ pdfjs-editor-undo-bar-close-button-label = ปิด ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = โมดัลนี้ช่วยให้ผู้ใช้สามารถสร้างลายเซ็นเพื่อใช้เพิ่มลงในเอกสาร PDF ได้ ผู้ใช้สามารถแก้ไขชื่อ (ซึ่งใช้เป็นข้อความทดแทนได้ด้วย) และสามารถเลือกบันทึกลายเซ็นเพื่อใช้งานซ้ำได้ +pdfjs-editor-add-signature-dialog-title = เพิ่มลายเซ็น ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = พิมพ์ + .title = พิมพ์ +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = วาด + .title = วาด +pdfjs-editor-add-signature-image-button = ภาพ + .title = ภาพ ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = พิมพ์ลายเซ็นของคุณ + .placeholder = พิมพ์ลายเซ็นของคุณ +pdfjs-editor-add-signature-draw-placeholder = วาดลายเซ็นของคุณ +pdfjs-editor-add-signature-draw-thickness-range-label = ความหนา +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = ความหนาของการวาด: { $thickness } +pdfjs-editor-add-signature-image-placeholder = ลากไฟล์มาที่นี่เพื่ออัปโหลด +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] หรือเลือกไฟล์ภาพ + *[other] หรือเรียกดูไฟล์ภาพ + } ## Controls +pdfjs-editor-add-signature-description-label = คำอธิบาย (ข้อความทดแทน) +pdfjs-editor-add-signature-description-input = + .title = คำอธิบาย (ข้อความทดแทน) +pdfjs-editor-add-signature-description-default-when-drawing = ลายเซ็น +pdfjs-editor-add-signature-clear-button-label = ล้างลายเซ็น +pdfjs-editor-add-signature-clear-button = + .title = ล้างลายเซ็น +pdfjs-editor-add-signature-save-checkbox = บันทึกลายเซ็น +pdfjs-editor-add-signature-save-warning-message = คุณมีลายเซ็นที่บันทึกถึงจำนวนสูงสุด 5 รายการแล้ว โปรดลบรายการหนึ่งออกเมื่อจะบันทึกเพิ่ม +pdfjs-editor-add-signature-image-upload-error-title = ไม่สามารถอัปโหลดภาพได้ +pdfjs-editor-add-signature-image-upload-error-description = ตรวจสอบการเชื่อมต่อเครือข่ายของคุณหรือลองใช้ภาพอื่น +pdfjs-editor-add-signature-error-close-button = ปิด ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = ยกเลิก +pdfjs-editor-add-signature-add-button = เพิ่ม + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/tl/viewer.ftl b/l10n/tl/viewer.ftl index eda4fd740e717..f70000148e72e 100644 --- a/l10n/tl/viewer.ftl +++ b/l10n/tl/viewer.ftl @@ -293,3 +293,12 @@ pdfjs-web-fonts-disabled = Naka-disable ang mga Web font: hindi kayang gamitin a ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/tr/viewer.ftl b/l10n/tr/viewer.ftl index be4e257d229af..baef8fee40611 100644 --- a/l10n/tr/viewer.ftl +++ b/l10n/tr/viewer.ftl @@ -316,6 +316,9 @@ pdfjs-highlight-floating-button1 = .title = Vurgula .aria-label = Vurgula pdfjs-highlight-floating-button-label = Vurgula +pdfjs-editor-signature-button = + .title = İmza ekle +pdfjs-editor-signature-button-label = İmza ekle ## Remove button for the various kind of editor. @@ -327,6 +330,8 @@ pdfjs-editor-remove-stamp-button = .title = Resmi kaldır pdfjs-editor-remove-highlight-button = .title = Vurgulamayı kaldır +pdfjs-editor-remove-signature-button = + .title = İmzayı kaldır ## @@ -343,6 +348,9 @@ pdfjs-editor-stamp-add-image-button-label = Resim ekle pdfjs-editor-free-highlight-thickness-input = Kalınlık pdfjs-editor-free-highlight-thickness-title = .title = Metin dışındaki öğeleri vurgularken kalınlığı değiştir +pdfjs-editor-signature-add-signature-button = + .title = Yeni imza ekle +pdfjs-editor-signature-add-signature-button-label = Yeni imza ekle # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Metin düzenleyicisi @@ -500,6 +508,7 @@ pdfjs-editor-undo-bar-message-highlight = Vurgulama silindi pdfjs-editor-undo-bar-message-freetext = Metin silindi pdfjs-editor-undo-bar-message-ink = Çizim silindi pdfjs-editor-undo-bar-message-stamp = Görsel silindi +pdfjs-editor-undo-bar-message-signature = İmza kaldırıldı # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = @@ -516,15 +525,68 @@ pdfjs-editor-undo-bar-close-button-label = Kapat ## Add a signature dialog +pdfjs-editor-add-signature-dialog-title = İmza ekle ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Yaz + .title = Yaz +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Çiz + .title = Çiz +pdfjs-editor-add-signature-image-button = Resim + .title = Resim ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = İmzanızı yazın + .placeholder = İmzanızı yazın +pdfjs-editor-add-signature-draw-placeholder = İmzanızı çizin +pdfjs-editor-add-signature-draw-thickness-range-label = Kalınlık +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Çizgi kalınlığı: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Yüklenecek dosyayı buraya sürükleyin +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Veya resim dosyalarına göz atın + *[other] Veya resim dosyalarına göz atın + } ## Controls +pdfjs-editor-add-signature-description-label = Açıklama (alt metin) +pdfjs-editor-add-signature-description-input = + .title = Açıklama (alt metin) +pdfjs-editor-add-signature-description-default-when-drawing = İmza +pdfjs-editor-add-signature-clear-button-label = İmzayı temizle +pdfjs-editor-add-signature-clear-button = + .title = İmzayı temizle +pdfjs-editor-add-signature-save-checkbox = İmzayı kaydet +pdfjs-editor-add-signature-save-warning-message = Kayıtlı 5 imza sınırına ulaştınız. Daha fazla imza kaydetmek için imzalardan birini kaldırın. +pdfjs-editor-add-signature-image-upload-error-title = Resim yüklenemedi +pdfjs-editor-add-signature-image-upload-error-description = Ağ bağlantınızı kontrol edin veya başka bir resim deneyin. +pdfjs-editor-add-signature-error-close-button = Kapat ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Vazgeç +pdfjs-editor-add-signature-add-button = Ekle +pdfjs-editor-edit-signature-update-button = Güncelle + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = İmzayı kaldır +pdfjs-editor-delete-signature-button-label = İmzayı kaldır + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Açıklamayı düzenle + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Açıklamayı düzenle diff --git a/l10n/trs/viewer.ftl b/l10n/trs/viewer.ftl index 142c147e421e2..2b4c44b24d74e 100644 --- a/l10n/trs/viewer.ftl +++ b/l10n/trs/viewer.ftl @@ -233,3 +233,12 @@ pdfjs-password-cancel-button = Duyichin' ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/uk/viewer.ftl b/l10n/uk/viewer.ftl index 8f394c17cf27d..1c4d302d053cf 100644 --- a/l10n/uk/viewer.ftl +++ b/l10n/uk/viewer.ftl @@ -531,3 +531,12 @@ pdfjs-editor-undo-bar-close-button-label = Закрити ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/ur/viewer.ftl b/l10n/ur/viewer.ftl index b6a73d52c59bd..9d657d4162994 100644 --- a/l10n/ur/viewer.ftl +++ b/l10n/ur/viewer.ftl @@ -284,3 +284,12 @@ pdfjs-web-fonts-disabled = ویب فانٹ نا اہل ہیں: شامل PDF فا ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/uz/viewer.ftl b/l10n/uz/viewer.ftl index 9c6d79314c3ac..3a9448d3ddbca 100644 --- a/l10n/uz/viewer.ftl +++ b/l10n/uz/viewer.ftl @@ -223,3 +223,12 @@ pdfjs-web-fonts-disabled = Veb shriftlar oʻchirilgan: ichki PDF shriftlardan fo ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/vi/viewer.ftl b/l10n/vi/viewer.ftl index 96dcfab409d03..4f4334b498c03 100644 --- a/l10n/vi/viewer.ftl +++ b/l10n/vi/viewer.ftl @@ -308,6 +308,9 @@ pdfjs-highlight-floating-button1 = .title = Đánh dấu .aria-label = Đánh dấu pdfjs-highlight-floating-button-label = Đánh dấu +pdfjs-editor-signature-button = + .title = Thêm chữ ký +pdfjs-editor-signature-button-label = Thêm chữ ký ## Remove button for the various kind of editor. @@ -319,6 +322,8 @@ pdfjs-editor-remove-stamp-button = .title = Xóa ảnh pdfjs-editor-remove-highlight-button = .title = Xóa phần đánh dấu +pdfjs-editor-remove-signature-button = + .title = Xoá chữ ký ## @@ -335,6 +340,9 @@ pdfjs-editor-stamp-add-image-button-label = Thêm hình ảnh pdfjs-editor-free-highlight-thickness-input = Độ dày pdfjs-editor-free-highlight-thickness-title = .title = Thay đổi độ dày khi đánh dấu các mục không phải là văn bản +pdfjs-editor-signature-add-signature-button = + .title = Thêm chữ ký mới +pdfjs-editor-signature-add-signature-button-label = Thêm chữ ký mới # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = Trình chỉnh sửa văn bản @@ -492,6 +500,7 @@ pdfjs-editor-undo-bar-message-highlight = Đã xóa đánh dấu pdfjs-editor-undo-bar-message-freetext = Đã xóa văn bản pdfjs-editor-undo-bar-message-ink = Đã xóa bản vẽ pdfjs-editor-undo-bar-message-stamp = Đã xóa hình ảnh +pdfjs-editor-undo-bar-message-signature = Chữ ký đã bị xoá # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = { $count } chú thích đã bị xóa @@ -504,15 +513,69 @@ pdfjs-editor-undo-bar-close-button-label = Đóng ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = Phương thức này cho phép người dùng tạo một chữ ký để thêm vào tài liệu PDF. Người dùng có thể chỉnh sửa tên (cũng đóng vai trò là văn bản thay thế) và tùy chọn lưu chữ ký để sử dụng nhiều lần. +pdfjs-editor-add-signature-dialog-title = Thêm chữ ký ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = Loại + .title = Loại +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = Vẽ + .title = Vẽ +pdfjs-editor-add-signature-image-button = Hình ảnh + .title = Hình ảnh ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = Nhập chữ ký của bạn + .placeholder = Nhập chữ ký của bạn +pdfjs-editor-add-signature-draw-placeholder = Vẽ chữ ký của bạn +pdfjs-editor-add-signature-draw-thickness-range-label = Độ dày +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = Độ dày bút vẽ: { $thickness } +pdfjs-editor-add-signature-image-placeholder = Kéo một tập tin tại đây để tải lên +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] Hoặc chọn hình ảnh + *[other] Hoặc chọn hình ảnh + } ## Controls +pdfjs-editor-add-signature-description-label = Mô tả (văn bản thay thế) +pdfjs-editor-add-signature-description-input = + .title = Mô tả (văn bản thay thế) +pdfjs-editor-add-signature-description-default-when-drawing = Chữ ký +pdfjs-editor-add-signature-clear-button-label = Xoá chữ ký +pdfjs-editor-add-signature-clear-button = + .title = Xoá chữ ký +pdfjs-editor-add-signature-save-checkbox = Lưu chữ ký +pdfjs-editor-add-signature-save-warning-message = Bạn đã đạt đến giới hạn 5 chữ ký đã lưu. Hãy xóa một cái để lưu thêm. +pdfjs-editor-add-signature-image-upload-error-title = Không thể tải lên hình ảnh +pdfjs-editor-add-signature-image-upload-error-description = Kiểm tra kết nối mạng của bạn hoặc thử hình ảnh khác. +pdfjs-editor-add-signature-error-close-button = Đóng ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = Hủy bỏ +pdfjs-editor-add-signature-add-button = Thêm +pdfjs-editor-edit-signature-update-button = Cập nhật + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = Xoá chữ ký +pdfjs-editor-delete-signature-button-label = Xoá chữ ký + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = Chỉnh sửa mô tả + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = Chỉnh sửa mô tả diff --git a/l10n/wo/viewer.ftl b/l10n/wo/viewer.ftl index dc761d741880b..b926e914282a2 100644 --- a/l10n/wo/viewer.ftl +++ b/l10n/wo/viewer.ftl @@ -163,3 +163,12 @@ pdfjs-password-cancel-button = Neenal ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/xh/viewer.ftl b/l10n/xh/viewer.ftl index d46e910cfc9dd..02702259f4047 100644 --- a/l10n/xh/viewer.ftl +++ b/l10n/xh/viewer.ftl @@ -248,3 +248,12 @@ pdfjs-web-fonts-disabled = Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa ## Dialog buttons + +## Main menu for adding/removing signatures + + +## Editor toolbar + + +## Edit signature description dialog + diff --git a/l10n/zh-CN/viewer.ftl b/l10n/zh-CN/viewer.ftl index 94f32c292e2aa..e983ad17c137f 100644 --- a/l10n/zh-CN/viewer.ftl +++ b/l10n/zh-CN/viewer.ftl @@ -308,6 +308,9 @@ pdfjs-highlight-floating-button1 = .title = 高亮 .aria-label = 高亮 pdfjs-highlight-floating-button-label = 高亮 +pdfjs-editor-signature-button = + .title = 添加签名 +pdfjs-editor-signature-button-label = 添加签名 ## Remove button for the various kind of editor. @@ -319,6 +322,8 @@ pdfjs-editor-remove-stamp-button = .title = 移除图像 pdfjs-editor-remove-highlight-button = .title = 移除高亮 +pdfjs-editor-remove-signature-button = + .title = 移除签名 ## @@ -335,6 +340,9 @@ pdfjs-editor-stamp-add-image-button-label = 添加图像 pdfjs-editor-free-highlight-thickness-input = 粗细 pdfjs-editor-free-highlight-thickness-title = .title = 更改高亮粗细(用于文本以外项目) +pdfjs-editor-signature-add-signature-button = + .title = 添加新签名 +pdfjs-editor-signature-add-signature-button-label = 添加新签名 # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = 文本编辑器 @@ -492,6 +500,7 @@ pdfjs-editor-undo-bar-message-highlight = 已移除高亮 pdfjs-editor-undo-bar-message-freetext = 已移除文本 pdfjs-editor-undo-bar-message-ink = 已移除绘图 pdfjs-editor-undo-bar-message-stamp = 已移除图像 +pdfjs-editor-undo-bar-message-signature = 签名已移除 # Variables: # $count (Number) - the number of removed annotations. pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 条注释 @@ -504,15 +513,69 @@ pdfjs-editor-undo-bar-close-button-label = 关闭 ## Add a signature dialog +pdfjs-editor-add-signature-dialog-label = 用户可通过此模态对话框创建要添加到 PDF 文档中的签名、编辑其名称(同时用作替换文字),并可保存签名以便重复使用。 +pdfjs-editor-add-signature-dialog-title = 添加签名 ## Tab names +# Type is a verb (you can type your name as signature) +pdfjs-editor-add-signature-type-button = 键入 + .title = 键入 +# Draw is a verb (you can draw your signature) +pdfjs-editor-add-signature-draw-button = 绘制 + .title = 绘制 +pdfjs-editor-add-signature-image-button = 图像 + .title = 图像 ## Tab panels +pdfjs-editor-add-signature-type-input = + .aria-label = 键入签名 + .placeholder = 键入签名 +pdfjs-editor-add-signature-draw-placeholder = 绘制签名 +pdfjs-editor-add-signature-draw-thickness-range-label = 粗细 +# Variables: +# $thickness (Number) - the thickness (in pixels) of the line used to draw a signature. +pdfjs-editor-add-signature-draw-thickness-range = + .title = 笔画粗细:{ $thickness } +pdfjs-editor-add-signature-image-placeholder = 拖放文件到此处以上传 +pdfjs-editor-add-signature-image-browse-link = + { PLATFORM() -> + [macos] 或选取图像文件 + *[other] 或浏览图像文件 + } ## Controls +pdfjs-editor-add-signature-description-label = 描述(替换文字) +pdfjs-editor-add-signature-description-input = + .title = 描述(替换文字) +pdfjs-editor-add-signature-description-default-when-drawing = 签名 +pdfjs-editor-add-signature-clear-button-label = 清除签名 +pdfjs-editor-add-signature-clear-button = + .title = 清除签名 +pdfjs-editor-add-signature-save-checkbox = 保存签名 +pdfjs-editor-add-signature-save-warning-message = 最多可保存 5 个签名,请移除一个以继续保存。 +pdfjs-editor-add-signature-image-upload-error-title = 无法上传图像 +pdfjs-editor-add-signature-image-upload-error-description = 请检查网络连接,或尝试上传其他图像。 +pdfjs-editor-add-signature-error-close-button = 关闭 ## Dialog buttons +pdfjs-editor-add-signature-cancel-button = 取消 +pdfjs-editor-add-signature-add-button = 添加 +pdfjs-editor-edit-signature-update-button = 更新 + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = 移除签名 +pdfjs-editor-delete-signature-button-label = 移除签名 + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = 编辑说明 + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = 编辑说明 diff --git a/l10n/zh-TW/viewer.ftl b/l10n/zh-TW/viewer.ftl index 65d7309bd2238..84f898311c74d 100644 --- a/l10n/zh-TW/viewer.ftl +++ b/l10n/zh-TW/viewer.ftl @@ -308,6 +308,9 @@ pdfjs-highlight-floating-button1 = .title = 強調 .aria-label = 強調 pdfjs-highlight-floating-button-label = 強調 +pdfjs-editor-signature-button = + .title = 加入簽名 +pdfjs-editor-signature-button-label = 加入簽名 ## Remove button for the various kind of editor. @@ -337,6 +340,9 @@ pdfjs-editor-stamp-add-image-button-label = 新增圖片 pdfjs-editor-free-highlight-thickness-input = 線條粗細 pdfjs-editor-free-highlight-thickness-title = .title = 更改強調文字以外的項目時的線條粗細 +pdfjs-editor-signature-add-signature-button = + .title = 新增簽名 +pdfjs-editor-signature-add-signature-button-label = 新增簽章 # .default-content is used as a placeholder in an empty text editor. pdfjs-free-text2 = .aria-label = 文字編輯器 @@ -558,3 +564,18 @@ pdfjs-editor-add-signature-error-close-button = 關閉 pdfjs-editor-add-signature-cancel-button = 取消 pdfjs-editor-add-signature-add-button = 新增 +pdfjs-editor-edit-signature-update-button = 更新 + +## Main menu for adding/removing signatures + +pdfjs-editor-delete-signature-button = + .title = 移除簽章 +pdfjs-editor-delete-signature-button-label = 移除簽章 + +## Editor toolbar + +pdfjs-editor-add-signature-edit-button-label = 編輯描述 + +## Edit signature description dialog + +pdfjs-editor-edit-signature-dialog-title = 編輯描述 From cfe6e27dbf8a3cca91697a982b6da0b68e6bcf53 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:37:42 +0100 Subject: [PATCH 304/338] Remove the `waitForEditorMovedInDOM` helper function export It's no longer used outside of `test_utils.mjs` since commit 301f1bb. --- test/integration/test_utils.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index b89d0feaef454..0f4a879e6d94c 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -933,7 +933,6 @@ export { waitAndClick, waitForAnnotationEditorLayer, waitForAnnotationModeChanged, - waitForEditorMovedInDOM, waitForEntryInStorage, waitForEvent, waitForNoElement, From b60be3b47c10f405902edb181e151ea5b5bca20c Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:39:42 +0100 Subject: [PATCH 305/338] Deduplicate the `getXY` helper function in the highlight editor integration tests The helper function is available in `test_utils.mjs` since commit 301f1bb, so by exporting it there it can be reused. --- test/integration/highlight_editor_spec.mjs | 6 +----- test/integration/test_utils.mjs | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 9ced1cf5032ea..e24698ca5b906 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -22,6 +22,7 @@ import { getRect, getSerialized, getSpanRectFromText, + getXY, kbBigMoveLeft, kbBigMoveUp, kbFocusNext, @@ -60,11 +61,6 @@ const waitForPointerUp = page => const switchToHighlight = switchToEditor.bind(null, "Highlight"); -const getXY = async (page, selector) => { - const rect = await getRect(page, selector); - return `${rect.x}::${rect.y}`; -}; - describe("Highlight Editor", () => { describe("Editor must be removed without exception", () => { let pages; diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 0f4a879e6d94c..68761f18718a2 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -901,6 +901,7 @@ export { getSelector, getSerialized, getSpanRectFromText, + getXY, hover, isCanvasWhite, isVisible, From c579935040fd9860ce0a8c36e1e8857d4b747667 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 19:03:29 +0100 Subject: [PATCH 306/338] Deduplicate the `waitForPointerUp` helper function in the highlight editor integration tests The helper function is available in `test_utils.mjs` since commit 3fe55ba, so we can remove the local copy by importing it. --- test/integration/highlight_editor_spec.mjs | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index e24698ca5b906..6241195d2ce97 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -16,7 +16,6 @@ import { awaitPromise, closePages, - createPromise, getEditorSelector, getFirstSerialized, getRect, @@ -37,6 +36,7 @@ import { unselectEditor, waitAndClick, waitForAnnotationModeChanged, + waitForPointerUp, waitForSelectedEditor, waitForSerialized, waitForTimeout, @@ -54,11 +54,6 @@ const selectAll = async page => { ); }; -const waitForPointerUp = page => - createPromise(page, resolve => { - window.addEventListener("pointerup", resolve, { once: true }); - }); - const switchToHighlight = switchToEditor.bind(null, "Highlight"); describe("Highlight Editor", () => { From a05dd12716b382d787f369e4ec753d9b8dd33fc9 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:49:14 +0100 Subject: [PATCH 307/338] Introduce a generic `selectEditors` helper function This replaces the various copies of this logic with a single helper that we template for each editor type, similar to what we already do for the `switchToEditor` helper. --- test/integration/freetext_editor_spec.mjs | 9 ++------- test/integration/highlight_editor_spec.mjs | 9 ++------- test/integration/ink_editor_spec.mjs | 9 ++------- test/integration/stamp_editor_spec.mjs | 9 ++------- test/integration/test_utils.mjs | 8 ++++++++ 5 files changed, 16 insertions(+), 28 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 404e24eb96ba5..9056ca2224888 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -37,7 +37,6 @@ import { kbModifierDown, kbModifierUp, kbRedo, - kbSelectAll, kbUndo, loadAndWait, moveEditor, @@ -45,6 +44,7 @@ import { pasteFromClipboard, scrollIntoView, selectEditor, + selectEditors, switchToEditor, unselectEditor, waitForAnnotationEditorLayer, @@ -57,12 +57,7 @@ import { } from "./test_utils.mjs"; import { PNG } from "pngjs"; -const selectAll = async page => { - await kbSelectAll(page); - await page.waitForFunction( - () => !document.querySelector(".freeTextEditor:not(.selectedEditor)") - ); -}; +const selectAll = selectEditors.bind(null, "freeText"); const clearAll = async page => { await selectAll(page); diff --git a/test/integration/highlight_editor_spec.mjs b/test/integration/highlight_editor_spec.mjs index 6241195d2ce97..f9d4199c20dda 100644 --- a/test/integration/highlight_editor_spec.mjs +++ b/test/integration/highlight_editor_spec.mjs @@ -27,10 +27,10 @@ import { kbFocusNext, kbFocusPrevious, kbSave, - kbSelectAll, kbUndo, loadAndWait, scrollIntoView, + selectEditors, setCaretAt, switchToEditor, unselectEditor, @@ -47,12 +47,7 @@ import path from "path"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const selectAll = async page => { - await kbSelectAll(page); - await page.waitForFunction( - () => !document.querySelector(".highlightEditor:not(.selectedEditor)") - ); -}; +const selectAll = selectEditors.bind(null, "highlight"); const switchToHighlight = switchToEditor.bind(null, "Highlight"); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index 2e927231f4d13..a9de1bd3edb6e 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -24,12 +24,12 @@ import { getSerialized, isCanvasWhite, kbRedo, - kbSelectAll, kbUndo, loadAndWait, moveEditor, scrollIntoView, selectEditor, + selectEditors, switchToEditor, waitForAnnotationModeChanged, waitForNoElement, @@ -40,12 +40,7 @@ import { waitForTimeout, } from "./test_utils.mjs"; -const selectAll = async page => { - await kbSelectAll(page); - await page.waitForFunction( - () => !document.querySelector(".inkEditor.disabled:not(.selectedEditor)") - ); -}; +const selectAll = selectEditors.bind(null, "ink"); const clearAll = async page => { await selectAll(page); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index be37802309cf3..8f319ba75a06e 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -32,13 +32,13 @@ import { isVisible, kbBigMoveDown, kbBigMoveRight, - kbSelectAll, kbUndo, loadAndWait, paste, pasteFromClipboard, scrollIntoView, selectEditor, + selectEditors, serializeBitmapDimensions, switchToEditor, unselectEditor, @@ -57,12 +57,7 @@ import { PNG } from "pngjs"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const selectAll = async page => { - await kbSelectAll(page); - await page.waitForFunction( - () => !document.querySelector(".stampEditor:not(.selectedEditor)") - ); -}; +const selectAll = selectEditors.bind(null, "stamp"); const clearAll = async page => { await selectAll(page); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index 68761f18718a2..d204a59d37311 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -809,6 +809,13 @@ async function switchToEditor(name, page, disable = false) { await awaitPromise(modeChangedHandle); } +async function selectEditors(name, page) { + await kbSelectAll(page); + await page.waitForFunction( + () => !document.querySelector(`.${name}Editor:not(.selectedEditor)`) + ); +} + function waitForNoElement(page, selector) { return page.waitForFunction( sel => !document.querySelector(sel), @@ -927,6 +934,7 @@ export { pasteFromClipboard, scrollIntoView, selectEditor, + selectEditors, serializeBitmapDimensions, setCaretAt, switchToEditor, From 029c550399b10c226aef296cd19abb9412f99e5e Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Sun, 23 Feb 2025 18:52:19 +0100 Subject: [PATCH 308/338] Introduce a generic `clearEditors` helper function This replaces the various copies of this logic with a single helper that we template for each editor type, similar to what we already do for the `switchToEditor` helper. --- test/integration/freetext_editor_spec.mjs | 9 ++------- test/integration/ink_editor_spec.mjs | 7 ++----- test/integration/stamp_editor_spec.mjs | 11 ++--------- test/integration/test_utils.mjs | 7 +++++++ 4 files changed, 13 insertions(+), 21 deletions(-) diff --git a/test/integration/freetext_editor_spec.mjs b/test/integration/freetext_editor_spec.mjs index 9056ca2224888..29c24a4871133 100644 --- a/test/integration/freetext_editor_spec.mjs +++ b/test/integration/freetext_editor_spec.mjs @@ -15,6 +15,7 @@ import { awaitPromise, + clearEditors, closePages, copy, copyToClipboard, @@ -59,13 +60,7 @@ import { PNG } from "pngjs"; const selectAll = selectEditors.bind(null, "freeText"); -const clearAll = async page => { - await selectAll(page); - await page.keyboard.down("Control"); - await page.keyboard.press("Backspace"); - await page.keyboard.up("Control"); - await waitForStorageEntries(page, 0); -}; +const clearAll = clearEditors.bind(null, "freeText"); const commit = async page => { await page.keyboard.press("Escape"); diff --git a/test/integration/ink_editor_spec.mjs b/test/integration/ink_editor_spec.mjs index a9de1bd3edb6e..ea6634a5a2db3 100644 --- a/test/integration/ink_editor_spec.mjs +++ b/test/integration/ink_editor_spec.mjs @@ -15,6 +15,7 @@ import { awaitPromise, + clearEditors, closePages, dragAndDrop, getAnnotationSelector, @@ -42,11 +43,7 @@ import { const selectAll = selectEditors.bind(null, "ink"); -const clearAll = async page => { - await selectAll(page); - await page.keyboard.press("Backspace"); - await waitForStorageEntries(page, 0); -}; +const clearAll = clearEditors.bind(null, "ink"); const commit = async page => { await page.keyboard.press("Escape"); diff --git a/test/integration/stamp_editor_spec.mjs b/test/integration/stamp_editor_spec.mjs index 8f319ba75a06e..fbd153762d7e2 100644 --- a/test/integration/stamp_editor_spec.mjs +++ b/test/integration/stamp_editor_spec.mjs @@ -17,6 +17,7 @@ import { applyFunctionToEditor, awaitPromise, cleanupEditing, + clearEditors, clearInput, closePages, copy, @@ -38,7 +39,6 @@ import { pasteFromClipboard, scrollIntoView, selectEditor, - selectEditors, serializeBitmapDimensions, switchToEditor, unselectEditor, @@ -47,7 +47,6 @@ import { waitForEntryInStorage, waitForSelectedEditor, waitForSerialized, - waitForStorageEntries, waitForTimeout, } from "./test_utils.mjs"; import { fileURLToPath } from "url"; @@ -57,13 +56,7 @@ import { PNG } from "pngjs"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const selectAll = selectEditors.bind(null, "stamp"); - -const clearAll = async page => { - await selectAll(page); - await page.keyboard.press("Backspace"); - await waitForStorageEntries(page, 0); -}; +const clearAll = clearEditors.bind(null, "stamp"); const waitForImage = async (page, selector) => { await page.waitForSelector(`${selector} canvas`); diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index d204a59d37311..bd0af5f56612f 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -816,6 +816,12 @@ async function selectEditors(name, page) { ); } +async function clearEditors(name, page) { + await selectEditors(name, page); + await page.keyboard.press("Backspace"); + await waitForStorageEntries(page, 0); +} + function waitForNoElement(page, selector) { return page.waitForFunction( sel => !document.querySelector(sel), @@ -888,6 +894,7 @@ export { applyFunctionToEditor, awaitPromise, cleanupEditing, + clearEditors, clearInput, closePages, closeSinglePage, From f30c0c45cbc28cb0edadb5ac8a1900f84b576cb7 Mon Sep 17 00:00:00 2001 From: Hector Rincon Date: Sun, 23 Feb 2025 15:15:11 -0800 Subject: [PATCH 309/338] Fix the link for issue5939.pdf Web archive no longer has the revision for the saved PDF referenced in that test case, so this updates that link to a more recent revision to enable the tests to run on a clean clone. --- test/pdfs/issue5939.pdf.link | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/pdfs/issue5939.pdf.link b/test/pdfs/issue5939.pdf.link index 5fd510ed69b23..f4167f77ab2cc 100644 --- a/test/pdfs/issue5939.pdf.link +++ b/test/pdfs/issue5939.pdf.link @@ -1 +1 @@ -https://web.archive.org/web/20150613184455/https://www.usenix.org/system/files/login/articles/login_apr15_02_grosvenor_041315.pdf +https://web.archive.org/web/20250128144709/https://www.usenix.org/system/files/login/articles/login_apr15_02_grosvenor_041315.pdf From 80bc34c24cc85152541a72bf55ef7b9c41b092e2 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Sat, 22 Feb 2025 19:20:05 +0100 Subject: [PATCH 310/338] [Editor] Shift the signature editor when pasted The idea is to avoid to have the pasted editor hidding the copied one: the user could think that nothing happened. So the top-left corner of the pasted one is moved to the bottom-right corner of the copied one. --- src/display/editor/draw.js | 10 ++++++++++ src/display/editor/editor.js | 14 ++++++++++++++ src/display/editor/freetext.js | 12 ++++-------- src/display/editor/ink.js | 1 + src/display/editor/signature.js | 15 +++++++++++++++ src/display/editor/stamp.js | 14 ++++---------- test/integration/signature_editor_spec.mjs | 20 ++++---------------- 7 files changed, 52 insertions(+), 34 deletions(-) diff --git a/src/display/editor/draw.js b/src/display/editor/draw.js index e63240a7296fd..e8c2e8ba46442 100644 --- a/src/display/editor/draw.js +++ b/src/display/editor/draw.js @@ -628,6 +628,12 @@ class DrawingEditor extends AnnotationEditor { return this.div; } + let baseX, baseY; + if (this._isCopy) { + baseX = this.x; + baseY = this.y; + } + const div = super.render(); div.classList.add("draw"); @@ -640,6 +646,10 @@ class DrawingEditor extends AnnotationEditor { this._uiManager.addShouldRescale(this); this.disableEditing(); + if (this._isCopy) { + this._moveAfterPaste(baseX, baseY); + } + return div; } diff --git a/src/display/editor/editor.js b/src/display/editor/editor.js index a9f03f8463fc7..5ffa85d5a8417 100644 --- a/src/display/editor/editor.js +++ b/src/display/editor/editor.js @@ -85,6 +85,8 @@ class AnnotationEditor { #touchManager = null; + _isCopy = false; + _editToolbar = null; _initialOptions = Object.create(null); @@ -442,6 +444,17 @@ class AnnotationEditor { this.fixAndSetPosition(); } + _moveAfterPaste(baseX, baseY) { + const [parentWidth, parentHeight] = this.parentDimensions; + this.setAt( + baseX * parentWidth, + baseY * parentHeight, + this.width * parentWidth, + this.height * parentHeight + ); + this._onTranslated(); + } + #translate([width, height], x, y) { [x, y] = this.screenToPageTranslation(x, y); @@ -1597,6 +1610,7 @@ class AnnotationEditor { }); editor.rotation = data.rotation; editor.#accessibilityData = data.accessibilityData; + editor._isCopy = data.isCopy || false; const [pageWidth, pageHeight] = editor.pageDimensions; const [x, y, width, height] = editor.getRectInCurrentCoords( diff --git a/src/display/editor/freetext.js b/src/display/editor/freetext.js index 9700d902dc0d1..e17b5c3486a04 100644 --- a/src/display/editor/freetext.js +++ b/src/display/editor/freetext.js @@ -553,7 +553,7 @@ class FreeTextEditor extends AnnotationEditor { } let baseX, baseY; - if (this.width) { + if (this._isCopy || this.annotationElementId) { baseX = this.x; baseY = this.y; } @@ -581,7 +581,7 @@ class FreeTextEditor extends AnnotationEditor { bindEvents(this, this.div, ["dblclick", "keydown"]); - if (this.width) { + if (this._isCopy || this.annotationElementId) { // This editor was created in using copy (ctrl+c). const [parentWidth, parentHeight] = this.parentDimensions; if (this.annotationElementId) { @@ -627,12 +627,7 @@ class FreeTextEditor extends AnnotationEditor { } this.setAt(posX * parentWidth, posY * parentHeight, tx, ty); } else { - this.setAt( - baseX * parentWidth, - baseY * parentHeight, - this.width * parentWidth, - this.height * parentHeight - ); + this._moveAfterPaste(baseX, baseY); } this.#setContent(); @@ -847,6 +842,7 @@ class FreeTextEditor extends AnnotationEditor { if (isForCopying) { // Don't add the id when copying because the pasted editor mustn't be // linked to an existing annotation. + serialized.isCopy = true; return serialized; } diff --git a/src/display/editor/ink.js b/src/display/editor/ink.js index 63c1e28c12be5..a3062bd030064 100644 --- a/src/display/editor/ink.js +++ b/src/display/editor/ink.js @@ -246,6 +246,7 @@ class InkEditor extends DrawingEditor { }; if (isForCopying) { + serialized.isCopy = true; return serialized; } diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index c6f7c4eb7ecf9..2892141c7103f 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -130,6 +130,15 @@ class SignatureEditor extends DrawingEditor { return this.div; } + let baseX, baseY; + const { _isCopy } = this; + if (_isCopy) { + // No need to adjust the position when rendering in DrawingEditor. + this._isCopy = false; + baseX = this.x; + baseY = this.y; + } + super.render(); this.div.setAttribute("role", "figure"); @@ -163,6 +172,11 @@ class SignatureEditor extends DrawingEditor { } } + if (_isCopy) { + this._isCopy = true; + this._moveAfterPaste(baseX, baseY); + } + return this.div; } @@ -348,6 +362,7 @@ class SignatureEditor extends DrawingEditor { if (isForCopying) { serialized.paths = { lines, points }; serialized.uuid = this.#signatureUUID; + serialized.isCopy = true; } else { serialized.lines = lines; } diff --git a/src/display/editor/stamp.js b/src/display/editor/stamp.js index c6b8586bdee3d..28b4270754b7e 100644 --- a/src/display/editor/stamp.js +++ b/src/display/editor/stamp.js @@ -346,7 +346,7 @@ class StampEditor extends AnnotationEditor { } let baseX, baseY; - if (this.width) { + if (this._isCopy) { baseX = this.x; baseY = this.y; } @@ -365,15 +365,8 @@ class StampEditor extends AnnotationEditor { } } - if (this.width && !this.annotationElementId) { - // This editor was created in using copy (ctrl+c). - const [parentWidth, parentHeight] = this.parentDimensions; - this.setAt( - baseX * parentWidth, - baseY * parentHeight, - this.width * parentWidth, - this.height * parentHeight - ); + if (this._isCopy) { + this._moveAfterPaste(baseX, baseY); } this._uiManager.addShouldRescale(this); @@ -854,6 +847,7 @@ class StampEditor extends AnnotationEditor { // hence we serialize the bitmap to a data url. serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true); serialized.accessibilityData = this.serializeAltText(true); + serialized.isCopy = true; return serialized; } diff --git a/test/integration/signature_editor_spec.mjs b/test/integration/signature_editor_spec.mjs index 708baf81fe616..45bfde375d006 100644 --- a/test/integration/signature_editor_spec.mjs +++ b/test/integration/signature_editor_spec.mjs @@ -348,13 +348,7 @@ describe("Signature Editor", () => { const editorSelector = getEditorSelector(0); await page.waitForSelector(editorSelector, { visible: true }); - await page.waitForSelector( - `.canvasWrapper > svg use[href="#path_p1_0"]`, - { visible: true } - ); - const originalPath = await page.$eval("#path_p1_0", el => - el.getAttribute("d") - ); + const originalRect = await getRect(page, editorSelector); const originalDescription = await page.$eval( `${editorSelector} .altText.editDescription`, el => el.title @@ -365,21 +359,15 @@ describe("Signature Editor", () => { const pastedEditorSelector = getEditorSelector(1); await page.waitForSelector(pastedEditorSelector, { visible: true }); - await page.waitForSelector( - `.canvasWrapper > svg use[href="#path_p1_1"]`, - { visible: true } - ); - const pastedPath = await page.$eval("#path_p1_1", el => - el.getAttribute("d") - ); + const pastedRect = await getRect(page, pastedEditorSelector); const pastedDescription = await page.$eval( `${pastedEditorSelector} .altText.editDescription`, el => el.title ); - expect(pastedPath) + expect(pastedRect) .withContext(`In ${browserName}`) - .toEqual(originalPath); + .not.toEqual(originalRect); expect(pastedDescription) .withContext(`In ${browserName}`) .toEqual(originalDescription); From ab58c2d70f610bce4cd55eddabb5236d6cfd214e Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 24 Feb 2025 16:05:19 +0100 Subject: [PATCH 311/338] Add a comment 'THIS FILE IS GENERATED - DO NOT EDIT' in openjpeg files generated with emscripten --- external/openjpeg/openjpeg.js | 1 + external/openjpeg/openjpeg_nowasm_fallback.js | 1 + 2 files changed, 2 insertions(+) diff --git a/external/openjpeg/openjpeg.js b/external/openjpeg/openjpeg.js index 940a250f051c5..535c2539c0284 100644 --- a/external/openjpeg/openjpeg.js +++ b/external/openjpeg/openjpeg.js @@ -1,3 +1,4 @@ +/* THIS FILE IS GENERATED - DO NOT EDIT */ var OpenJPEG = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; diff --git a/external/openjpeg/openjpeg_nowasm_fallback.js b/external/openjpeg/openjpeg_nowasm_fallback.js index 1460947d7ebcc..0ac13e000eff1 100644 --- a/external/openjpeg/openjpeg_nowasm_fallback.js +++ b/external/openjpeg/openjpeg_nowasm_fallback.js @@ -1,3 +1,4 @@ +/* THIS FILE IS GENERATED - DO NOT EDIT */ var OpenJPEG = (() => { var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined; From 2d9552ce386862234c8bce1fc1bc54e06d441dde Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 24 Feb 2025 15:58:25 +0100 Subject: [PATCH 312/338] Fix the `assert` in `FontLoader.prototype.loadSystemFont` Currently this `assert` isn't actually doing what it's supposed to, since the `FontLoader`-class doesn't have a `disableFontFace`-field. The `FontFaceObject`-class on the other hand has such a field, hence we update the method-signature to be able to check the intended thing. --- src/display/font_loader.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 06efa39e2ee87..069fec1199bea 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -80,12 +80,16 @@ class FontLoader { } } - async loadSystemFont({ systemFontInfo: info, _inspectFont }) { + async loadSystemFont({ + systemFontInfo: info, + disableFontFace, + _inspectFont, + }) { if (!info || this.#systemFonts.has(info.loadedName)) { return; } assert( - !this.disableFontFace, + !disableFontFace, "loadSystemFont shouldn't be called when `disableFontFace` is set." ); From 5b2024d5f855ff6669bb94d70dbe8bf1c3312b0f Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Mon, 24 Feb 2025 19:50:40 +0100 Subject: [PATCH 313/338] [Editor] Add some telemetry for the signature editor (bug 1945827) --- src/display/editor/signature.js | 24 ++++++++++ web/firefoxcom.js | 6 ++- web/generic_signature_storage.js | 6 ++- web/signature_manager.js | 80 ++++++++++++++++++++++++++------ 4 files changed, 100 insertions(+), 16 deletions(-) diff --git a/src/display/editor/signature.js b/src/display/editor/signature.js index 2892141c7103f..6671f51bdae1e 100644 --- a/src/display/editor/signature.js +++ b/src/display/editor/signature.js @@ -111,6 +111,22 @@ class SignatureEditor extends DrawingEditor { return false; } + /** @inheritdoc */ + get telemetryFinalData() { + return { + type: "signature", + hasDescription: !!this.#description, + }; + } + + static computeTelemetryFinalData(data) { + const hasDescriptionStats = data.get("hasDescription"); + return { + hasAltText: hasDescriptionStats.get(true) ?? 0, + hasNoAltText: hasDescriptionStats.get(false) ?? 0, + }; + } + /** @inheritdoc */ get isResizable() { return true; @@ -279,6 +295,14 @@ class SignatureEditor extends DrawingEditor { this._uiManager.addToAnnotationStorage(this); this.setUuid(uuid); + this._reportTelemetry({ + action: "pdfjs.signature.inserted", + data: { + hasBeenSaved: !!uuid, + hasDescription: !!description, + }, + }); + this.div.hidden = false; } diff --git a/web/firefoxcom.js b/web/firefoxcom.js index 72f246ac2a1d5..40ff9e0c22459 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -537,7 +537,11 @@ class SignatureStorage { async isFull() { // We want to store at most 5 signatures. - return (await this.getAll()).size === 5; + return (await this.size()) === 5; + } + + async size() { + return (await this.getAll()).size; } async create(data) { diff --git a/web/generic_signature_storage.js b/web/generic_signature_storage.js index da19933461749..7f5f6bcf923d0 100644 --- a/web/generic_signature_storage.js +++ b/web/generic_signature_storage.js @@ -70,7 +70,11 @@ class SignatureStorage { async isFull() { // Only allow 5 signatures to be saved. - return (await this.getAll()).size === 5; + return (await this.size()) === 5; + } + + async size() { + return (await this.getAll()).size; } async create(data) { diff --git a/web/signature_manager.js b/web/signature_manager.js index a7f732b11e0b2..6012482b59ef7 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -176,6 +176,12 @@ class SignatureManager { clearButton.addEventListener( "click", () => { + this.#reportTelemetry({ + action: "pdfjs.signature.clear", + data: { + type: this.#currentTab, + }, + }); this.#initTab(null); }, { passive: true } @@ -253,7 +259,9 @@ class SignatureManager { #resetCommon() { this.#hasDescriptionChanged = false; this.#description.value = ""; - this.#tabsToAltText.set(this.#currentTab, ""); + if (this.#currentTab) { + this.#tabsToAltText.get(this.#currentTab).value = ""; + } } #resetTab(name) { @@ -283,7 +291,7 @@ class SignatureManager { return; } if (this.#currentTab) { - this.#tabsToAltText.set(this.#currentTab, this.#description.value); + this.#tabsToAltText.get(this.#currentTab).value = this.#description.value; } if (name) { this.#currentTab = name; @@ -294,7 +302,7 @@ class SignatureManager { if (reset) { this.#resetCommon(); } else { - this.#description.value = this.#tabsToAltText.get(this.#currentTab); + this.#description.value = this.#tabsToAltText.get(this.#currentTab).value; } this.#clearDescription.disabled = this.#description.value === ""; this.#currentTabAC?.abort(); @@ -335,7 +343,8 @@ class SignatureManager { () => { const { value } = this.#typeInput; if (!this.#hasDescriptionChanged) { - this.#description.value = value; + this.#tabsToAltText.get("type").default = this.#description.value = + value; this.#clearDescription.disabled = value === ""; } this.#disableButtons(value); @@ -398,6 +407,7 @@ class SignatureManager { this.#l10n .get(SignatureManager.#l10nDescription.signature) .then(description => { + this.#tabsToAltText.get("draw").default = description; this.#description.value ||= description; this.#clearDescription.disabled = this.#description.value === ""; }); @@ -609,6 +619,7 @@ class SignatureManager { this.#imageSVG.setAttribute("preserveAspectRatio", "xMidYMid meet"); this.#imageSVG.append(path); path.setAttribute("d", outline.toSVGPath()); + this.#tabsToAltText.get("image").default = file.name; if (this.#description.value === "") { this.#description.value = file.name || ""; this.#clearDescription.disabled = this.#description.value === ""; @@ -633,6 +644,16 @@ class SignatureManager { ); } + #reportTelemetry(data) { + this.#eventBus.dispatch("reporttelemetry", { + source: this, + details: { + type: "editing", + data, + }, + }); + } + #addToolbarButton(signatureData, uuid, description) { const { curves, areContours, thickness, width, height } = signatureData; const maxDim = Math.max(width, height); @@ -716,6 +737,12 @@ class SignatureManager { deleteButton.addEventListener("click", async () => { if (await this.#signatureStorage.delete(uuid)) { div.remove(); + this.#reportTelemetry({ + action: "pdfjs.signature.delete_saved", + data: { + savedCount: await this.#signatureStorage.size(), + }, + }); } }); const deleteSpan = document.createElement("span"); @@ -805,7 +832,7 @@ class SignatureManager { async open({ uiManager, editor }) { this.#tabsToAltText ||= new Map( - this.#tabButtons.keys().map(name => [name, ""]) + this.#tabButtons.keys().map(name => [name, { value: "", default: "" }]) ); this.#uiManager = uiManager; this.#currentEditor = editor; @@ -851,7 +878,8 @@ class SignatureManager { async #add() { let data; - switch (this.#currentTab) { + const type = this.#currentTab; + switch (type) { case "type": data = this.#getOutlineForType(); break; @@ -863,8 +891,8 @@ class SignatureManager { break; } let uuid = null; + const description = this.#description.value; if (this.#saveCheckbox.checked) { - const description = this.#description.value; const { newCurves, areContours, thickness, width, height } = data; const signatureData = await SignatureExtractor.compressSignature({ outlines: newCurves, @@ -893,6 +921,18 @@ class SignatureManager { console.warn("SignatureManager.add: cannot save the signature."); } } + + const altText = this.#tabsToAltText.get(type); + this.#reportTelemetry({ + action: "pdfjs.signature.created", + data: { + type, + saved: !!uuid, + savedCount: await this.#signatureStorage.size(), + descriptionChanged: description !== altText.default, + }, + }); + this.#currentEditor.addSignature( data, DEFAULT_HEIGHT_IN_PAGE, @@ -940,7 +980,7 @@ class EditDescriptionDialog { e.preventDefault(); } }); - cancelButton.addEventListener("click", this.#finish.bind(this)); + cancelButton.addEventListener("click", this.#cancel.bind(this)); updateButton.addEventListener("click", this.#update.bind(this)); const clearDescription = description.lastElementChild; @@ -983,12 +1023,24 @@ class EditDescriptionDialog { } async #update() { - const description = this.#description.value; - if (this.#previousDescription === description) { - this.#finish(); - return; - } - this.#currentEditor.description = description; + // The description has been changed because the button isn't disabled. + this.#currentEditor._reportTelemetry({ + action: "pdfjs.signature.edit_description", + data: { + hasBeenChanged: true, + }, + }); + this.#currentEditor.description = this.#description.value; + this.#finish(); + } + + #cancel() { + this.#currentEditor._reportTelemetry({ + action: "pdfjs.signature.edit_description", + data: { + hasBeenChanged: false, + }, + }); this.#finish(); } From 372cf8206cbaf756d073bef9c84e2e80b02ed313 Mon Sep 17 00:00:00 2001 From: Ross Johnson Date: Mon, 24 Feb 2025 12:52:08 -0600 Subject: [PATCH 314/338] Fix decryption of R=4, V=4 files with < 16-byte keys by 0-padding - undocumented but matches Acrobat behavior (issue #19484) --- src/core/crypto.js | 9 ++++++++- test/pdfs/.gitignore | 2 ++ test/pdfs/issue19484_1.pdf | Bin 0 -> 47688 bytes test/pdfs/issue19484_2.pdf | Bin 0 -> 47196 bytes test/test_manifest.json | 16 ++++++++++++++++ 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19484_1.pdf create mode 100644 test/pdfs/issue19484_2.pdf diff --git a/src/core/crypto.js b/src/core/crypto.js index 5c95a7b531ebe..89daf30b2cc3c 100644 --- a/src/core/crypto.js +++ b/src/core/crypto.js @@ -1787,7 +1787,14 @@ class CipherTransformFactory { ); } - this.encryptionKey = encryptionKey; + if (algorithm === 4 && encryptionKey.length < 16) { + // Extend key to 16 byte minimum (undocumented), + // fixes issue19484_1.pdf and issue19484_2.pdf. + this.encryptionKey = new Uint8Array(16); + this.encryptionKey.set(encryptionKey); + } else { + this.encryptionKey = encryptionKey; + } if (algorithm >= 4) { const cf = dict.get("CF"); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index c3ff64116501a..9d415b91c684e 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -106,6 +106,7 @@ !issue9084.pdf !issue12963.pdf !issue9105_reduced.pdf +!issue19484_2.pdf !issue9105_other.pdf !issue9252.pdf !issue9262_reduced.pdf @@ -481,6 +482,7 @@ !openoffice.pdf !js-buttons.pdf !issue7014.pdf +!issue19484_1.pdf !issue8187.pdf !annotation-link-text-popup.pdf !issue9278.pdf diff --git a/test/pdfs/issue19484_1.pdf b/test/pdfs/issue19484_1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2e8a37de01e6b62ca19ce9ff72985eee0f5ebc3b GIT binary patch literal 47688 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

3+6JP7 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 ee=rtw(msDY9lawqR_wjz8e_~c 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 oNk@l Date: Tue, 25 Feb 2025 16:29:49 +0100 Subject: [PATCH 315/338] Reset `#renderError` on `RenderingCancelledException` (PR 19128 follow-up) This restores the behaviour that existed prior to PR 19128, see e.g. https://github.com/mozilla/pdf.js/blob/8727a04ae588545c8e954c143b9fc64384712461/web/pdf_page_view.js#L908-L911, since `RenderingCancelledException` should still overwrite any previously seen Error. --- web/base_pdf_page_view.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/web/base_pdf_page_view.js b/web/base_pdf_page_view.js index 42546f83d997d..fa37052a6e670 100644 --- a/web/base_pdf_page_view.js +++ b/web/base_pdf_page_view.js @@ -169,16 +169,18 @@ class BasePDFPageView { await renderTask.promise; this.#showCanvas?.(true); } catch (e) { - error = e; // When zooming with a `drawingDelay` set, avoid temporarily showing // a black canvas if rendering was cancelled before the `onContinue`- // callback had been invoked at least once. - if (error instanceof RenderingCancelledException) { + if (e instanceof RenderingCancelledException) { return; } + error = e; this.#showCanvas?.(true); } finally { + this.#renderError = error; + // The renderTask may have been replaced by a new one, so only remove // the reference to the renderTask if it matches the one that is // triggering this callback. @@ -186,8 +188,6 @@ class BasePDFPageView { this.renderTask = null; } } - this.#renderError = error; - this.renderingState = RenderingStates.FINISHED; onFinish(renderTask); From 02d9d3ca666cafc1a5f5978b5739e57ea5c9dace Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 23 Feb 2025 17:32:20 +0100 Subject: [PATCH 316/338] Send `disableFontFace` and `fontExtraProperties` as part of the exported font-data These options are needed in the `FontFaceObject` class, and indirectly in `FontLoader` as well, which means that we currently need to pass them around manually in the API. Given that the options are (obviously) available on the worker-thread, it's very easy to just provide them when creating `Font`-instances and then send them as part of the exported font-data. This way we're able to simplify the code (primarily on the main-thread), and note that `Font`-instances even had a `disableFontFace`-field already (but it wasn't properly initialized). --- src/core/evaluator.js | 9 ++--- src/core/fonts.js | 20 +++++----- src/display/api.js | 14 ++----- src/display/font_loader.js | 15 +++++--- test/font/font_fpgm_spec.js | 27 +++++++------ test/font/font_os2_spec.js | 52 +++++++++++++++---------- test/font/font_post_spec.js | 77 ++++++++++++++++++++++--------------- 7 files changed, 120 insertions(+), 94 deletions(-) diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 2f9e6897e6dc3..4c63dc7d77d17 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1086,8 +1086,7 @@ class PartialEvaluator { if ( isAddToPathSet || state.fillColorSpace.name === "Pattern" || - font.disableFontFace || - this.options.disableFontFace + font.disableFontFace ) { PartialEvaluator.buildFontPaths( font, @@ -4367,7 +4366,7 @@ class PartialEvaluator { newProperties ); } - return new Font(baseFontName, file, newProperties); + return new Font(baseFontName, file, newProperties, this.options); } } @@ -4559,7 +4558,7 @@ class PartialEvaluator { const newProperties = await this.extractDataStructures(dict, properties); this.extractWidths(dict, descriptor, newProperties); - return new Font(fontName.name, fontFile, newProperties); + return new Font(fontName.name, fontFile, newProperties, this.options); } static buildFontPaths(font, glyphs, handler, evaluatorOptions) { @@ -4626,7 +4625,7 @@ class TranslatedFont { handler.send("commonobj", [ this.loadedName, "Font", - this.font.exportData(this._evaluatorOptions.fontExtraProperties), + this.font.exportData(), ]); } diff --git a/src/core/fonts.js b/src/core/fonts.js index 3769c88a6d147..a57a3762b6233 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -88,7 +88,9 @@ const EXPORT_DATA_PROPERTIES = [ "defaultVMetrics", "defaultWidth", "descent", + "disableFontFace", "fallbackName", + "fontExtraProperties", "fontMatrix", "isInvalidPDFjsFont", "isType3Font", @@ -970,11 +972,12 @@ function createNameTable(name, proto) { * decoding logics whatever type it is (assuming the font type is supported). */ class Font { - constructor(name, file, properties) { + constructor(name, file, properties, evaluatorOptions) { this.name = name; this.psName = null; this.mimetype = null; - this.disableFontFace = false; + this.disableFontFace = evaluatorOptions.disableFontFace; + this.fontExtraProperties = evaluatorOptions.fontExtraProperties; this.loadedName = properties.loadedName; this.isType3Font = properties.isType3Font; @@ -1141,18 +1144,17 @@ class Font { return shadow(this, "renderer", renderer); } - exportData(extraProperties = false) { - const exportDataProperties = extraProperties + exportData() { + const exportDataProps = this.fontExtraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES; const data = Object.create(null); - let property, value; - for (property of exportDataProperties) { - value = this[property]; + for (const prop of exportDataProps) { + const value = this[prop]; // Ignore properties that haven't been explicitly set. if (value !== undefined) { - data[property] = value; + data[prop] = value; } } return data; @@ -3602,7 +3604,7 @@ class ErrorFont { return [chars]; } - exportData(extraProperties = false) { + exportData() { return { error: this.error }; } } diff --git a/src/display/api.js b/src/display/api.js index 99ee4ba0615a2..d5aff8bc9d09a 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -422,8 +422,6 @@ function getDocument(src = {}) { }, }; const transportParams = { - disableFontFace, - fontExtraProperties, ownerDocument, pdfBug, styleElement, @@ -2787,8 +2785,6 @@ class WorkerTransport { switch (type) { case "Font": - const { disableFontFace, fontExtraProperties, pdfBug } = this._params; - if ("error" in exportedData) { const exportedError = exportedData.error; warn(`Error during font loading: ${exportedError}`); @@ -2797,20 +2793,16 @@ class WorkerTransport { } const inspectFont = - pdfBug && globalThis.FontInspector?.enabled + this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null; - const font = new FontFaceObject(exportedData, { - disableFontFace, - fontExtraProperties, - inspectFont, - }); + const font = new FontFaceObject(exportedData, inspectFont); this.fontLoader .bind(font) .catch(() => messageHandler.sendWithPromise("FontFallback", { id })) .finally(() => { - if (!fontExtraProperties && font.data) { + if (!font.fontExtraProperties && font.data) { // Immediately release the `font.data` property once the font // has been attached to the DOM, since it's no longer needed, // rather than waiting for a `PDFDocumentProxy.cleanup` call. diff --git a/src/display/font_loader.js b/src/display/font_loader.js index 069fec1199bea..e41357fcee0be 100644 --- a/src/display/font_loader.js +++ b/src/display/font_loader.js @@ -355,17 +355,20 @@ class FontLoader { } class FontFaceObject { - constructor( - translatedData, - { disableFontFace = false, fontExtraProperties = false, inspectFont = null } - ) { + constructor(translatedData, inspectFont = null) { this.compiledGlyphs = Object.create(null); // importing translated data for (const i in translatedData) { this[i] = translatedData[i]; } - this.disableFontFace = disableFontFace === true; - this.fontExtraProperties = fontExtraProperties === true; + if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { + if (typeof this.disableFontFace !== "boolean") { + unreachable("disableFontFace must be available."); + } + if (typeof this.fontExtraProperties !== "boolean") { + unreachable("fontExtraProperties must be available."); + } + } this._inspectFont = inspectFont; } diff --git a/test/font/font_fpgm_spec.js b/test/font/font_fpgm_spec.js index 66ca8752bac49..45501608e9759 100644 --- a/test/font/font_fpgm_spec.js +++ b/test/font/font_fpgm_spec.js @@ -16,17 +16,22 @@ describe("font_fpgm", function () { const cMap = await CMapFactory.create({ encoding: Name.get("Identity-H"), }); - const font = new Font("font", new Stream(font2324), { - loadedName: "font", - type: "CIDFontType2", - differences: [], - defaultEncoding: [], - cMap, - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font2324), + { + loadedName: "font", + type: "CIDFontType2", + differences: [], + defaultEncoding: [], + cMap, + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); diff --git a/test/font/font_os2_spec.js b/test/font/font_os2_spec.js index 04359d316067d..d348a6b4ca3ac 100644 --- a/test/font/font_os2_spec.js +++ b/test/font/font_os2_spec.js @@ -17,16 +17,21 @@ describe("font_post", function () { describe("OS/2 table removal on bad post table values", function () { it("has invalid version number", async function () { - const font = new Font("font", new Stream(font2154), { - loadedName: "font", - type: "TrueType", - differences: [], - defaultEncoding: [], - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font2154), + { + loadedName: "font", + type: "TrueType", + differences: [], + defaultEncoding: [], + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); @@ -39,17 +44,22 @@ describe("font_post", function () { const cMap = await CMapFactory.create({ encoding: Name.get("Identity-H"), }); - const font = new Font("font", new Stream(font1282), { - loadedName: "font", - type: "CIDFontType2", - differences: [], - defaultEncoding: [], - cMap, - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font1282), + { + loadedName: "font", + type: "CIDFontType2", + differences: [], + defaultEncoding: [], + cMap, + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); diff --git a/test/font/font_post_spec.js b/test/font/font_post_spec.js index d00ddcdbe615f..116d7716951d0 100644 --- a/test/font/font_post_spec.js +++ b/test/font/font_post_spec.js @@ -24,17 +24,22 @@ describe("font_post", function () { const cMap = await CMapFactory.create({ encoding: Name.get("Identity-H"), }); - const font = new Font("font", new Stream(font2109), { - loadedName: "font", - type: "CIDFontType2", - differences: [], - defaultEncoding: [], - cMap, - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font2109), + { + loadedName: "font", + type: "CIDFontType2", + differences: [], + defaultEncoding: [], + cMap, + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); @@ -42,16 +47,21 @@ describe("font_post", function () { }); it("has invalid glyph name indexes", async function () { - const font = new Font("font", new Stream(font2189), { - loadedName: "font", - type: "TrueType", - differences: [], - defaultEncoding: [], - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font2189), + { + loadedName: "font", + type: "TrueType", + differences: [], + defaultEncoding: [], + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); @@ -59,16 +69,21 @@ describe("font_post", function () { }); it("has right amount of glyphs specified", async function () { - const font = new Font("font", new Stream(font2374), { - loadedName: "font", - type: "TrueType", - differences: [], - defaultEncoding: [], - toUnicode: new ToUnicodeMap([]), - xHeight: 0, - capHeight: 0, - italicAngle: 0, - }); + const font = new Font( + "font", + new Stream(font2374), + { + loadedName: "font", + type: "TrueType", + differences: [], + defaultEncoding: [], + toUnicode: new ToUnicodeMap([]), + xHeight: 0, + capHeight: 0, + italicAngle: 0, + }, + {} + ); const output = await ttx(font.data); verifyTtxOutput(output); From e49aaebef10ebed810f072c7bb9bf1c8237f5c02 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 24 Feb 2025 00:17:23 +0100 Subject: [PATCH 317/338] Improve the "FontFallback" handling on the worker-thread Remove the `Catalog.prototype.fontFallback` method, and move its code into `PDFDocument.prototype.fontFallback` instead, to reduce the indirection a little bit. Pass the `evaluatorOptions` directly to the `TranslatedFont.prototype.fallback` method, since nothing else in the `TranslatedFont`-class needs it now. --- src/core/catalog.js | 11 ----------- src/core/document.js | 11 +++++++++-- src/core/evaluator.js | 11 +++-------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/core/catalog.js b/src/core/catalog.js index 1274f6f5c2ee4..c5e481efdde19 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -1169,17 +1169,6 @@ class Catalog { return shadow(this, "jsActions", actions); } - async fontFallback(id, handler) { - const translatedFonts = await Promise.all(this.fontCache); - - for (const translatedFont of translatedFonts) { - if (translatedFont.loadedName === id) { - translatedFont.fallback(handler); - return; - } - } - } - async cleanup(manuallyTriggered = false) { clearGlobalCaches(); this.globalImageCache.clear(/* onlyData = */ manuallyTriggered); diff --git a/src/core/document.js b/src/core/document.js index b3a550c4eaa58..8b98a51c6b2f0 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -1745,8 +1745,15 @@ class PDFDocument { } } - fontFallback(id, handler) { - return this.catalog.fontFallback(id, handler); + async fontFallback(id, handler) { + const { catalog, pdfManager } = this; + + for (const translatedFont of await Promise.all(catalog.fontCache)) { + if (translatedFont.loadedName === id) { + translatedFont.fallback(handler, pdfManager.evaluatorOptions); + return; + } + } } async cleanup(manuallyTriggered = false) { diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 4c63dc7d77d17..66024a7d38b31 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1065,7 +1065,6 @@ class PartialEvaluator { loadedName: "g_font_error", font: new ErrorFont(`Type3 font load error: ${reason}`), dict: translated.font, - evaluatorOptions: this.options, }); } } @@ -1237,7 +1236,6 @@ class PartialEvaluator { loadedName: "g_font_error", font: new ErrorFont(`Font "${fontName}" is not available.`), dict: font, - evaluatorOptions: this.options, }); let fontRef; @@ -1364,7 +1362,6 @@ class PartialEvaluator { loadedName: font.loadedName, font: translatedFont, dict: font, - evaluatorOptions: this.options, }) ); }) @@ -1379,7 +1376,6 @@ class PartialEvaluator { reason instanceof Error ? reason.message : reason ), dict: font, - evaluatorOptions: this.options, }) ); }); @@ -4606,11 +4602,10 @@ class PartialEvaluator { } class TranslatedFont { - constructor({ loadedName, font, dict, evaluatorOptions }) { + constructor({ loadedName, font, dict }) { this.loadedName = loadedName; this.font = font; this.dict = dict; - this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions; this.type3Loaded = null; this.type3Dependencies = font.isType3Font ? new Set() : null; this.sent = false; @@ -4629,7 +4624,7 @@ class TranslatedFont { ]); } - fallback(handler) { + fallback(handler, evaluatorOptions) { if (!this.font.data) { return; } @@ -4645,7 +4640,7 @@ class TranslatedFont { this.font, /* glyphs = */ this.font.glyphCacheValues, handler, - this._evaluatorOptions + evaluatorOptions ); } From 16aa14fc80e8a87d09a60eed1aa0867e6f1f1678 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 27 Feb 2025 09:34:31 +0100 Subject: [PATCH 318/338] [Editor] Fix the telemetry for the signature stuff --- web/signature_manager.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/signature_manager.js b/web/signature_manager.js index 6012482b59ef7..84429df843e69 100644 --- a/web/signature_manager.js +++ b/web/signature_manager.js @@ -177,6 +177,7 @@ class SignatureManager { "click", () => { this.#reportTelemetry({ + type: "signature", action: "pdfjs.signature.clear", data: { type: this.#currentTab, @@ -738,6 +739,7 @@ class SignatureManager { if (await this.#signatureStorage.delete(uuid)) { div.remove(); this.#reportTelemetry({ + type: "signature", action: "pdfjs.signature.delete_saved", data: { savedCount: await this.#signatureStorage.size(), @@ -924,6 +926,7 @@ class SignatureManager { const altText = this.#tabsToAltText.get(type); this.#reportTelemetry({ + type: "signature", action: "pdfjs.signature.created", data: { type, From 4dd4d63998fe54b84895c14210f167653488ded1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 24 Feb 2025 12:27:51 +0100 Subject: [PATCH 319/338] [api-minor] Stop exporting, by default, a few additional Font properties (PR 11777 follow-up) None of the "composite", "subtype", or "type" properties are normally used on the main-thread and/or in the API, hence there's no need to include them in the exported font-data by default. Given that these properties may still be useful when debugging, and that `debugger.mjs` actually relies on the "type" property, they will instead only be sent to the main-thread when the `fontExtraProperties` API-option is used. --- src/core/fonts.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/fonts.js b/src/core/fonts.js index a57a3762b6233..8ebdcb810d978 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -82,7 +82,6 @@ const EXPORT_DATA_PROPERTIES = [ "black", "bold", "charProcOperatorList", - "composite", "cssFontInfo", "data", "defaultVMetrics", @@ -100,22 +99,23 @@ const EXPORT_DATA_PROPERTIES = [ "missingFile", "name", "remeasure", - "subtype", "systemFontInfo", - "type", "vertical", ]; const EXPORT_DATA_EXTRA_PROPERTIES = [ "cMap", + "composite", "defaultEncoding", "differences", "isMonospace", "isSerifFont", "isSymbolicFont", "seacMap", + "subtype", "toFontChar", "toUnicode", + "type", "vmetrics", "widths", ]; From a892839e1bc28686b14992db82291a508f52f7ae Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 25 Feb 2025 12:33:13 +0100 Subject: [PATCH 320/338] Use more local variables in `PDFViewerApplication._initializeViewerComponents` This, ever so slightly, shortens the code which can never hurt. --- web/app.js | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/web/app.js b/web/app.js index 958b55cc21830..77af5695ebef8 100644 --- a/web/app.js +++ b/web/app.js @@ -380,7 +380,8 @@ const PDFViewerApplication = { * @private */ async _initializeViewerComponents() { - const { appConfig, externalServices, l10n } = this; + const { appConfig, externalServices, l10n, mlManager } = this; + const abortSignal = this._globalAbortController.signal; const eventBus = typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL") @@ -391,7 +392,7 @@ const PDFViewerApplication = { ) : new EventBus(); this.eventBus = AppOptions.eventBus = eventBus; - this.mlManager?.setEventBus(eventBus, this._globalAbortController.signal); + mlManager?.setEventBus(eventBus, abortSignal); this.overlayManager = new OverlayManager(); @@ -470,10 +471,7 @@ const PDFViewerApplication = { null, this.overlayManager, l10n, - externalServices.createSignatureStorage( - eventBus, - this._globalAbortController.signal - ), + externalServices.createSignatureStorage(eventBus, abortSignal), eventBus ) : null; @@ -510,8 +508,8 @@ const PDFViewerApplication = { enableDetailCanvas: AppOptions.get("enableDetailCanvas"), enablePermissions: AppOptions.get("enablePermissions"), pageColors, - mlManager: this.mlManager, - abortSignal: this._globalAbortController.signal, + mlManager, + abortSignal, enableHWA, supportsPinchToZoom: this.supportsPinchToZoom, enableAutoLinking: AppOptions.get("enableAutoLinking"), @@ -529,7 +527,7 @@ const PDFViewerApplication = { renderingQueue: pdfRenderingQueue, linkService: pdfLinkService, pageColors, - abortSignal: this._globalAbortController.signal, + abortSignal, enableHWA, }); pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer); @@ -574,15 +572,12 @@ const PDFViewerApplication = { } } - if ( - this.mlManager && - appConfig.secondaryToolbar?.imageAltTextSettingsButton - ) { + if (mlManager && appConfig.secondaryToolbar?.imageAltTextSettingsButton) { this.imageAltTextSettings = new ImageAltTextSettings( appConfig.altTextSettingsDialog, this.overlayManager, eventBus, - this.mlManager + mlManager ); } From 786fbb574d5624ffb5c5e6b10ceb1b842a97516b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 25 Feb 2025 13:04:07 +0100 Subject: [PATCH 321/338] Abort various timeouts, in `PDFViewer`, when closing the document (PR 19128 follow-up) Looking at recent integration-test logs there's occasionally warnings about trying to invoke `PDFViewer.prototype.update` too late, which probably started with PR 19128 (see log excerpt below). Given that we already had another timeout before that PR the problem was pre-existing, but it seems to trigger more easily now. ``` JavaScript warning: http://127.0.0.1:42333/build/generic/web/viewer.mjs, line 12668: Script terminated by timeout at: update@http://127.0.0.1:42333/build/generic/web/viewer.mjs:12668:9 @http://127.0.0.1:42333/build/generic/web/viewer.mjs:12373:12 setTimeout handler*_scrollUpdate@http://127.0.0.1:42333/build/generic/web/viewer.mjs:12371:29 viewAreaElementScrolled@http://127.0.0.1:42333/build/generic/web/viewer.mjs:154:15 FrameRequestCallback*debounceScroll@http://127.0.0.1:42333/build/generic/web/viewer.mjs:140:18 EventListener.handleEvent*watchScroll@http://127.0.0.1:42333/build/generic/web/viewer.mjs:165:19 PDFViewer@http://127.0.0.1:42333/build/generic/web/viewer.mjs:11777:19 _initializeViewerComponents@http://127.0.0.1:42333/build/generic/web/viewer.mjs:15081:23 initialize@http://127.0.0.1:42333/build/generic/web/viewer.mjs:14931:16 async*run@http://127.0.0.1:42333/build/generic/web/viewer.mjs:15227:16 webViewerLoad@http://127.0.0.1:42333/build/generic/web/viewer.mjs:17078:24 @http://127.0.0.1:42333/build/generic/web/viewer.mjs:17082:3 ``` --- web/pdf_viewer.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 5cd5485770fb3..f0ef305d5f36d 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -1173,6 +1173,7 @@ class PDFViewer { this.#hiddenCopyElement?.remove(); this.#hiddenCopyElement = null; + this.#cleanupTimeouts(); this.#cleanupSwitchAnnotationEditorMode(); } @@ -2340,6 +2341,17 @@ class PDFViewer { ]); } + #cleanupTimeouts() { + if (this.#scaleTimeoutId !== null) { + clearTimeout(this.#scaleTimeoutId); + this.#scaleTimeoutId = null; + } + if (this.#scrollTimeoutId !== null) { + clearTimeout(this.#scrollTimeoutId); + this.#scrollTimeoutId = null; + } + } + #cleanupSwitchAnnotationEditorMode() { this.#switchAnnotationEditorModeAC?.abort(); this.#switchAnnotationEditorModeAC = null; @@ -2466,14 +2478,8 @@ class PDFViewer { for (const pageView of this._pages) { pageView.update(updateArgs); } - if (this.#scaleTimeoutId !== null) { - clearTimeout(this.#scaleTimeoutId); - this.#scaleTimeoutId = null; - } - if (this.#scrollTimeoutId !== null) { - clearTimeout(this.#scrollTimeoutId); - this.#scrollTimeoutId = null; - } + this.#cleanupTimeouts(); + if (!noUpdate) { this.update(); } From 72c4784dfa26ac14fcb99e392fc9d60bac9fabe4 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 26 Feb 2025 10:07:28 +0100 Subject: [PATCH 322/338] Extend `getGlyphMapForStandardFonts` with some Cyrillic entries (issue 19550) --- src/core/standard_fonts.js | 31 +++++++++++++++++++++++++++++++ test/pdfs/.gitignore | 1 + test/pdfs/issue19550.pdf | Bin 0 -> 15559 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 39 insertions(+) create mode 100644 test/pdfs/issue19550.pdf diff --git a/src/core/standard_fonts.js b/src/core/standard_fonts.js index 9e7cea5091b9b..59cc5865df1b6 100644 --- a/src/core/standard_fonts.js +++ b/src/core/standard_fonts.js @@ -543,6 +543,37 @@ const getGlyphMapForStandardFonts = getLookupTableFactory(function (t) { t[337] = 9552; t[493] = 1039; t[494] = 1040; + t[570] = 1040; + t[571] = 1041; + t[572] = 1042; + t[573] = 1043; + t[574] = 1044; + t[575] = 1045; + t[576] = 1046; + t[577] = 1047; + t[578] = 1048; + t[579] = 1049; + t[580] = 1050; + t[581] = 1051; + t[582] = 1052; + t[583] = 1053; + t[584] = 1054; + t[585] = 1055; + t[586] = 1056; + t[587] = 1057; + t[588] = 1058; + t[589] = 1059; + t[590] = 1060; + t[591] = 1061; + t[592] = 1062; + t[593] = 1063; + t[594] = 1064; + t[595] = 1065; + t[596] = 1066; + t[597] = 1067; + t[598] = 1068; + t[599] = 1069; + t[600] = 1070; t[672] = 1488; t[673] = 1489; t[674] = 1490; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 9d415b91c684e..6247849814c5c 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -661,6 +661,7 @@ !bug1868759.pdf !issue17730.pdf !bug1883609.pdf +!issue19550.pdf !issue17808.pdf !issue17871_bottom_right.pdf !issue17871_top_right.pdf diff --git a/test/pdfs/issue19550.pdf b/test/pdfs/issue19550.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a52d052f01b2f676cd5721d66c263f40fe5fd44f GIT binary patch literal 15559 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 am;9Lb@o@cch~P-ieY5-Gi|_vO;(q}F3)P$e literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 28506e4c80fda..c42928757278e 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -3906,6 +3906,13 @@ "7R": false } }, + { + "id": "issue19550", + "file": "pdfs/issue19550.pdf", + "md5": "4c978bd99348789e05dad1d2a919ddf0", + "rounds": 1, + "type": "eq" + }, { "id": "issue1127-text", "file": "pdfs/issue1127.pdf", From a467ebfe213c100da031f36b82b487bdd35fb31c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Wed, 26 Feb 2025 14:50:50 +0100 Subject: [PATCH 323/338] Invoke `TranslatedFont.prototype.loadType3Data` only *once* per font Currently we're first loading the font, and then for Type3 fonts we're invoking `loadType3Data` every time that the font is encountered. That seems completely unnecessary, and it's probably connected to the age of this code, since the `loadType3Data`-method will only run once anyway (note the caching). --- src/core/catalog.js | 4 +- src/core/evaluator.js | 103 +++++++++++++++++++----------------------- 2 files changed, 48 insertions(+), 59 deletions(-) diff --git a/src/core/catalog.js b/src/core/catalog.js index c5e481efdde19..84624b863dbf5 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -1177,9 +1177,7 @@ class Catalog { this.pageDictCache.clear(); this.nonBlendModesSet.clear(); - const translatedFonts = await Promise.all(this.fontCache); - - for (const { dict } of translatedFonts) { + for (const { dict } of await Promise.all(this.fontCache)) { delete dict.cacheKey; } this.fontCache.clear(); diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 66024a7d38b31..47e09c206c1ad 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -1046,27 +1046,19 @@ class PartialEvaluator { ) { const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null; - let translated = await this.loadFont( + const translated = await this.loadFont( fontName, fontRef, resources, + task, fallbackFontDict, cssFontInfo ); if (translated.font.isType3Font) { - try { - await translated.loadType3Data(this, resources, task); - // Add the dependencies to the parent operatorList so they are - // resolved before Type3 operatorLists are executed synchronously. - operatorList.addDependencies(translated.type3Dependencies); - } catch (reason) { - translated = new TranslatedFont({ - loadedName: "g_font_error", - font: new ErrorFont(`Type3 font load error: ${reason}`), - dict: translated.font, - }); - } + // Add the dependencies to the parent operatorList so they are + // resolved before Type3 operatorLists are executed synchronously. + operatorList.addDependencies(translated.type3Dependencies); } state.font = translated.font; @@ -1228,6 +1220,7 @@ class PartialEvaluator { fontName, font, resources, + task, fallbackFontDict = null, cssFontInfo = null ) { @@ -1356,14 +1349,21 @@ class PartialEvaluator { font.loadedName = `${this.idFactory.getDocId()}_${fontID}`; this.translateFont(preEvaluatedFont) - .then(translatedFont => { - resolve( - new TranslatedFont({ - loadedName: font.loadedName, - font: translatedFont, - dict: font, - }) - ); + .then(async translatedFont => { + const translated = new TranslatedFont({ + loadedName: font.loadedName, + font: translatedFont, + dict: font, + }); + + if (translatedFont.isType3Font) { + try { + await translated.loadType3Data(this, resources, task); + } catch (reason) { + throw new Error(`Type3 font load error: ${reason}`); + } + } + resolve(translated); }) .catch(reason => { // TODO reject? @@ -1372,9 +1372,7 @@ class PartialEvaluator { resolve( new TranslatedFont({ loadedName: font.loadedName, - font: new ErrorFont( - reason instanceof Error ? reason.message : reason - ), + font: new ErrorFont(reason?.message), dict: font, }) ); @@ -2616,16 +2614,12 @@ class PartialEvaluator { } async function handleSetFont(fontName, fontRef) { - const translated = await self.loadFont(fontName, fontRef, resources); - - if (translated.font.isType3Font) { - try { - await translated.loadType3Data(self, resources, task); - } catch { - // Ignore Type3-parsing errors, since we only use `loadType3Data` - // here to ensure that we'll always obtain a useful /FontBBox. - } - } + const translated = await self.loadFont( + fontName, + fontRef, + resources, + task + ); textState.loadedName = translated.loadedName; textState.font = translated.font; @@ -4602,20 +4596,22 @@ class PartialEvaluator { } class TranslatedFont { + #sent = false; + + #type3Loaded = null; + constructor({ loadedName, font, dict }) { this.loadedName = loadedName; this.font = font; this.dict = dict; - this.type3Loaded = null; this.type3Dependencies = font.isType3Font ? new Set() : null; - this.sent = false; } send(handler) { - if (this.sent) { + if (this.#sent) { return; } - this.sent = true; + this.#sent = true; handler.send("commonobj", [ this.loadedName, @@ -4645,12 +4641,12 @@ class TranslatedFont { } loadType3Data(evaluator, resources, task) { - if (this.type3Loaded) { - return this.type3Loaded; - } - if (!this.font.isType3Font) { - throw new Error("Must be a Type3 font."); + if (this.#type3Loaded) { + return this.#type3Loaded; } + const { font, type3Dependencies } = this; + assert(font.isType3Font, "Must be a Type3 font."); + // When parsing Type3 glyphs, always ignore them if there are errors. // Compared to the parsing of e.g. an entire page, it doesn't really // make sense to only be able to render a Type3 glyph partially. @@ -4662,14 +4658,12 @@ class TranslatedFont { } type3Evaluator.type3FontRefs = type3FontRefs; - const translatedFont = this.font, - type3Dependencies = this.type3Dependencies; let loadCharProcsPromise = Promise.resolve(); const charProcs = this.dict.get("CharProcs"); const fontResources = this.dict.get("Resources") || resources; const charProcOperatorList = Object.create(null); - const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]), + const fontBBox = Util.normalizeRect(font.bbox || [0, 0, 0, 0]), width = fontBBox[2] - fontBBox[0], height = fontBBox[3] - fontBBox[1]; const fontBBoxSize = Math.hypot(width, height); @@ -4693,7 +4687,7 @@ class TranslatedFont { // colour-related parameters) in the graphics state; // any use of such operators shall be ignored." if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) { - this._removeType3ColorOperators(operatorList, fontBBoxSize); + this.#removeType3ColorOperators(operatorList, fontBBoxSize); } charProcOperatorList[key] = operatorList.getIR(); @@ -4708,20 +4702,17 @@ class TranslatedFont { }); }); } - this.type3Loaded = loadCharProcsPromise.then(() => { - translatedFont.charProcOperatorList = charProcOperatorList; + this.#type3Loaded = loadCharProcsPromise.then(() => { + font.charProcOperatorList = charProcOperatorList; if (this._bbox) { - translatedFont.isCharBBox = true; - translatedFont.bbox = this._bbox; + font.isCharBBox = true; + font.bbox = this._bbox; } }); - return this.type3Loaded; + return this.#type3Loaded; } - /** - * @private - */ - _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) { + #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) { if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { assert( operatorList.fnArray[0] === OPS.setCharWidthAndBounds, From a73303cc06bdd9477b38c382d374bff3d949c531 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 28 Feb 2025 12:41:47 +0100 Subject: [PATCH 324/338] Don't attempt to use auto-linking in XFA documents (PR 19110 follow-up) Auto-linking requires a normal textLayer which XFA documents obviously don't have, and currently XFA documents cause "pointless" error messages to be logged in the console. --- web/pdf_page_view.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index b0395530f3e31..618b6b6c5c7b4 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -1064,7 +1064,7 @@ class PDFPageView extends BasePDFPageView { if (this.annotationLayer) { await this.#renderAnnotationLayer(); - if (this.#enableAutoLinking && this.annotationLayer) { + if (this.#enableAutoLinking && this.annotationLayer && this.textLayer) { await this.#injectLinkAnnotations(textLayerPromise); } } From 27fa4ba5358e4ac27c58325c5857a8f6317033ce Mon Sep 17 00:00:00 2001 From: Hector Rincon Date: Tue, 25 Feb 2025 22:00:32 -0800 Subject: [PATCH 325/338] Reenable viewerCssTheme option for Firefox The `viewerCssTheme` was removed in #17222 and subsequently reenabled in #17293, but only for Chromium and generic builds. This commit reenables the function using the new method introduced in #17293. --- gulpfile.mjs | 2 ++ web/app.js | 63 +++++++++++++++++++++++----------------------- web/app_options.js | 5 ++++ 3 files changed, 39 insertions(+), 31 deletions(-) diff --git a/gulpfile.mjs b/gulpfile.mjs index e79b79a96f2f3..008b5b99d61f0 100644 --- a/gulpfile.mjs +++ b/gulpfile.mjs @@ -1431,6 +1431,7 @@ gulp.task( .pipe( postcss([ discardCommentsCSS(), + postcssDarkThemeClass(), autoprefixer(MOZCENTRAL_AUTOPREFIXER_CONFIG), ]) ) @@ -1441,6 +1442,7 @@ gulp.task( .pipe( postcss([ discardCommentsCSS(), + postcssDarkThemeClass(), autoprefixer(MOZCENTRAL_AUTOPREFIXER_CONFIG), ]) ) diff --git a/web/app.js b/web/app.js index 77af5695ebef8..7e8cf828c4b40 100644 --- a/web/app.js +++ b/web/app.js @@ -202,39 +202,40 @@ const PDFViewerApplication = { await this._parseHashParams(); } - if (typeof PDFJSDev === "undefined" || !PDFJSDev.test("MOZCENTRAL")) { - let mode; - switch (AppOptions.get("viewerCssTheme")) { - case 1: - mode = "is-light"; - break; - case 2: - mode = "is-dark"; - break; - } - if (mode) { - document.documentElement.classList.add(mode); + let mode; + switch (AppOptions.get("viewerCssTheme")) { + case 1: + mode = "is-light"; + break; + case 2: + mode = "is-dark"; + break; + } + if (mode) { + document.documentElement.classList.add(mode); + } + + if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { + if (AppOptions.get("enableFakeMLManager")) { + this.mlManager = + MLManager.getFakeMLManager?.({ + enableGuessAltText: AppOptions.get("enableGuessAltText"), + enableAltTextModelDownload: AppOptions.get( + "enableAltTextModelDownload" + ), + }) || null; } - if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { - if (AppOptions.get("enableFakeMLManager")) { - this.mlManager = - MLManager.getFakeMLManager?.({ - enableGuessAltText: AppOptions.get("enableGuessAltText"), - enableAltTextModelDownload: AppOptions.get( - "enableAltTextModelDownload" - ), - }) || null; - } + } else if (PDFJSDev.test("MOZCENTRAL")) { + if (AppOptions.get("enableAltText")) { + // We want to load the image-to-text AI engine as soon as possible. + this.mlManager = new MLManager({ + enableGuessAltText: AppOptions.get("enableGuessAltText"), + enableAltTextModelDownload: AppOptions.get( + "enableAltTextModelDownload" + ), + altTextLearnMoreUrl: AppOptions.get("altTextLearnMoreUrl"), + }); } - } else if (AppOptions.get("enableAltText")) { - // We want to load the image-to-text AI engine as soon as possible. - this.mlManager = new MLManager({ - enableGuessAltText: AppOptions.get("enableGuessAltText"), - enableAltTextModelDownload: AppOptions.get( - "enableAltTextModelDownload" - ), - altTextLearnMoreUrl: AppOptions.get("altTextLearnMoreUrl"), - }); } // Ensure that the `L10n`-instance has been initialized before creating diff --git a/web/app_options.js b/web/app_options.js index 0c238384e226b..0d14fbcef8866 100644 --- a/web/app_options.js +++ b/web/app_options.js @@ -334,6 +334,11 @@ const defaultOptions = { value: 1, kind: OptionKind.VIEWER + OptionKind.PREFERENCE, }, + viewerCssTheme: { + /** @type {number} */ + value: typeof PDFJSDev !== "undefined" && PDFJSDev.test("CHROME") ? 2 : 0, + kind: OptionKind.VIEWER + OptionKind.PREFERENCE, + }, viewOnLoad: { /** @type {boolean} */ value: 0, From fc0827fa57e2ba961b82a3f5f74e3780ff1c9964 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 28 Feb 2025 21:25:51 +0100 Subject: [PATCH 326/338] Fix the build of the openjpeg decoder in order to use an optimized build of the openjpeg library (bug 1951128) --- external/openjpeg/openjpeg.wasm | Bin 243150 -> 254625 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/external/openjpeg/openjpeg.wasm b/external/openjpeg/openjpeg.wasm index 4540ce20ffb48e1d239d696268b82400e7bebdd6..056fb2790e7cd98a9fc5d3d981466d31ecd5f168 100644 GIT binary patch literal 254625 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 literal 243150 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π=@Jy_Zt#P^)}V_ z{UNy5cP0ihjyL_HxS9yqlTaqq?7F1w^&0X*CUNyJc~#3>+dQEm)g%u9|6(+oy!#Q9 zTweAA3SAI9(${RVH0p_(au;^FvSjCVG=geB&P3b*Vd%H!Lx5zBM4hV|A!2Em8@1~i z+>A=wYk}X2mldlG6d$AuhO{mCC^#lPMnB z9=?kh(VA=e#E~bnPd@C17C$U1xEPYC`eZz;MEHaw3o6lxctDAUNd#6t3Vs1iTTPOC zKK2=g@t6xaw@+#WNm7SW)+(89@A)eMN?wMV^K^uRTs0b6hKg(pi|Sb8DzhAys$-D? zJv(eCuFA9HneFHsK$5hnw{jb}n%-?7m9>nuQ=`_Z9eGyVfkf$XH>gq=^qC>N#loMv zW&Asn_)|($!^&A(Q3nF*H7UPvo!!b}n@Kr&hGYOI`(k4BF6GlUxM!9oXAGHY&tA7A z8#cZy+jE_=J-RXS^Vx3zU{EIOnp3R5dK;Q~_h@;b%%l)9>Rb-iNS&Ik;?)ISf4qXx zkjO_AfKav|<1#y2`4G-?V!ASsvN_X0mWeNgOeQo4CCw=)HN(&vJN_wa0XXbD^=oN> zrhlUWQfq1C&xgj_)diTolsFBCrV4G(H`b&Bz&f>-X#BJQ`4 zMH;|nrgt0Sk@s#t_dSF+8FDq{a1-xJ&(nU`jXZX%hz!9HN0rg7$UeE1{v%{cbdDAZ znhc3qr+_bZBas^9xOD&C$WYcIeOrs>0r;XGY9659C8N^9-KaP zO1(I7WYeujjvbskeP}wke&Ohe>yMw9J~ne=`l0Jj%^$q}fg{JRKY0A;(c`+z9iM;A z!64bYcmIxkZ+%OkX5aJHyZ7IB$D4O0JKqxAliU;Bd*{CWJMZ0p&%O8U-?`^4`}QW^ zx&OXBdw1>MbI;CQZ`;3T_x}6#-W}|@XLs?zf8Lg z@7Q?w+Be$!Qw!54^zM|~aCGA|FW++SeeURi`Pu1t4X)GRxb>$snsW!{Np|%3{ItE@ z1jrYF*5Ly}gVV%%48E;J&+k$|Z^RXc(#f!Q;x(Ph%fEaC&aRH=Z}^ zPxU($fBe|=u?4sOkfrjkvL|<+I(p>Tq3N?X`9kjYK$tsnYQf&@0Gnyo^ns&3nR{^l z_)$7buYH4-rlLJ<6TQV3Gd({Kgx_&kHEV7hIrfmdbKmRS9X37O1INz}1iKBg2i(yk zr%ucrILIWsX8l3`?;53W$4@h+ho;@kiPs(WS?)eCr)f!2751P?_tW$y9_CLiShl05 zbu&$pUAMc}ZQi`uojUT+u>%XI8C|RR0;QZ{W;5KXJuAj)S$OA(H1j(Ey2|EXN;o>tC~#Ea2GDg9~q5Z?_Ed19P*d7T)>B^;c&v3QtUohy0g4 z#}=j^0_%^TnVx@e?)W=|NDGI~zH$BOja;AVo3{8fM(-V+R+G9A`r11T`m`>7;~Q9|emCf~Antd_8!2eqKnf z`3?nJ0Phb?KLE*}b<=axKIbmOyA0#rvJcF5`aRe&$(s%W-g)h1M0GGxFN_}_Iy{07&o~ib92)V9hmde{rH0q!h;$EkpZF|z#2&T z0JxdLY~d8ME(d?gEZ~~%^eM2e(MX0IwABcsq1y5so#{OJ>#5Bv6Iq?gz2 zk;7_+h##LjEi6;^3s(hun`5^5v>BV+w_~pj-)r2Pr%!;zr-)5>;=tVW0zw5DP9Igl z{{#WxxH|?NICc7jQn@$ZyGOk-fQr)Hai0Os;MQnKN+d*EfGk{P`oSZ|=$-MXPVFr; z(+NAEiSE>aqtou#>7x&5N zfOl>yIJ~el-P`sWK2uL4>1(&-X>-hZ=b^VF_q$%xJmst${!S zBx2b911C<*y>tJu2fQF>QUS~yGUQ2FntI>-aj3#k8y|OS_Q;77p55)bJ!1wN#rDNs z+vUipmH1Vs44F{sDP;#x9XNyxI+xOp3#2&;>oN(TLz)(#Ht11Crm`0A+m}t(4kale zv$v7TlesK^Lm(Rnb|R%}PCYaYf6W+SF+p?IeS13<+Mpp9YE*|*r%oVcZ!@e9` zyBZBEylmn*ckj5jk-X{4n{U6T!%wz^V26! zADM>$6;n1ByyMNc=VfFlcw+weLlD|i;^oXIXb=-^$Gtn3Bzz0Z!xNv@6fKn$@-}~Y z(~d@|JDOm*V|(LEbDn+o?#Nrx{AEYSFK>d^XEUNX&)tPD1t2ygKf~~1svN3~X=8Yu z>k$R9dLa1!Tf5fasE#Y$Bk|G*c_9|wwReLr0wrQ23q6dTC<~G-$q88=0!e;s*62Ax z6HA(5W`xZCK-6M(`LS!`A9?V{5NhpZ{lj3p5|Y#wBDL6|HeQ3P?BG_kdg48^GHs?G4NJ116nG=sCqcm;8Dsyj&M4omH@t`uF z!B{SJtVuyfV`vq>d&v)Bf(~83E#U67t`+H|5*-6c?Vd?fW;V$D22KnD0Kc5phy-fH zqQY+5XPC9XyMU_>i&1PE(bF5_@%{|S6)T3)Bui7HDV)Z~q~wcrrgvmIJ{vlq!StM9 zpN8x2j^CQ%zP@NUvqXgEv>9KGx2_HiIjA}s_3*6es>nhyTfYw2gjEaX7)B+y=r>~j z-I{FX(Q}7gtRCq0fdQ-y*rS#~oxJfda% z5f9NjHlUErwDilVOe>u`3}5eHPfs5jV&=zn{5ghbvV=;gSbc-DNAPq26C2CiAZz+Dgk2%86~q+$2P3c2wI-G&FitfDFP#A=?1qRSc6;tae+0U! zEgnymtb`z-7k#W_C(0sX&;?QP7w#O4_I0Uf9+ry`Qj?j zft0NC4VC9@zh#c7ovd}NW7D~-Mti#xbok1gM zmc}g`;Oa*Zs9~G2ZmSuaOzs?jAad<@Bkum_qs9c|{zn!J?aH>ZrgCes5AOBB+Y$9; z_zURbq{E0-cd5gGmMNczMU%bJ9t6zH3+(vY5P?aW7qkHSI(A|e$_vzi7u>-#EN)=D z(ztx5&0q%KgDME4gi;+q5~)+1}sN z8Py3~PxVL}%Slu<>ZGxn^ate3`-zcP;n zDnnpI*P(4owwNkUV{}-{M9h;?3GIshj)9#HoCp2J1^_6Eb`?g=S&EFPsmtGlS>MZs zua_TVnVDtFoNvL7W2arOlNHanSys=~4GxhF6+W<5`gF7PFEP|8jH%9>cPlQm2iBSm zNY2ds(aV1%JcwbhDE1hPGKd&p!;sc0}riUUA6itiezPPa%Wf9?G>H9WH6HLn-u8N zFwO@h1`MH>ecNvF4)lA=`ev*VOr^2xFe_fr%x4EVUo*PSS=Rsp9UAJ6VV|QtPXkjd zjK)p%?o9cjb`mdidZXK1W4Ur`Ri)l_;?cH&$TK({OmxM$b6A<>@)(Gf^K1{#ip;`^ zzB?$~6;JftcFpmwJ1Crpcipu5qf+ z-fsBBpNc?`5N>@%=s#} zZ#hgWqn!YwBZiYioNJ?}4DB1&q@@Wb%4^oNY{UZv?|=t`*`BcbeIL|A_aZBDi|fzA zDCkOI#L;sEmSFA~7mz9&n?SUGu;1tXay*D}6+Rf%L#p)wXg?yhRQJh9q(A8l(F=m< zlh`R+0D{Rnb_)`#;BRGhL4s(xVJxwi(5qv>jIyI65@?KfE)1@6fR*&s@83XpI40YS zN0O~*mp;63y$P6t;K{21DcFZSG1AfXg69t>g6AkkkZ`0Ro<9qC=bZini89A-z?1-O zew$g69hsCjA93ijaeC%elpKy{yd#-}%EA!ft)Ig;ot9oqrdxedh7cpEDQ0O|120zS z?b=^~SOBS5JRa%BY(nkf2o4D~$_jx&2j_l3w*@a<7@Th5HU}IUc>miX8~_{aG)kKy zAVzyPMq7?(d8oE6GJr!49#F}0BsYv`7v0kxIJXv^K~bfwVXqjB+bbMy42B(}%I^@1 zsvo9YGKrO-m3?B?3PrF?(84`iy;XIYuAV1`;M4;7f(acP_^Mo_K^x#DvGsD=)E&k7 zDnq_yPBRWT1i=tG7DODx8$Fd~mm+Rm$Pp+7Bp4Ct;6dNaHPH>HQh{pgf|19W?$H{7 zOWxI3;&O51;C68&^!Y2gZ-)Yn$|nAg_rm*P&pabV#K_2yD?OYXR~2WLcgvI_HrJ<* ze!CE>8^8r23OSbf(-_Sp#tdgmoj9`_!qp&-D8$oSH#np6EfXW!+*7huYduY4sF4CS z;D{~BTO$5J>6S|sJ0XM}+d85H7!K_TQYFKlf$zD{UF zjHHchNU=nO1-XPXD&z)Zf_8LJsK3o=zE79>hMN;o%0a_m4)(LUC>#JbHG&8rLZTj- ztw4XOC>`f82Lu)w%7E_{%JY_~R0R^l&({m-#U{oSafl91(IYf^!sD~JenenQG zp3E6kAlg7*&ut|guxbe|wt4;?3_Wuz$T)m_VbQ38OOoz1=S;R}XU!TMNV6%jRST$_ zjQz<3Pwm!(-H&=wLMmkrOi2!3M_&?KP!xwZ*cbi#Cd88VCl|knDQ@NHofM_)R_Wi$ zJk=rk3v=LlE;LU;RflmETZ3cERZVhi?a5w@p9z(qJ$+6+4E@1`(`>H0=?EWG0M?JU z^yPLBB4shkgpRX77SJP1AV-RN$~}yr{;;=qC@|jDAY(i5(8ExPvbo*DJ@C?RBJf=q z%B((Ua)M(vmBg)FPL-Vvjq9x$f#>$Y$UqmH>RC9LDK2@;4%T*RC@Scgrl`3E25=P% z8z%tOY@)KF%v*a^3k9wOVP}V+dBTLykE^StjoGtpmf=JBt zxAhPiDf1)glO}l$t2Z`;>66une&7-WDE(1*cfU2m0{&Lz*=50igscp+FLRl*8WXfL zVG!!uRs3>mq!^-DV}Crg(-$B^{d#AwcElJiW}yZgkK#rFZZt65u$_WC$4|BdS5sr(??Bb9@MX=FxJ{cj;6)XT z1Di*g%`a(N_9qbFITFw!l62&XH!VK>~6&*U$=6!W=WrN-lA`403D| zXu(>aM2|ku&C}>=?2Pefq*Z@8-<YpBvsn(@ zFoRr}4ldnf7RCWwH;erVQ-YcGOPAJYdhVXYCdEFZ;yWDX+pF}>XMdJ@pYR%c$8&mn z)qcT)yUAjni|(~ zMN*{_Y~R{`zQamzsaGlyo03Zn=Opqg25s67#u506h-pE+s#}?q+d(uJ;L15W7#Zh^ z@xli->Y_Ixlqo^9O&6j?LN><0#Q~VN-|3St>qQvv*!afXa#NQ%D68!s;eVE7^vket~I9walK>iYJEF+sHAuh$AR*_BMC1U*L{8OEHMXJR)rI_$2>SD;e3M$U`q;(Y2xhzOQ&2jmQLBMd8EFNGs%#ElWfKHl_@ z@e+CCv6(=$K3z))tI{cnLkGaXl<$Om^WYGbQr5okN*f}{coeZo`hFObWos}6Fn?iD zN9FDy+}KrUB2PATWB|b%X|h&(l*jI9PY;|}n2T~Jh?D-^@~5i9`1O{207!+>Usfa; zv98G{<8@eZ^|%sj*AbKm?`5JWLQXm^1l2csCjn7NgZ&Q_*=UE}(WPDls_ zin3?QW;?(4I;5{$VJInY=H~(&QMn3E_Y1Ac<|b^y_F}fQ9$d+f;nq51N4Q*Lk3%@1 zxGGcaR62jN#%bzog5%4jrgkc=aPL-z-5`8eVo<|B`^pW4t-1mj5(RX zdc}1L)C*ULr-h`kj#3AlT6>$-@kYhJrE!@N_I_?v=19a3O_iynXQXpJsm(rx4Yv`s zZ*AKibhSj&S!XPXGtmmPH=CH;J`cY)7pz@$_amF0pgi@Oc%)gf9q8(|K@gkQR30|q zB!N{o>I8=!Q9x*jY>}%n^yBf2pT5=CH??iv*wWncr2QQdWI}%1#+$sD4(|rC)$MY_ z#Qee|IoQcx@pvJ1_na&yKPLT7<=^tBrH|BYY-kqc5352VWfF}LYtGX-=C@LC$8qQe zA%f`gmz_7&A=@Um8==R^M2h{QHn#zwYEh>=v!GcfKaqnasDJS!(H*KixnS&$aUdor zNKw-!tfMVS_W;HGstS5Ujt4#K81hMbMofT}XqHydV$o{-VNFwpC|b}Aum5PT{gIHi z==ymdOd5e^+L6Vam=Fxlyx5VMYY^21I&WiPP2mlQDfgIjfjCw@10e94&7HrpFczl# zuu}|EH#TLhaJ^?p^cT$!tL5q?Rj+!~9yNBPP>p`DT%A}{ucoi>QM;U0)wX%LS`GZh zhCS+?Q-$ix+sjq@BJc1Pt+LxnVRx8wpfX}xys50qCKl(u?|F+FJm?ho6^K5@5$}iUKf7P^q zR|VRSa&Mvi9FH-lK`lkQI6iDY>9@9^{|&l->C1Y2UIxCc74@Z_RcqM~XN4M0f&Zxn zH9eunhvV<(e*^XT`9F{G^z%P+I+K4az<=~z(EIpveEj@J0Fyt*k@HhinXAsfH+5}# zvJh=-RnPCsRVOO$-N2j`#iJ9b*jFXf-}PkJkVGJh}V`G56r zp*s2s#{XxK50pCr`ZK3M-+=kQ2Kg`2>&MT3`T)xN_#X$IpZ~c4|4mp|e*WVZLGR-~ z47{KJLDG}|4$Z%&g5$GSP5*Z4%C7G8<&gszzr)39yl3j#V`}Uo$Lqw88le}aCVEtQ z$3e))bNiNHeqX{GKL4Xl82=NmgMM=A%0ST%u--xcO0gP+Ogse1igg1%(x}Eio|@R& zF!s^#_FT2LatX%aB{lu|JNsPzLx%qwn*WDN^XL4L|M(@%pYlZh=g@2Nuc8s| zLZ|N9uH}C<`Vac5v5z=@e*PSP;eS!{*Xw65`mgzG`CpCx8~$7$;|KoZpJ@JE&p$x>DgWf()-rh+>-Y0>YI5QpH8nk)n!L7a`_$EuHzu!)f6Vqx zUVgP`F3L|%+)(MsAvJkz>*A^F!-JDoMn4$4SW`85`NZo}pP$(`IWhf5&?hIa4XCNB z#}(*%(toI_n7sU=0{t(5pGtqW4fJ18Q`ev02m0Tge{WTh=6~jt;h!-44}kuYv5&r` zH2;4``=)QCCm%Qbe~9`=-ygg9F!1F6E8^4O-=p~-Ju-RaLk0eohW~4m6XTcCpP|3P z|DQ>J;QV{{FTPtvRJ}T{_Naf|w;Vd_Zb()=bjTiz(sGRR-PoV%q3icRPcMf|+^xP3 zco*RGqUBisn*JS>C;d{?C;Kt*r2o*+pD^^(z>|J0;IZ1}(5JKWA4hv;n1*)+G7@k3pFy7VmcMPE<$uuN$MF>U%1r)84SpJY z$iEHA&wtq9NAV>6{oqf2 z|LS4gf1%&3>3?YO?B_#BHK5Dj|GJ^C)%@9ip-*V~gMeB8IVAG8<7xRHJ)-d(U-ECm zQ|QfjaQ;Yt^cBsY_FH;l1^S<(e#(8I2X+if(7vIbIC>;UeTEv=R?vQHR3mR-AA7wJ z_HhpM&92RDuzS*1R$yJgJ}iQs!G7}==()e`06q7g^R=MIKKml*xqqF&zB&DQ4)y6} z?q7cX6Pf%+UNiiYntx4|mX9$fgmo5z zUJj`SJf|U7OYr1)J&R`#QZW+ci}-QO8^@pHOZ-NRuh74(@i*{}^qfE9DPN@L{E>bX zDP8WZAD91W!yj@<`XMCJTmHkylb-WS{tqJ&Z}}fbp7;?Y($^pnZ~6ZadE(C@kw533 z_VjZY=ii_Q(^oN`lh`{%9$I0Caef-WA9kn%`G9@$dv#sx|Chmm_C)$h1IC*6FX&-c zq%YIQD(q2tpYY_YY#3Jrvn2(n0M!uGa|B=BTa^dGs``^!>cB`Mi*tdTE?`QHC z`S9@{MSXt$v=2TLdFL3sq(?7b|bMJuWKXWQq?JB~!y}JTqkiN$HePSSpFscozN=WDKf(H(f*mn-qz3#l_`j?9 zPyf;IZ^-07oY4Hoi!}dD#QXSVF4FO3k1X4Uv>2Z%e1`DBYx#s8)6b^OO0^>qW}VFQUFboLk0bx7 zfr;OZyxIc%UugV(z)c1w{t)1Hz`qP@{4v1C3{3ne z3ZG9~Q9lx4;-MZ?J7C-XMW{>KW7_WkmiD3!e#!|Wg#eSjmgSp~|2DC@?ScnPe7nVe zUC=6S=>ZeJ+v3YLem~$Q)(4pQLx9@}uh95ofa3-x{v_btg#Sw8&jLPXVB#+TK1ui< zgGam18d&gvFAzq5`B{X#GBEKD@}Hs(_LrY>A546$Est^LrwK6Y2mvO(9eLJa$0v?F z>mW@0Zsb`<$c)c^BwWP8Xggr?AWVEMVDhlz-vpRE2ov89m^`d}$B`!w z!o=@J-XUz}XFu}g1}6Rx^0kBu0pN2C`6dGse-in2!e0`!$bQ_w#9u&uH{rz^|0(kO z4NN=~lkl+XYZ2gMz!N6k0Zbmh%+vJcfX^D3_*%f^@#6&=&$UG!go)?cA`iPh6ge`Emmje+c77%c?G#Y1Q#dW?;T@0G|ZBSEE%q;IjrMz7{ZftTXr~z~n)g_;$e5F~tTS zN1i+g6TcgI2Wg4H??=Aez{DRyz81+0zdD9|lYxmpiF`W}hEqOgk&hdg_zTGIMq-{H z;`bZa;tvr<;^$L5nXLX+kK-j%C^t8hlbbtt-u(IVkb)w^K{!}G2+y6jV8J}3`SW!O!uEZ(Cu#lk zK{y+oeIIOZ5DvCC2($10{s-Y;`5+u@ZxFWa%=QeH55n2#?EBz)55mFq9)yGIB?t%Q zJqQQoH3$dgH3$dG2jO7(ARKIO5DvCC2nW}D5Du0P!ol_i;b41%aIkz34wetXDmOGI zcix=&p*cBo=gglwKM33RIdgO7&ILXQlXl*M`3p!pAI~6c-;`@}H-3V!eV^?atS<;>Yqx!$t=`*xpO+U7Gc89xUZ( zchfd!qK&_QTB(J2-ix#a`9eJJLuxkpzeIkk$_%Uqwop zJe)uEj487c`6iS9Yvi9a`L7{AXv&u&KVJRd){0C3myDeC1IHL==GA z`zw@LggWtD@@IHGhhHj>6DHFJ+z88j3H9N*RJ>97%F~W3zVVlWbl-jVsk(nW9m>DU zLQ+Yds(S-3;Rn}^;JM__`BuL2IJ+{(!2K`F+@tFLfM>TjRq~a0kCeeT{+3r%Rz0}- zp@+Zzjk-tb@oyjy6*p-+o--vs-sbhQZuftO^1p0pEY8-+=XO Date: Fri, 28 Feb 2025 19:11:42 +0100 Subject: [PATCH 327/338] Add a `GlobalColorSpaceCache` to reduce unnecessary re-parsing This complements the existing `LocalColorSpaceCache`, which is unique to each `getOperatorList`-invocation since it also caches by `Name`, which should help reduce unnecessary re-parsing especially for e.g. `ICCBased` ColorSpaces once we properly support those. --- src/core/annotation.js | 16 +++- src/core/catalog.js | 4 +- src/core/colorspace.js | 109 +++++++++++++++------------ src/core/default_appearance.js | 18 ++++- src/core/document.js | 9 +++ src/core/evaluator.js | 9 +++ src/core/image.js | 6 ++ src/core/image_utils.js | 21 ++++++ src/core/pattern.js | 15 +++- test/unit/colorspace_spec.js | 108 +++++++++++++++++++++++++- test/unit/default_appearance_spec.js | 71 ++++++++++++----- 11 files changed, 310 insertions(+), 76 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 23d383e937ba2..23c2440294225 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -83,14 +83,23 @@ class AnnotationFactory { // Only necessary to prevent the `Catalog.attachments`-getter, used // with "GoToE" actions, from throwing and thus breaking parsing: pdfManager.ensureCatalog("attachments"), + pdfManager.ensureCatalog("globalColorSpaceCache"), ]).then( - ([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => ({ + ([ + acroForm, + xfaDatasets, + structTreeRoot, + baseUrl, + attachments, + globalColorSpaceCache, + ]) => ({ pdfManager, acroForm: acroForm instanceof Dict ? acroForm : Dict.empty, xfaDatasets, structTreeRoot, baseUrl, attachments, + globalColorSpaceCache, }), reason => { warn(`createGlobals: "${reason}".`); @@ -3880,7 +3889,7 @@ class FreeTextAnnotation extends MarkupAnnotation { // We want to be able to add mouse listeners to the annotation. this.data.noHTML = false; - const { evaluatorOptions, xref } = params; + const { annotationGlobals, evaluatorOptions, xref } = params; this.data.annotationType = AnnotationType.FREETEXT; this.setDefaultAppearance(params); this._hasAppearance = !!this.appearance; @@ -3889,7 +3898,8 @@ class FreeTextAnnotation extends MarkupAnnotation { const { fontColor, fontSize } = parseAppearanceStream( this.appearance, evaluatorOptions, - xref + xref, + annotationGlobals.globalColorSpaceCache ); this.data.defaultAppearanceData.fontColor = fontColor; this.data.defaultAppearanceData.fontSize = fontSize || 10; diff --git a/src/core/catalog.js b/src/core/catalog.js index 84624b863dbf5..0fb4eb115f5c6 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -44,12 +44,12 @@ import { RefSet, RefSetCache, } from "./primitives.js"; +import { GlobalColorSpaceCache, GlobalImageCache } from "./image_utils.js"; import { NameTree, NumberTree } from "./name_number_tree.js"; import { BaseStream } from "./base_stream.js"; import { clearGlobalCaches } from "./cleanup_helper.js"; import { ColorSpace } from "./colorspace.js"; import { FileSpec } from "./file_spec.js"; -import { GlobalImageCache } from "./image_utils.js"; import { MetadataParser } from "./metadata_parser.js"; import { StructTreeRoot } from "./struct_tree.js"; @@ -140,6 +140,7 @@ class Catalog { this.fontCache = new RefSetCache(); this.builtInCMapCache = new Map(); this.standardFontDataCache = new Map(); + this.globalColorSpaceCache = new GlobalColorSpaceCache(); this.globalImageCache = new GlobalImageCache(); this.pageKidsCountCache = new RefSetCache(); this.pageIndexCache = new RefSetCache(); @@ -1171,6 +1172,7 @@ class Catalog { async cleanup(manuallyTriggered = false) { clearGlobalCaches(); + this.globalColorSpaceCache.clear(); this.globalImageCache.clear(/* onlyData = */ manuallyTriggered); this.pageKidsCountCache.clear(); this.pageIndexCache.clear(); diff --git a/src/core/colorspace.js b/src/core/colorspace.js index 9f5ce00b76db5..6bd879b619ce4 100644 --- a/src/core/colorspace.js +++ b/src/core/colorspace.js @@ -306,19 +306,20 @@ class ColorSpace { return shadow(this, "usesZeroToOneRange", true); } - /** - * @private - */ - static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) { - if (!localColorSpaceCache) { + static #cache( + cacheKey, + xref, + globalColorSpaceCache, + localColorSpaceCache, + parsedCS + ) { + if (!globalColorSpaceCache || !localColorSpaceCache) { throw new Error( - 'ColorSpace._cache - expected "localColorSpaceCache" argument.' + 'ColorSpace.#cache - expected "globalColorSpaceCache"/"localColorSpaceCache" argument.' ); } - if (!parsedColorSpace) { - throw new Error( - 'ColorSpace._cache - expected "parsedColorSpace" argument.' - ); + if (!parsedCS) { + throw new Error('ColorSpace.#cache - expected "parsedCS" argument.'); } let csName, csRef; if (cacheKey instanceof Ref) { @@ -331,20 +332,31 @@ class ColorSpace { csName = cacheKey.name; } if (csName || csRef) { - localColorSpaceCache.set(csName, csRef, parsedColorSpace); + localColorSpaceCache.set(csName, csRef, parsedCS); + + if (csRef) { + globalColorSpaceCache.set(/* name = */ null, csRef, parsedCS); + } } } - static getCached(cacheKey, xref, localColorSpaceCache) { - if (!localColorSpaceCache) { + static getCached( + cacheKey, + xref, + globalColorSpaceCache, + localColorSpaceCache + ) { + if (!globalColorSpaceCache || !localColorSpaceCache) { throw new Error( - 'ColorSpace.getCached - expected "localColorSpaceCache" argument.' + 'ColorSpace.getCached - expected "globalColorSpaceCache"/"localColorSpaceCache" argument.' ); } if (cacheKey instanceof Ref) { - const localColorSpace = localColorSpaceCache.getByRef(cacheKey); - if (localColorSpace) { - return localColorSpace; + const cachedCS = + globalColorSpaceCache.getByRef(cacheKey) || + localColorSpaceCache.getByRef(cacheKey); + if (cachedCS) { + return cachedCS; } try { @@ -357,10 +369,7 @@ class ColorSpace { } } if (cacheKey instanceof Name) { - const localColorSpace = localColorSpaceCache.getByName(cacheKey.name); - if (localColorSpace) { - return localColorSpace; - } + return localColorSpaceCache.getByName(cacheKey.name) || null; } return null; } @@ -370,26 +379,28 @@ class ColorSpace { xref, resources = null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }) { if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { assert( - !this.getCached(cs, xref, localColorSpaceCache), + !this.getCached(cs, xref, globalColorSpaceCache, localColorSpaceCache), "Expected `ColorSpace.getCached` to have been manually checked " + "before calling `ColorSpace.parseAsync`." ); } - const parsedColorSpace = this._parse( + const parsedCS = this.#parse(cs, xref, resources, pdfFunctionFactory); + + // Attempt to cache the parsed ColorSpace, by name and/or reference. + this.#cache( cs, xref, - resources, - pdfFunctionFactory + globalColorSpaceCache, + localColorSpaceCache, + parsedCS ); - // Attempt to cache the parsed ColorSpace, by name and/or reference. - this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); - - return parsedColorSpace; + return parsedCS; } static parse({ @@ -397,29 +408,33 @@ class ColorSpace { xref, resources = null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }) { - const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache); - if (cachedColorSpace) { - return cachedColorSpace; - } - const parsedColorSpace = this._parse( + const cachedCS = this.getCached( cs, xref, - resources, - pdfFunctionFactory + globalColorSpaceCache, + localColorSpaceCache ); + if (cachedCS) { + return cachedCS; + } + const parsedCS = this.#parse(cs, xref, resources, pdfFunctionFactory); // Attempt to cache the parsed ColorSpace, by name and/or reference. - this._cache(cs, xref, localColorSpaceCache, parsedColorSpace); + this.#cache( + cs, + xref, + globalColorSpaceCache, + localColorSpaceCache, + parsedCS + ); - return parsedColorSpace; + return parsedCS; } - /** - * @private - */ - static _parse(cs, xref, resources = null, pdfFunctionFactory) { + static #parse(cs, xref, resources = null, pdfFunctionFactory) { cs = xref.fetchIfRef(cs); if (cs instanceof Name) { switch (cs.name) { @@ -443,7 +458,7 @@ class ColorSpace { const resourcesCS = colorSpaces.get(cs.name); if (resourcesCS) { if (resourcesCS instanceof Name) { - return this._parse( + return this.#parse( resourcesCS, xref, resources, @@ -493,7 +508,7 @@ class ColorSpace { numComps = dict.get("N"); const alt = dict.get("Alternate"); if (alt) { - const altCS = this._parse(alt, xref, resources, pdfFunctionFactory); + const altCS = this.#parse(alt, xref, resources, pdfFunctionFactory); // Ensure that the number of components are correct, // and also (indirectly) that it is not a PatternCS. if (altCS.numComps === numComps) { @@ -512,12 +527,12 @@ class ColorSpace { case "Pattern": baseCS = cs[1] || null; if (baseCS) { - baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory); + baseCS = this.#parse(baseCS, xref, resources, pdfFunctionFactory); } return new PatternCS(baseCS); case "I": case "Indexed": - baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory); + baseCS = this.#parse(cs[1], xref, resources, pdfFunctionFactory); const hiVal = Math.max(0, Math.min(xref.fetchIfRef(cs[2]), 255)); const lookup = xref.fetchIfRef(cs[3]); return new IndexedCS(baseCS, hiVal, lookup); @@ -525,7 +540,7 @@ class ColorSpace { case "DeviceN": const name = xref.fetchIfRef(cs[1]); numComps = Array.isArray(name) ? name.length : 1; - baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory); + baseCS = this.#parse(cs[2], xref, resources, pdfFunctionFactory); const tintFn = pdfFunctionFactory.create(cs[3]); return new AlternateCS(numComps, baseCS, tintFn); case "Lab": diff --git a/src/core/default_appearance.js b/src/core/default_appearance.js index 740a037c645db..51d179daff2b0 100644 --- a/src/core/default_appearance.js +++ b/src/core/default_appearance.js @@ -97,11 +97,12 @@ function parseDefaultAppearance(str) { } class AppearanceStreamEvaluator extends EvaluatorPreprocessor { - constructor(stream, evaluatorOptions, xref) { + constructor(stream, evaluatorOptions, xref, globalColorSpaceCache) { super(stream); this.stream = stream; this.evaluatorOptions = evaluatorOptions; this.xref = xref; + this.globalColorSpaceCache = globalColorSpaceCache; this.resources = stream.dict?.get("Resources"); } @@ -161,6 +162,7 @@ class AppearanceStreamEvaluator extends EvaluatorPreprocessor { xref: this.xref, resources: this.resources, pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, localColorSpaceCache: this._localColorSpaceCache, }); break; @@ -210,8 +212,18 @@ class AppearanceStreamEvaluator extends EvaluatorPreprocessor { // Parse appearance stream to extract font and color information. // It returns the font properties used to render the first text object. -function parseAppearanceStream(stream, evaluatorOptions, xref) { - return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref).parse(); +function parseAppearanceStream( + stream, + evaluatorOptions, + xref, + globalColorSpaceCache +) { + return new AppearanceStreamEvaluator( + stream, + evaluatorOptions, + xref, + globalColorSpaceCache + ).parse(); } function getPdfColor(color, isFill) { diff --git a/src/core/document.js b/src/core/document.js index 8b98a51c6b2f0..755e07defbd6d 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -87,6 +87,7 @@ class Page { fontCache, builtInCMapCache, standardFontDataCache, + globalColorSpaceCache, globalImageCache, systemFontCache, nonBlendModesSet, @@ -100,6 +101,7 @@ class Page { this.fontCache = fontCache; this.builtInCMapCache = builtInCMapCache; this.standardFontDataCache = standardFontDataCache; + this.globalColorSpaceCache = globalColorSpaceCache; this.globalImageCache = globalImageCache; this.systemFontCache = systemFontCache; this.nonBlendModesSet = nonBlendModesSet; @@ -327,6 +329,7 @@ class Page { fontCache: this.fontCache, builtInCMapCache: this.builtInCMapCache, standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: this.globalImageCache, systemFontCache: this.systemFontCache, options: this.evaluatorOptions, @@ -381,6 +384,7 @@ class Page { fontCache: this.fontCache, builtInCMapCache: this.builtInCMapCache, standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: this.globalImageCache, systemFontCache: this.systemFontCache, options: this.evaluatorOptions, @@ -446,6 +450,7 @@ class Page { fontCache: this.fontCache, builtInCMapCache: this.builtInCMapCache, standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: this.globalImageCache, systemFontCache: this.systemFontCache, options: this.evaluatorOptions, @@ -670,6 +675,7 @@ class Page { fontCache: this.fontCache, builtInCMapCache: this.builtInCMapCache, standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: this.globalImageCache, systemFontCache: this.systemFontCache, options: this.evaluatorOptions, @@ -742,6 +748,7 @@ class Page { fontCache: this.fontCache, builtInCMapCache: this.builtInCMapCache, standardFontDataCache: this.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: this.globalImageCache, systemFontCache: this.systemFontCache, options: this.evaluatorOptions, @@ -1632,6 +1639,7 @@ class PDFDocument { fontCache: catalog.fontCache, builtInCMapCache: catalog.builtInCMapCache, standardFontDataCache: catalog.standardFontDataCache, + globalColorSpaceCache: catalog.globalColorSpaceCache, globalImageCache: catalog.globalImageCache, systemFontCache: catalog.systemFontCache, nonBlendModesSet: catalog.nonBlendModesSet, @@ -1731,6 +1739,7 @@ class PDFDocument { fontCache: catalog.fontCache, builtInCMapCache: catalog.builtInCMapCache, standardFontDataCache: catalog.standardFontDataCache, + globalColorSpaceCache: this.globalColorSpaceCache, globalImageCache: catalog.globalImageCache, systemFontCache: catalog.systemFontCache, nonBlendModesSet: catalog.nonBlendModesSet, diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 47e09c206c1ad..91ac7c28dd27b 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -221,6 +221,7 @@ class PartialEvaluator { fontCache, builtInCMapCache, standardFontDataCache, + globalColorSpaceCache, globalImageCache, systemFontCache, options = null, @@ -232,6 +233,7 @@ class PartialEvaluator { this.fontCache = fontCache; this.builtInCMapCache = builtInCMapCache; this.standardFontDataCache = standardFontDataCache; + this.globalColorSpaceCache = globalColorSpaceCache; this.globalImageCache = globalImageCache; this.systemFontCache = systemFontCache; this.options = options || DefaultPartialEvaluatorOptions; @@ -492,6 +494,7 @@ class PartialEvaluator { const cachedColorSpace = ColorSpace.getCached( cs, this.xref, + this.globalColorSpaceCache, localColorSpaceCache ); if (cachedColorSpace) { @@ -737,6 +740,7 @@ class PartialEvaluator { image, isInline, pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, localColorSpaceCache, }); // We force the use of RGBA_32BPP images here, because we can't handle @@ -839,6 +843,7 @@ class PartialEvaluator { image, isInline, pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, localColorSpaceCache, }) .then(async imageObj => { @@ -1463,6 +1468,7 @@ class PartialEvaluator { xref: this.xref, resources, pdfFunctionFactory: this._pdfFunctionFactory, + globalColorSpaceCache: this.globalColorSpaceCache, localColorSpaceCache, }).catch(reason => { if (reason instanceof AbortException) { @@ -1496,6 +1502,7 @@ class PartialEvaluator { this.xref, resources, this._pdfFunctionFactory, + this.globalColorSpaceCache, localColorSpaceCache ); patternIR = shadingFill.getIR(); @@ -1977,6 +1984,7 @@ class PartialEvaluator { const cachedColorSpace = ColorSpace.getCached( args[0], xref, + self.globalColorSpaceCache, localColorSpaceCache ); if (cachedColorSpace) { @@ -2002,6 +2010,7 @@ class PartialEvaluator { const cachedColorSpace = ColorSpace.getCached( args[0], xref, + self.globalColorSpaceCache, localColorSpaceCache ); if (cachedColorSpace) { diff --git a/src/core/image.js b/src/core/image.js index 7ab44bcf9006d..cfdf43ade8170 100644 --- a/src/core/image.js +++ b/src/core/image.js @@ -100,6 +100,7 @@ class PDFImage { mask = null, isMask = false, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }) { this.image = image; @@ -214,6 +215,7 @@ class PDFImage { xref, resources: isInline ? res : null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); this.numComps = this.colorSpace.numComps; @@ -261,6 +263,7 @@ class PDFImage { image: smask, isInline, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); } else if (mask) { @@ -277,6 +280,7 @@ class PDFImage { isInline, isMask: true, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); } @@ -297,6 +301,7 @@ class PDFImage { image, isInline = false, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }) { const imageData = image; @@ -328,6 +333,7 @@ class PDFImage { smask: smaskData, mask: maskData, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); } diff --git a/src/core/image_utils.js b/src/core/image_utils.js index 05e2b7b563293..a907d5ceb0394 100644 --- a/src/core/image_utils.js +++ b/src/core/image_utils.js @@ -169,6 +169,26 @@ class RegionalImageCache extends BaseLocalCache { } } +class GlobalColorSpaceCache extends BaseLocalCache { + constructor(options) { + super({ onlyRefs: true }); + } + + set(name = null, ref, data) { + if (!ref) { + throw new Error('GlobalColorSpaceCache.set - expected "ref" argument.'); + } + if (this._imageCache.has(ref)) { + return; + } + this._imageCache.put(ref, data); + } + + clear() { + this._imageCache.clear(); + } +} + class GlobalImageCache { static NUM_PAGES_THRESHOLD = 2; @@ -290,6 +310,7 @@ class GlobalImageCache { } export { + GlobalColorSpaceCache, GlobalImageCache, LocalColorSpaceCache, LocalFunctionCache, diff --git a/src/core/pattern.js b/src/core/pattern.js index 598d5d2a93e7c..7257a67f88a0b 100644 --- a/src/core/pattern.js +++ b/src/core/pattern.js @@ -52,6 +52,7 @@ class Pattern { xref, res, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache ) { const dict = shading instanceof BaseStream ? shading.dict : shading; @@ -66,6 +67,7 @@ class Pattern { xref, res, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache ); case ShadingType.FREE_FORM_MESH: @@ -77,6 +79,7 @@ class Pattern { xref, res, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache ); default: @@ -114,7 +117,14 @@ class BaseShading { // Radial and axial shading have very similar implementations // If needed, the implementations can be broken into two classes. class RadialAxialShading extends BaseShading { - constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) { + constructor( + dict, + xref, + resources, + pdfFunctionFactory, + globalColorSpaceCache, + localColorSpaceCache + ) { super(); this.shadingType = dict.get("ShadingType"); let coordsLen = 0; @@ -132,6 +142,7 @@ class RadialAxialShading extends BaseShading { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); this.bbox = lookupNormalRect(dict.getArray("BBox"), null); @@ -452,6 +463,7 @@ class MeshShading extends BaseShading { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache ) { super(); @@ -466,6 +478,7 @@ class MeshShading extends BaseShading { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); this.background = dict.has("Background") diff --git a/test/unit/colorspace_spec.js b/test/unit/colorspace_spec.js index ca1a742a48b8e..f9da88ccbacbc 100644 --- a/test/unit/colorspace_spec.js +++ b/test/unit/colorspace_spec.js @@ -14,9 +14,12 @@ */ import { Dict, Name, Ref } from "../../src/core/primitives.js"; +import { + GlobalColorSpaceCache, + LocalColorSpaceCache, +} from "../../src/core/image_utils.js"; import { Stream, StringStream } from "../../src/core/stream.js"; import { ColorSpace } from "../../src/core/colorspace.js"; -import { LocalColorSpaceCache } from "../../src/core/image_utils.js"; import { PDFFunctionFactory } from "../../src/core/function.js"; import { XRefMock } from "./test_utils.js"; @@ -50,13 +53,15 @@ describe("colorspace", function () { }); describe("ColorSpace caching", function () { - let localColorSpaceCache = null; + let globalColorSpaceCache, localColorSpaceCache; beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); localColorSpaceCache = new LocalColorSpaceCache(); }); afterAll(function () { + globalColorSpaceCache = null; localColorSpaceCache = null; }); @@ -71,6 +76,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpace1.name).toEqual("Pattern"); @@ -80,6 +86,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpace2.name).toEqual("Pattern"); @@ -89,6 +96,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache: new GlobalColorSpaceCache(), localColorSpaceCache: new LocalColorSpaceCache(), }); expect(colorSpaceNonCached.name).toEqual("Pattern"); @@ -98,6 +106,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpaceOther.name).toEqual("DeviceRGB"); @@ -140,6 +149,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpace1.name).toEqual("CalGray"); @@ -149,6 +159,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpace2.name).toEqual("CalGray"); @@ -158,6 +169,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache: new GlobalColorSpaceCache(), localColorSpaceCache: new LocalColorSpaceCache(), }); expect(colorSpaceNonCached.name).toEqual("CalGray"); @@ -167,6 +179,7 @@ describe("colorspace", function () { xref, resources: null, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache, }); expect(colorSpaceOther.name).toEqual("CalRGB"); @@ -180,6 +193,16 @@ describe("colorspace", function () { }); describe("DeviceGrayCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is a Name object", function () { const cs = Name.get("DeviceGray"); const xref = new XRefMock([ @@ -198,6 +221,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -249,6 +273,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -278,6 +303,16 @@ describe("colorspace", function () { }); describe("DeviceRgbCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is a Name object", function () { const cs = Name.get("DeviceRGB"); const xref = new XRefMock([ @@ -296,6 +331,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -353,6 +389,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -388,6 +425,16 @@ describe("colorspace", function () { }); describe("DeviceCmykCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is a Name object", function () { const cs = Name.get("DeviceCMYK"); const xref = new XRefMock([ @@ -406,6 +453,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -463,6 +511,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -498,6 +547,16 @@ describe("colorspace", function () { }); describe("CalGrayCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is an array", function () { const params = new Dict(); params.set("WhitePoint", [1, 1, 1]); @@ -521,6 +580,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -557,6 +617,16 @@ describe("colorspace", function () { }); describe("CalRGBCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is an array", function () { const params = new Dict(); params.set("WhitePoint", [1, 1, 1]); @@ -581,6 +651,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -616,6 +687,16 @@ describe("colorspace", function () { }); describe("LabCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is an array", function () { const params = new Dict(); params.set("WhitePoint", [1, 1, 1]); @@ -639,6 +720,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -675,6 +757,16 @@ describe("colorspace", function () { }); describe("IndexedCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is an array", function () { // prettier-ignore const lookup = new Stream( @@ -701,6 +793,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); @@ -730,6 +823,16 @@ describe("colorspace", function () { }); describe("AlternateCS", function () { + let globalColorSpaceCache; + + beforeAll(function () { + globalColorSpaceCache = new GlobalColorSpaceCache(); + }); + + afterAll(function () { + globalColorSpaceCache = null; + }); + it("should handle the case when cs is an array", function () { const fnDict = new Dict(); fnDict.set("FunctionType", 4); @@ -769,6 +872,7 @@ describe("colorspace", function () { xref, resources, pdfFunctionFactory, + globalColorSpaceCache, localColorSpaceCache: new LocalColorSpaceCache(), }); diff --git a/test/unit/default_appearance_spec.js b/test/unit/default_appearance_spec.js index 94a844921c1f4..5599cedacf033 100644 --- a/test/unit/default_appearance_spec.js +++ b/test/unit/default_appearance_spec.js @@ -20,6 +20,7 @@ import { } from "../../src/core/default_appearance.js"; import { Dict, Name } from "../../src/core/primitives.js"; import { NullStream, StringStream } from "../../src/core/stream.js"; +import { GlobalColorSpaceCache } from "../../src/core/image_utils.js"; import { XRefMock } from "./test_utils.js"; describe("Default appearance", function () { @@ -56,7 +57,7 @@ describe("Default appearance", function () { }); describe("parseAppearanceStream", () => { - let evaluatorOptions, xref; + let evaluatorOptions, xref, globalColorSpaceCache; beforeAll(function () { evaluatorOptions = { @@ -64,11 +65,13 @@ describe("Default appearance", function () { isOffscreenCanvasSupported: false, }; xref = new XRefMock(); + globalColorSpaceCache = new GlobalColorSpaceCache(); }); afterAll(function () { evaluatorOptions = null; xref = null; + globalColorSpaceCache = null; }); it("should parse a FreeText (from Acrobat) appearance", () => { @@ -101,9 +104,14 @@ describe("Default appearance", function () { fontName: "Helv", fontColor: new Uint8ClampedArray([107, 217, 41]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); @@ -122,9 +130,14 @@ describe("Default appearance", function () { fontName: "Helv", fontColor: new Uint8ClampedArray([237, 43, 112]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); @@ -159,9 +172,14 @@ describe("Default appearance", function () { fontName: "TT1", fontColor: new Uint8ClampedArray([135, 78, 254]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); @@ -182,9 +200,14 @@ describe("Default appearance", function () { fontName: "Helv", fontColor: new Uint8ClampedArray([16, 124, 16]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); @@ -208,9 +231,14 @@ describe("Default appearance", function () { fontName: "FXF0", fontColor: new Uint8ClampedArray([149, 63, 60]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); @@ -232,9 +260,14 @@ describe("Default appearance", function () { fontName: "Invalid_font", fontColor: new Uint8ClampedArray([0, 85, 127]), }; - expect(parseAppearanceStream(appearance, evaluatorOptions, xref)).toEqual( - result - ); + expect( + parseAppearanceStream( + appearance, + evaluatorOptions, + xref, + globalColorSpaceCache + ) + ).toEqual(result); expect(appearance.pos).toEqual(0); }); }); From f5eba738b4b495051c362f90a78d934d58eb5570 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 28 Feb 2025 15:21:52 +0100 Subject: [PATCH 328/338] Fix flakiness of CSS-only zoom test Update the test to wait for the `pagerendered`` event of a specific page (1), so that the `pagerendered`` event of other pages from a previously running render doesn't resolve the `waitForPageRendered` promise. --- test/integration/test_utils.mjs | 28 ++++++++++++++++++---------- test/integration/viewer_spec.mjs | 4 ++-- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/test/integration/test_utils.mjs b/test/integration/test_utils.mjs index bd0af5f56612f..3d67f7fcd4e47 100644 --- a/test/integration/test_utils.mjs +++ b/test/integration/test_utils.mjs @@ -568,16 +568,24 @@ function waitForAnnotationModeChanged(page) { }); } -function waitForPageRendered(page) { - return createPromise(page, resolve => { - const { eventBus } = window.PDFViewerApplication; - eventBus.on("pagerendered", function handler(e) { - if (!e.isDetailView) { - resolve(); - eventBus.off("pagerendered", handler); - } - }); - }); +function waitForPageRendered(page, pageNumber) { + return page.evaluateHandle( + number => [ + new Promise(resolve => { + const { eventBus } = window.PDFViewerApplication; + eventBus.on("pagerendered", function handler(e) { + if ( + !e.isDetailView && + (number === undefined || e.pageNumber === number) + ) { + resolve(); + eventBus.off("pagerendered", handler); + } + }); + }), + ], + pageNumber + ); } function waitForEditorMovedInDOM(page) { diff --git a/test/integration/viewer_spec.mjs b/test/integration/viewer_spec.mjs index e5988d27265bd..8bc58fee87ff6 100644 --- a/test/integration/viewer_spec.mjs +++ b/test/integration/viewer_spec.mjs @@ -328,7 +328,7 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 2; - const handle = await waitForPageRendered(page); + const handle = await waitForPageRendered(page, 1); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0, @@ -356,7 +356,7 @@ describe("PDF viewer", () => { const originalCanvasSize = await getCanvasSize(page); const factor = 4; - const handle = await waitForPageRendered(page); + const handle = await waitForPageRendered(page, 1); await page.evaluate(scaleFactor => { window.PDFViewerApplication.pdfViewer.increaseScale({ drawingDelay: 0, From ab39c97f3c61670d1f209a39553d74911e48c09b Mon Sep 17 00:00:00 2001 From: Yeoh Joer Date: Fri, 28 Feb 2025 02:49:44 +0800 Subject: [PATCH 329/338] Add the missing return type for `PDFWorker.fromPort()` --- src/display/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/display/api.js b/src/display/api.js index d5aff8bc9d09a..94572164f7ee5 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -2336,6 +2336,7 @@ class PDFWorker { /** * @param {PDFWorkerParameters} params - The worker initialization parameters. + * @returns {PDFWorker} */ static fromPort(params) { if (typeof PDFJSDev !== "undefined" && PDFJSDev.test("MOZCENTRAL")) { From b2308c27bff79ea3fa42e0fcc0e54521ef32d776 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Thu, 27 Feb 2025 12:59:58 +0100 Subject: [PATCH 330/338] Don't bundle the `FakeMLManager` class in regular builds Given that this functionality is only used in the development viewer and in TESTING builds, there's no reason to include this in the regular builds. --- web/genericcom.js | 155 ++++++++++++++++++++++++---------------------- 1 file changed, 80 insertions(+), 75 deletions(-) diff --git a/web/genericcom.js b/web/genericcom.js index 8e57bfc6c1579..a2d74ba09317a 100644 --- a/web/genericcom.js +++ b/web/genericcom.js @@ -53,6 +53,12 @@ class ExternalServices extends BaseExternalServices { } class MLManager { + static { + if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { + this.getFakeMLManager = options => new FakeMLManager(options); + } + } + async isEnabledFor(_name) { return false; } @@ -68,83 +74,82 @@ class MLManager { guess(_data) {} toggleService(_name, _enabled) {} - - static getFakeMLManager(options) { - return new FakeMLManager(options); - } } -class FakeMLManager { - eventBus = null; - - hasProgress = false; - - constructor({ enableGuessAltText, enableAltTextModelDownload }) { - this.enableGuessAltText = enableGuessAltText; - this.enableAltTextModelDownload = enableAltTextModelDownload; - } - - setEventBus(eventBus, abortSignal) { - this.eventBus = eventBus; - } - - async isEnabledFor(_name) { - return this.enableGuessAltText; - } - - async deleteModel(_name) { - this.enableAltTextModelDownload = false; - return null; - } - - async loadModel(_name) {} - - async downloadModel(_name) { - // Simulate downloading the model but with progress. - // The progress can be seen in the new alt-text dialog. - this.hasProgress = true; - - const { promise, resolve } = Promise.withResolvers(); - const total = 1e8; - const end = 1.5 * total; - const increment = 5e6; - let loaded = 0; - const id = setInterval(() => { - loaded += increment; - if (loaded <= end) { - this.eventBus.dispatch("loadaiengineprogress", { - source: this, - detail: { - total, - totalLoaded: loaded, - finished: loaded + increment >= end, - }, - }); - return; - } - clearInterval(id); - this.hasProgress = false; - this.enableAltTextModelDownload = true; - resolve(true); - }, 900); - return promise; - } - - isReady(_name) { - return this.enableAltTextModelDownload; - } - - guess({ request: { data } }) { - return new Promise(resolve => { - setTimeout(() => { - resolve(data ? { output: "Fake alt text." } : { error: true }); - }, 3000); - }); - } - - toggleService(_name, enabled) { - this.enableGuessAltText = enabled; - } +if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) { + // eslint-disable-next-line no-var + var FakeMLManager = class { + eventBus = null; + + hasProgress = false; + + constructor({ enableGuessAltText, enableAltTextModelDownload }) { + this.enableGuessAltText = enableGuessAltText; + this.enableAltTextModelDownload = enableAltTextModelDownload; + } + + setEventBus(eventBus, abortSignal) { + this.eventBus = eventBus; + } + + async isEnabledFor(_name) { + return this.enableGuessAltText; + } + + async deleteModel(_name) { + this.enableAltTextModelDownload = false; + return null; + } + + async loadModel(_name) {} + + async downloadModel(_name) { + // Simulate downloading the model but with progress. + // The progress can be seen in the new alt-text dialog. + this.hasProgress = true; + + const { promise, resolve } = Promise.withResolvers(); + const total = 1e8; + const end = 1.5 * total; + const increment = 5e6; + let loaded = 0; + const id = setInterval(() => { + loaded += increment; + if (loaded <= end) { + this.eventBus.dispatch("loadaiengineprogress", { + source: this, + detail: { + total, + totalLoaded: loaded, + finished: loaded + increment >= end, + }, + }); + return; + } + clearInterval(id); + this.hasProgress = false; + this.enableAltTextModelDownload = true; + resolve(true); + }, 900); + return promise; + } + + isReady(_name) { + return this.enableAltTextModelDownload; + } + + guess({ request: { data } }) { + return new Promise(resolve => { + setTimeout(() => { + resolve(data ? { output: "Fake alt text." } : { error: true }); + }, 3000); + }); + } + + toggleService(_name, enabled) { + this.enableGuessAltText = enabled; + } + }; } export { ExternalServices, initCom, MLManager, Preferences }; From 8bfffa6a19ef8b22dcdf9c57ab7a3dcdc320ed6c Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 2 Mar 2025 13:09:04 +0100 Subject: [PATCH 331/338] Replace a loop with `TypedArray.prototype.fill()` in the `RunLengthStream` class This is a tiny bit shorter, which cannot hurt. --- src/core/run_length_stream.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/run_length_stream.js b/src/core/run_length_stream.js index 8df345fa7ea4b..72e66daa23d5a 100644 --- a/src/core/run_length_stream.js +++ b/src/core/run_length_stream.js @@ -48,11 +48,9 @@ class RunLengthStream extends DecodeStream { } } else { n = 257 - n; - const b = repeatHeader[1]; buffer = this.ensureBuffer(bufferLength + n + 1); - for (let i = 0; i < n; i++) { - buffer[bufferLength++] = b; - } + buffer.fill(repeatHeader[1], bufferLength, bufferLength + n); + bufferLength += n; } this.bufferLength = bufferLength; } From 8d15e22737c2835fe7f20a7c45d278c751674e9b Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 28 Feb 2025 17:05:15 +0100 Subject: [PATCH 332/338] Write string-data into the `.error`-file created for broken test-manifest links (issue 19579) This appears to have broken in PR 17431, since prior to that the `downloadFile` function returned a string (via a callback) on failure and now we're instead rejecting with an Error. --- test/downloadutils.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/downloadutils.mjs b/test/downloadutils.mjs index 6d80e2153f425..cd2123958aa9f 100644 --- a/test/downloadutils.mjs +++ b/test/downloadutils.mjs @@ -88,7 +88,7 @@ async function downloadManifestFiles(manifest) { } catch (ex) { console.error(`Error during downloading of ${url}:`, ex); fs.writeFileSync(file, ""); // making it empty file - fs.writeFileSync(`${file}.error`, ex); + fs.writeFileSync(`${file}.error`, ex.toString()); } } } From 85f67a8832113c3c5ebc9d34bdabd67d57782076 Mon Sep 17 00:00:00 2001 From: David Huggins-Daines Date: Fri, 28 Feb 2025 11:25:52 -0500 Subject: [PATCH 333/338] Be sure to consume responses in case of error in downloading test files (issue 19580) As mentioned in https://nodejs.org/docs/latest-v20.x/api/http.html#httpgeturl-options-callback if a request results in an error, you still need to consume the data, or call `response.resume()`, or your code will hang waiting for the request to close. --- test/downloadutils.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/downloadutils.mjs b/test/downloadutils.mjs index cd2123958aa9f..aee1f4ae709b2 100644 --- a/test/downloadutils.mjs +++ b/test/downloadutils.mjs @@ -42,6 +42,7 @@ function downloadFile(file, url, redirects = 0) { .get(url, async function (response) { if ([301, 302, 307, 308].includes(response.statusCode)) { if (redirects > 10) { + response.resume(); reject(new Error("Too many redirects")); return; } @@ -50,12 +51,14 @@ function downloadFile(file, url, redirects = 0) { await downloadFile(file, redirectTo, ++redirects); resolve(); } catch (ex) { + response.resume(); reject(ex); } return; } if (response.statusCode !== 200) { + response.resume(); reject(new Error(`HTTP ${response.statusCode}`)); return; } From d83e82b7d4c77e29733df1cc79207fb3074999f0 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 28 Feb 2025 14:54:16 +0100 Subject: [PATCH 334/338] Re-use the `isValidExplicitDest` helper function in the worker/viewer Currently we re-implement the same helper function twice, which in hindsight seems like the wrong decision since that way it's quite easy for the implementations to accidentally diverge. The reason for doing it this way was because the code in the worker-thread is able to check for `Ref`- and `Name`-instances directly, which obviously isn't possible in the viewer but can be solved by passing validation-functions to the helper. --- src/core/catalog.js | 72 ++++++++++------------------------------- src/display/api.js | 25 ++++++++------ src/pdf.js | 2 ++ src/shared/util.js | 49 ++++++++++++++++++++++++++++ test/unit/pdf_spec.js | 2 ++ web/pdf_link_service.js | 57 ++------------------------------ web/pdfjs.js | 2 ++ 7 files changed, 90 insertions(+), 119 deletions(-) diff --git a/src/core/catalog.js b/src/core/catalog.js index 0fb4eb115f5c6..66a26a2edfc43 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -14,15 +14,7 @@ */ import { - collectActions, - isNumberArray, - MissingDataException, - PDF_VERSION_REGEXP, - recoverJsURL, - toRomanNumerals, - XRefEntryException, -} from "./core_utils.js"; -import { + _isValidExplicitDest, createValidAbsoluteUrl, DocumentActionEventType, FormatError, @@ -34,6 +26,15 @@ import { stringToUTF8String, warn, } from "../shared/util.js"; +import { + collectActions, + isNumberArray, + MissingDataException, + PDF_VERSION_REGEXP, + recoverJsURL, + toRomanNumerals, + XRefEntryException, +} from "./core_utils.js"; import { Dict, isDict, @@ -53,52 +54,13 @@ import { FileSpec } from "./file_spec.js"; import { MetadataParser } from "./metadata_parser.js"; import { StructTreeRoot } from "./struct_tree.js"; -function isValidExplicitDest(dest) { - if (!Array.isArray(dest) || dest.length < 2) { - return false; - } - const [page, zoom, ...args] = dest; - if (!(page instanceof Ref) && !Number.isInteger(page)) { - return false; - } - if (!(zoom instanceof Name)) { - return false; - } - const argsLen = args.length; - let allowNull = true; - switch (zoom.name) { - case "XYZ": - if (argsLen < 2 || argsLen > 3) { - return false; - } - break; - case "Fit": - case "FitB": - return argsLen === 0; - case "FitH": - case "FitBH": - case "FitV": - case "FitBV": - if (argsLen > 1) { - return false; - } - break; - case "FitR": - if (argsLen !== 4) { - return false; - } - allowNull = false; - break; - default: - return false; - } - for (const arg of args) { - if (!(typeof arg === "number" || (allowNull && arg === null))) { - return false; - } - } - return true; -} +const isRef = v => v instanceof Ref; + +const isValidExplicitDest = _isValidExplicitDest.bind( + null, + /* validRef = */ isRef, + /* validName = */ isName +); function fetchDest(dest) { if (dest instanceof Dict) { diff --git a/src/display/api.js b/src/display/api.js index 94572164f7ee5..0ca74fe8e4aaa 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -18,6 +18,7 @@ */ import { + _isValidExplicitDest, AbortException, AnnotationMode, assert, @@ -595,15 +596,20 @@ function getFactoryUrlProp(val) { throw new Error(`Invalid factory url: "${val}" must include trailing slash.`); } -function isRefProxy(ref) { - return ( - typeof ref === "object" && - Number.isInteger(ref?.num) && - ref.num >= 0 && - Number.isInteger(ref?.gen) && - ref.gen >= 0 - ); -} +const isRefProxy = v => + typeof v === "object" && + Number.isInteger(v?.num) && + v.num >= 0 && + Number.isInteger(v?.gen) && + v.gen >= 0; + +const isNameProxy = v => typeof v === "object" && typeof v?.name === "string"; + +const isValidExplicitDest = _isValidExplicitDest.bind( + null, + /* validRef = */ isRefProxy, + /* validName = */ isNameProxy +); /** * @typedef {Object} OnProgressParameters @@ -3485,6 +3491,7 @@ const build = export { build, getDocument, + isValidExplicitDest, LoopbackPort, PDFDataRangeTransport, PDFDocumentLoadingTask, diff --git a/src/pdf.js b/src/pdf.js index 351e5cfed42d3..eea401cd6c893 100644 --- a/src/pdf.js +++ b/src/pdf.js @@ -45,6 +45,7 @@ import { import { build, getDocument, + isValidExplicitDest, PDFDataRangeTransport, PDFWorker, version, @@ -117,6 +118,7 @@ export { InvalidPDFException, isDataScheme, isPdfFile, + isValidExplicitDest, noContextMenu, normalizeUnicode, OPS, diff --git a/src/shared/util.js b/src/shared/util.js index baf53a1b0ff14..5775c0d4bfb6e 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -1080,6 +1080,54 @@ function getUuid() { const AnnotationPrefix = "pdfjs_internal_id_"; +function _isValidExplicitDest(validRef, validName, dest) { + if (!Array.isArray(dest) || dest.length < 2) { + return false; + } + const [page, zoom, ...args] = dest; + if (!validRef(page) && !Number.isInteger(page)) { + return false; + } + if (!validName(zoom)) { + return false; + } + const argsLen = args.length; + let allowNull = true; + switch (zoom.name) { + case "XYZ": + if (argsLen < 2 || argsLen > 3) { + return false; + } + break; + case "Fit": + case "FitB": + return argsLen === 0; + case "FitH": + case "FitBH": + case "FitV": + case "FitBV": + if (argsLen > 1) { + return false; + } + break; + case "FitR": + if (argsLen !== 4) { + return false; + } + allowNull = false; + break; + default: + return false; + } + for (const arg of args) { + if (typeof arg === "number" || (allowNull && arg === null)) { + continue; + } + return false; + } + return true; +} + // TODO: Remove this once `Uint8Array.prototype.toHex` is generally available. function toHexUtil(arr) { if (Uint8Array.prototype.toHex) { @@ -1119,6 +1167,7 @@ if ( } export { + _isValidExplicitDest, AbortException, AnnotationActionEventType, AnnotationBorderStyleType, diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js index 66b85d4d96519..95267085ea6cf 100644 --- a/test/unit/pdf_spec.js +++ b/test/unit/pdf_spec.js @@ -36,6 +36,7 @@ import { import { build, getDocument, + isValidExplicitDest, PDFDataRangeTransport, PDFWorker, version, @@ -94,6 +95,7 @@ const expectedAPI = Object.freeze({ InvalidPDFException, isDataScheme, isPdfFile, + isValidExplicitDest, noContextMenu, normalizeUnicode, OPS, diff --git a/web/pdf_link_service.js b/web/pdf_link_service.js index 14ffb9c10134b..e22243639abc1 100644 --- a/web/pdf_link_service.js +++ b/web/pdf_link_service.js @@ -16,6 +16,7 @@ /** @typedef {import("./event_utils").EventBus} EventBus */ /** @typedef {import("./interfaces").IPDFLinkService} IPDFLinkService */ +import { isValidExplicitDest } from "pdfjs-lib"; import { parseQueryString } from "./ui_utils.js"; const DEFAULT_LINK_REL = "noopener noreferrer nofollow"; @@ -415,7 +416,7 @@ class PDFLinkService { } } catch {} - if (typeof dest === "string" || PDFLinkService.#isValidExplicitDest(dest)) { + if (typeof dest === "string" || isValidExplicitDest(dest)) { this.goToDestination(dest); return; } @@ -486,60 +487,6 @@ class PDFLinkService { optionalContentConfig ); } - - static #isValidExplicitDest(dest) { - if (!Array.isArray(dest) || dest.length < 2) { - return false; - } - const [page, zoom, ...args] = dest; - if ( - !( - typeof page === "object" && - Number.isInteger(page?.num) && - Number.isInteger(page?.gen) - ) && - !Number.isInteger(page) - ) { - return false; - } - if (!(typeof zoom === "object" && typeof zoom?.name === "string")) { - return false; - } - const argsLen = args.length; - let allowNull = true; - switch (zoom.name) { - case "XYZ": - if (argsLen < 2 || argsLen > 3) { - return false; - } - break; - case "Fit": - case "FitB": - return argsLen === 0; - case "FitH": - case "FitBH": - case "FitV": - case "FitBV": - if (argsLen > 1) { - return false; - } - break; - case "FitR": - if (argsLen !== 4) { - return false; - } - allowNull = false; - break; - default: - return false; - } - for (const arg of args) { - if (!(typeof arg === "number" || (allowNull && arg === null))) { - return false; - } - } - return true; - } } /** diff --git a/web/pdfjs.js b/web/pdfjs.js index 47739ef5223a4..2c8f7fff7e48f 100644 --- a/web/pdfjs.js +++ b/web/pdfjs.js @@ -39,6 +39,7 @@ const { InvalidPDFException, isDataScheme, isPdfFile, + isValidExplicitDest, noContextMenu, normalizeUnicode, OPS, @@ -90,6 +91,7 @@ export { InvalidPDFException, isDataScheme, isPdfFile, + isValidExplicitDest, noContextMenu, normalizeUnicode, OPS, From 357b3afa00df99a7f7dd9d2d9041dbf2595b5cba Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 2 Mar 2025 14:48:08 +0100 Subject: [PATCH 335/338] Use arrow function with various Array methods A lot of this is quite old code, which we can shorten slightly by using arrow functions instead of "regular" functions. --- src/core/chunked_stream.js | 4 +--- src/core/fonts.js | 8 ++------ src/core/jbig2.js | 4 +--- src/core/xml_parser.js | 6 +----- test/font/jasmine-boot.js | 5 +---- test/stats/statcmp.js | 12 +++--------- test/test.mjs | 4 +--- test/unit/api_spec.js | 6 +++--- test/unit/jasmine-boot.js | 5 +---- web/debugger.mjs | 8 ++------ 10 files changed, 16 insertions(+), 46 deletions(-) diff --git a/src/core/chunked_stream.js b/src/core/chunked_stream.js index b4ebe5b64c53d..c77f62531ed51 100644 --- a/src/core/chunked_stream.js +++ b/src/core/chunked_stream.js @@ -414,9 +414,7 @@ class ChunkedStreamManager { } } - chunksToRequest.sort(function (a, b) { - return a - b; - }); + chunksToRequest.sort((a, b) => a - b); return this._requestChunks(chunksToRequest); } diff --git a/src/core/fonts.js b/src/core/fonts.js index 8ebdcb810d978..a2e090d61f500 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -576,9 +576,7 @@ function getRanges(glyphs, toUnicodeExtraMap, numGlyphs) { if (codes.length === 0) { codes.push({ fontCharCode: 0, glyphId: 0 }); } - codes.sort(function fontGetRangesSort(a, b) { - return a.fontCharCode - b.fontCharCode; - }); + codes.sort((a, b) => a.fontCharCode - b.fontCharCode); // Split the sorted codes into ranges. const ranges = []; @@ -1777,9 +1775,7 @@ class Font { } // removing duplicate entries - mappings.sort(function (a, b) { - return a.charCode - b.charCode; - }); + mappings.sort((a, b) => a.charCode - b.charCode); const finalMappings = [], seenCharCodes = new Set(); for (const map of mappings) { diff --git a/src/core/jbig2.js b/src/core/jbig2.js index 448f23e4fd863..df689d9638de5 100644 --- a/src/core/jbig2.js +++ b/src/core/jbig2.js @@ -374,9 +374,7 @@ function decodeBitmap( // Sorting is non-standard, and it is not required. But sorting increases // the number of template bits that can be reused from the previous // contextLabel in the main loop. - template.sort(function (a, b) { - return a.y - b.y || a.x - b.x; - }); + template.sort((a, b) => a.y - b.y || a.x - b.x); const templateLength = template.length; const templateX = new Int8Array(templateLength); diff --git a/src/core/xml_parser.js b/src/core/xml_parser.js index a1a60bf063f2a..665c46828b41f 100644 --- a/src/core/xml_parser.js +++ b/src/core/xml_parser.js @@ -321,11 +321,7 @@ class SimpleDOMNode { if (!this.childNodes) { return this.nodeValue || ""; } - return this.childNodes - .map(function (child) { - return child.textContent; - }) - .join(""); + return this.childNodes.map(child => child.textContent).join(""); } get children() { diff --git a/test/font/jasmine-boot.js b/test/font/jasmine-boot.js index a8b81ded0964d..71e1ba4962792 100644 --- a/test/font/jasmine-boot.js +++ b/test/font/jasmine-boot.js @@ -49,10 +49,7 @@ async function initializePDFJS(callback) { "pdfjs-test/font/font_os2_spec.js", "pdfjs-test/font/font_post_spec.js", "pdfjs-test/font/font_fpgm_spec.js", - ].map(function (moduleName) { - // eslint-disable-next-line no-unsanitized/method - return import(moduleName); - }) + ].map(moduleName => import(moduleName)) // eslint-disable-line no-unsanitized/method ); callback(); diff --git a/test/stats/statcmp.js b/test/stats/statcmp.js index e5ba75441b707..eca8457bb0527 100644 --- a/test/stats/statcmp.js +++ b/test/stats/statcmp.js @@ -64,9 +64,7 @@ function flatten(stats) { }); // Use only overall results if not grouped by 'stat' if (!options.groupBy.includes("stat")) { - rows = rows.filter(function (s) { - return s.stat === "Overall"; - }); + rows = rows.filter(s => s.stat === "Overall"); } return rows; } @@ -129,9 +127,7 @@ function stat(baseline, current) { } const rows = []; // collect rows and measure column widths - const width = labels.map(function (s) { - return s.length; - }); + const width = labels.map(s => s.length); rows.push(labels); for (const key of keys) { const baselineMean = mean(baselineGroup[key]); @@ -162,9 +158,7 @@ function stat(baseline, current) { } // add horizontal line - const hline = width.map(function (w) { - return new Array(w + 1).join("-"); - }); + const hline = width.map(w => new Array(w + 1).join("-")); rows.splice(1, 0, hline); // print output diff --git a/test/test.mjs b/test/test.mjs index d685dce9d8fb9..d837f46ac14e1 100644 --- a/test/test.mjs +++ b/test/test.mjs @@ -1051,9 +1051,7 @@ async function closeSession(browser) { await session.browser.close(); } session.closed = true; - const allClosed = sessions.every(function (s) { - return s.closed; - }); + const allClosed = sessions.every(s => s.closed); if (allClosed) { if (tempDir) { fs.rmSync(tempDir, { recursive: true, force: true }); diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 5532cf7a5d988..8c991f0c67a05 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -4869,9 +4869,9 @@ Caron Broadcasting, Inc., an Ohio corporation (“Lessee”).`) // Issue 6205 reported an issue with font rendering, so clear the loaded // fonts so that we can see whether loading PDFs in parallel does not // cause any issues with the rendered fonts. - const destroyPromises = loadingTasks.map(function (loadingTask) { - return loadingTask.destroy(); - }); + const destroyPromises = loadingTasks.map(loadingTask => + loadingTask.destroy() + ); await Promise.all(destroyPromises); }); diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 72751cdf25d90..7dd0a09869c81 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -100,10 +100,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/xfa_serialize_data_spec.js", "pdfjs-test/unit/xfa_tohtml_spec.js", "pdfjs-test/unit/xml_spec.js", - ].map(function (moduleName) { - // eslint-disable-next-line no-unsanitized/method - return import(moduleName); - }) + ].map(moduleName => import(moduleName)) // eslint-disable-line no-unsanitized/method ); if (isNodeJS) { diff --git a/web/debugger.mjs b/web/debugger.mjs index 59c1871b3eb32..c85b31f7a49e2 100644 --- a/web/debugger.mjs +++ b/web/debugger.mjs @@ -398,9 +398,7 @@ class Stepper { } getNextBreakPoint() { - this.breakPoints.sort(function (a, b) { - return a - b; - }); + this.breakPoints.sort((a, b) => a - b); for (const breakPoint of this.breakPoints) { if (breakPoint > this.currentIdx) { return breakPoint; @@ -487,9 +485,7 @@ const Stats = (function Stats() { statsDiv.textContent = stat.toString(); wrapper.append(title, statsDiv); stats.push({ pageNumber, div: wrapper }); - stats.sort(function (a, b) { - return a.pageNumber - b.pageNumber; - }); + stats.sort((a, b) => a.pageNumber - b.pageNumber); clear(this.panel); for (const entry of stats) { this.panel.append(entry.div); From e4177fb71d61f032f464099c320320403176e576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=B2=20Ribaudo?= Date: Fri, 28 Feb 2025 14:20:31 +0100 Subject: [PATCH 336/338] Fix autolinking with highlighted search results The current logic assumes that all spans in the text layer contain only one text node, and thus that the position information returned by `highlighter._convertMatches` can be directly used on the element's only child. This is not true in case of highlighted search results: they will be injected in the DOM as `` elements, causing the ``s in the text layer to have more than one child. This patch fixes the problem by properly converting the (span, offset) pair in a (textNode, offset) pair that points to the right text node. --- test/integration/autolinker_spec.mjs | 85 +++++++++++++++++++++++++++- web/autolinker.js | 46 ++++++++++++++- 2 files changed, 127 insertions(+), 4 deletions(-) diff --git a/test/integration/autolinker_spec.mjs b/test/integration/autolinker_spec.mjs index 5a8321924a8f4..a7cbecd29c5f4 100644 --- a/test/integration/autolinker_spec.mjs +++ b/test/integration/autolinker_spec.mjs @@ -13,10 +13,46 @@ * limitations under the License. */ -import { closePages, createPromise, loadAndWait } from "./test_utils.mjs"; +import { + awaitPromise, + closePages, + createPromise, + loadAndWait, +} from "./test_utils.mjs"; -function waitForLinkAnnotations(page) { +function waitForLinkAnnotations(page, pageNumber) { + return page.evaluateHandle( + number => [ + new Promise(resolve => { + const { eventBus } = window.PDFViewerApplication; + eventBus.on("linkannotationsadded", function listener(e) { + if (number === undefined || e.pageNumber === number) { + resolve(); + eventBus.off("linkannotationsadded", listener); + } + }); + }), + ], + pageNumber + ); +} + +function recordInitialLinkAnnotationsEvent(eventBus) { + globalThis.initialLinkAnnotationsEventFired = false; + eventBus.on( + "linkannotationsadded", + () => { + globalThis.initialLinkAnnotationsEventFired = true; + }, + { once: true } + ); +} +function waitForInitialLinkAnnotations(page) { return createPromise(page, resolve => { + if (globalThis.initialLinkAnnotationsEventFired) { + resolve(); + return; + } window.PDFViewerApplication.eventBus.on("linkannotationsadded", resolve, { once: true, }); @@ -178,4 +214,49 @@ describe("autolinker", function () { ); }); }); + + describe("when highlighting search results", function () { + let pages; + + beforeAll(async () => { + pages = await loadAndWait( + "issue3115r.pdf", + ".annotationLayer", + null, + { eventBusSetup: recordInitialLinkAnnotationsEvent }, + { enableAutoLinking: true } + ); + }); + + afterAll(async () => { + await closePages(pages); + }); + + it("must find links that overlap with search results", async () => { + await Promise.all( + pages.map(async ([browserName, page]) => { + await awaitPromise(await waitForInitialLinkAnnotations(page)); + + const linkAnnotationsPromise = await waitForLinkAnnotations(page, 36); + + // Search for "rich.edu" + await page.click("#viewFindButton"); + await page.waitForSelector("#viewFindButton", { hidden: false }); + await page.type("#findInput", "rich.edu"); + await page.waitForSelector(".textLayer .highlight"); + + await awaitPromise(linkAnnotationsPromise); + + const urls = await page.$$eval( + ".page[data-page-number='36'] > .annotationLayer > .linkAnnotation > a", + annotations => annotations.map(a => a.href) + ); + + expect(urls) + .withContext(`In ${browserName}`) + .toContain(jasmine.stringContaining("rich.edu")); + }) + ); + }); + }); }); diff --git a/web/autolinker.js b/web/autolinker.js index d3ee14c282265..fe28235c2bdd4 100644 --- a/web/autolinker.js +++ b/web/autolinker.js @@ -69,13 +69,55 @@ function calculateLinkPosition(range, pdfPageView) { return { quadPoints, rect }; } +/** + * Given a DOM node `container` and an index into its text contents `offset`, + * returns a pair consisting of text node that the `offset` actually points + * to, together with the offset relative to that text node. + * When the offset points at the boundary between two node, the result will + * point to the first text node in depth-first traversal order. + * + * For example, given this DOM: + *

    abcdefghi

    + * + * textPosition(p, 0) -> [#text "abc", 0] (before `a`) + * textPosition(p, 2) -> [#text "abc", 2] (between `b` and `c`) + * textPosition(p, 3) -> [#text "abc", 3] (after `c`) + * textPosition(p, 5) -> [#text "def", 2] (between `e` and `f`) + * textPosition(p, 6) -> [#text "def", 3] (after `f`) + */ +function textPosition(container, offset) { + let currentContainer = container; + do { + if (currentContainer.nodeType === Node.TEXT_NODE) { + const currentLength = currentContainer.textContent.length; + if (offset <= currentLength) { + return [currentContainer, offset]; + } + offset -= currentLength; + } else if (currentContainer.firstChild) { + currentContainer = currentContainer.firstChild; + continue; + } + + while (!currentContainer.nextSibling && currentContainer !== container) { + currentContainer = currentContainer.parentNode; + } + if (currentContainer !== container) { + currentContainer = currentContainer.nextSibling; + } + } while (currentContainer !== container); + throw new Error("Offset is bigger than container's contents length."); +} + function createLinkAnnotation({ url, index, length }, pdfPageView, id) { const highlighter = pdfPageView._textHighlighter; const [{ begin, end }] = highlighter._convertMatches([index], [length]); const range = new Range(); - range.setStart(highlighter.textDivs[begin.divIdx].firstChild, begin.offset); - range.setEnd(highlighter.textDivs[end.divIdx].firstChild, end.offset); + range.setStart( + ...textPosition(highlighter.textDivs[begin.divIdx], begin.offset) + ); + range.setEnd(...textPosition(highlighter.textDivs[end.divIdx], end.offset)); return { id: `inferred_link_${id}`, From c948f535423c244254e4a6ea9e98b95c63eefb37 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 2 Mar 2025 18:58:52 +0100 Subject: [PATCH 337/338] Use arrow functions with some `Promise.then` calls A lot of this is fairly old code, which we can shorten slightly by using arrow functions instead of "regular" functions. --- src/core/annotation.js | 4 +- src/core/catalog.js | 4 +- src/core/document.js | 4 +- src/core/worker.js | 22 ++++----- test/unit/api_spec.js | 109 +++++++++++++++++++---------------------- 5 files changed, 63 insertions(+), 80 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 23c2440294225..9ef394a31850d 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -1164,9 +1164,7 @@ class Annotation { } const objectLoader = new ObjectLoader(resources, keys, resources.xref); - return objectLoader.load().then(function () { - return resources; - }); + return objectLoader.load().then(() => resources); }); } diff --git a/src/core/catalog.js b/src/core/catalog.js index 66a26a2edfc43..5e800cb89d98c 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -1475,9 +1475,7 @@ class Catalog { if (!found) { throw new FormatError("Kid reference not found in parent's kids."); } - return Promise.all(kidPromises).then(function () { - return [total, parentRef]; - }); + return Promise.all(kidPromises).then(() => [total, parentRef]); }); } diff --git a/src/core/document.js b/src/core/document.js index 755e07defbd6d..fad6aad0af6d4 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -546,9 +546,7 @@ class Page { resources: this.resources, operatorList: opList, }) - .then(function () { - return opList; - }); + .then(() => opList); }); // Fetch the page's annotations and add their operator lists to the diff --git a/src/core/worker.js b/src/core/worker.js index f1ab5b57c6d24..3015e4d4de8ef 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -450,9 +450,9 @@ class WorkerMessageHandler { }); handler.on("GetPageJSActions", function ({ pageIndex }) { - return pdfManager.getPage(pageIndex).then(function (page) { - return pdfManager.ensure(page, "jsActions"); - }); + return pdfManager + .getPage(pageIndex) + .then(page => pdfManager.ensure(page, "jsActions")); }); handler.on("GetOutline", function (data) { @@ -479,9 +479,7 @@ class WorkerMessageHandler { }); handler.on("GetData", function (data) { - return pdfManager.requestLoadedStream().then(function (stream) { - return stream.bytes; - }); + return pdfManager.requestLoadedStream().then(stream => stream.bytes); }); handler.on("GetAnnotations", function ({ pageIndex, intent }) { @@ -812,9 +810,9 @@ class WorkerMessageHandler { }); handler.on("GetStructTree", function (data) { - return pdfManager.getPage(data.pageIndex).then(function (page) { - return pdfManager.ensure(page, "getStructTree"); - }); + return pdfManager + .getPage(data.pageIndex) + .then(page => pdfManager.ensure(page, "getStructTree")); }); handler.on("FontFallback", function (data) { @@ -872,9 +870,9 @@ class WorkerMessageHandler { return pdfManager.ensureDoc("startXRef"); }); handler.on("GetAnnotArray", function (data) { - return pdfManager.getPage(data.pageIndex).then(function (page) { - return page.annotations.map(a => a.toString()); - }); + return pdfManager + .getPage(data.pageIndex) + .then(page => page.annotations.map(a => a.toString())); }); } diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index 8c991f0c67a05..3acc4c38f7a19 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -192,9 +192,9 @@ describe("api", function () { expect(loadingTask instanceof PDFDocumentLoadingTask).toEqual(true); // This can be somewhat random -- we cannot guarantee perfect // 'Terminate' message to the worker before/after setting up pdfManager. - const destroyed = loadingTask._worker.promise.then(function () { - return loadingTask.destroy(); - }); + const destroyed = loadingTask._worker.promise.then(() => + loadingTask.destroy() + ); await destroyed; expect(true).toEqual(true); @@ -861,9 +861,9 @@ describe("api", function () { expect(!!worker).toEqual(true); }); - const destroyPromise = loadingTask.promise.then(function () { - return loadingTask.destroy(); - }); + const destroyPromise = loadingTask.promise.then(() => + loadingTask.destroy() + ); await destroyPromise; const destroyedWorker = loadingTask._worker; @@ -890,9 +890,9 @@ describe("api", function () { expect(messageHandlerPort === worker.port).toEqual(true); }); - const destroyPromise = loadingTask.promise.then(function () { - return loadingTask.destroy(); - }); + const destroyPromise = loadingTask.promise.then(() => + loadingTask.destroy() + ); await destroyPromise; expect(worker.destroyed).toEqual(false); @@ -1141,8 +1141,8 @@ describe("api", function () { buildGetDocumentParams("Pages-tree-refs.pdf") ); - const page1 = loadingTask.promise.then(function (pdfDoc) { - return pdfDoc.getPage(1).then( + const page1 = loadingTask.promise.then(pdfDoc => + pdfDoc.getPage(1).then( function (pdfPage) { expect(pdfPage instanceof PDFPageProxy).toEqual(true); expect(pdfPage.ref).toEqual({ num: 6, gen: 0 }); @@ -1150,11 +1150,11 @@ describe("api", function () { function (reason) { throw new Error("shall not fail for valid page"); } - ); - }); + ) + ); - const page2 = loadingTask.promise.then(function (pdfDoc) { - return pdfDoc.getPage(2).then( + const page2 = loadingTask.promise.then(pdfDoc => + pdfDoc.getPage(2).then( function (pdfPage) { throw new Error("shall fail for invalid page"); }, @@ -1164,8 +1164,8 @@ describe("api", function () { "Pages tree contains circular reference." ); } - ); - }); + ) + ); await Promise.all([page1, page2]); await loadingTask.destroy(); @@ -1396,29 +1396,29 @@ describe("api", function () { it("gets page labels", async function () { // PageLabels with Roman/Arabic numerals. const loadingTask0 = getDocument(buildGetDocumentParams("bug793632.pdf")); - const promise0 = loadingTask0.promise.then(function (pdfDoc) { - return pdfDoc.getPageLabels(); - }); + const promise0 = loadingTask0.promise.then(pdfDoc => + pdfDoc.getPageLabels() + ); // PageLabels with only a label prefix. const loadingTask1 = getDocument(buildGetDocumentParams("issue1453.pdf")); - const promise1 = loadingTask1.promise.then(function (pdfDoc) { - return pdfDoc.getPageLabels(); - }); + const promise1 = loadingTask1.promise.then(pdfDoc => + pdfDoc.getPageLabels() + ); // PageLabels identical to standard page numbering. const loadingTask2 = getDocument(buildGetDocumentParams("rotation.pdf")); - const promise2 = loadingTask2.promise.then(function (pdfDoc) { - return pdfDoc.getPageLabels(); - }); + const promise2 = loadingTask2.promise.then(pdfDoc => + pdfDoc.getPageLabels() + ); // PageLabels with bad "Prefix" entries. const loadingTask3 = getDocument( buildGetDocumentParams("bad-PageLabels.pdf") ); - const promise3 = loadingTask3.promise.then(function (pdfDoc) { - return pdfDoc.getPageLabels(); - }); + const promise3 = loadingTask3.promise.then(pdfDoc => + pdfDoc.getPageLabels() + ); const pageLabels = await Promise.all([ promise0, @@ -1512,9 +1512,7 @@ describe("api", function () { ); const promise1 = loadingTask1.promise - .then(function (pdfDoc) { - return pdfDoc.getOpenAction(); - }) + .then(pdfDoc => pdfDoc.getOpenAction()) .then(function (openAction) { expect(openAction.dest).toBeUndefined(); expect(openAction.action).toEqual("Print"); @@ -1522,9 +1520,7 @@ describe("api", function () { return loadingTask1.destroy(); }); const promise2 = loadingTask2.promise - .then(function (pdfDoc) { - return pdfDoc.getOpenAction(); - }) + .then(pdfDoc => pdfDoc.getOpenAction()) .then(function (openAction) { expect(openAction.dest).toBeUndefined(); expect(openAction.action).toEqual("Print"); @@ -2064,25 +2060,25 @@ describe("api", function () { const loadingTask0 = getDocument( buildGetDocumentParams("issue9972-1.pdf") ); - const promise0 = loadingTask0.promise.then(function (pdfDoc) { - return pdfDoc.getPermissions(); - }); + const promise0 = loadingTask0.promise.then(pdfDoc => + pdfDoc.getPermissions() + ); // Printing not allowed. const loadingTask1 = getDocument( buildGetDocumentParams("issue9972-2.pdf") ); - const promise1 = loadingTask1.promise.then(function (pdfDoc) { - return pdfDoc.getPermissions(); - }); + const promise1 = loadingTask1.promise.then(pdfDoc => + pdfDoc.getPermissions() + ); // Copying not allowed. const loadingTask2 = getDocument( buildGetDocumentParams("issue9972-3.pdf") ); - const promise2 = loadingTask2.promise.then(function (pdfDoc) { - return pdfDoc.getPermissions(); - }); + const promise2 = loadingTask2.promise.then(pdfDoc => + pdfDoc.getPermissions() + ); const totalPermissionCount = Object.keys(PermissionFlag).length; const permissions = await Promise.all([promise0, promise1, promise2]); @@ -3050,9 +3046,7 @@ describe("api", function () { params.url = url.href; loadingTask = getDocument(params); return loadingTask.promise - .then(function (pdf) { - return pdf.destroy(); - }) + .then(pdf => pdf.destroy()) .then( function () { expect(expectSuccess).toEqual(true); @@ -3293,10 +3287,9 @@ describe("api", function () { const filename = "bug766086.pdf"; const defaultLoadingTask = getDocument(buildGetDocumentParams(filename)); - const defaultPromise = defaultLoadingTask.promise.then(function (pdfDoc) { - return pdfDoc.getPage(1).then(function (pdfPage) { - return pdfPage.getAnnotations(); - }); + const defaultPromise = defaultLoadingTask.promise.then(async pdfDoc => { + const pdfPage = await pdfDoc.getPage(1); + return pdfPage.getAnnotations(); }); const docBaseUrlLoadingTask = getDocument( @@ -3305,10 +3298,9 @@ describe("api", function () { }) ); const docBaseUrlPromise = docBaseUrlLoadingTask.promise.then( - function (pdfDoc) { - return pdfDoc.getPage(1).then(function (pdfPage) { - return pdfPage.getAnnotations(); - }); + async pdfDoc => { + const pdfPage = await pdfDoc.getPage(1); + return pdfPage.getAnnotations(); } ); @@ -3318,10 +3310,9 @@ describe("api", function () { }) ); const invalidDocBaseUrlPromise = - invalidDocBaseUrlLoadingTask.promise.then(function (pdfDoc) { - return pdfDoc.getPage(1).then(function (pdfPage) { - return pdfPage.getAnnotations(); - }); + invalidDocBaseUrlLoadingTask.promise.then(async pdfDoc => { + const pdfPage = await pdfDoc.getPage(1); + return pdfPage.getAnnotations(); }); const [ From 675c628b6d774e1d45341b413c9f2d2011b29eb7 Mon Sep 17 00:00:00 2001 From: atishdhu Date: Mon, 3 Mar 2025 15:02:23 +0400 Subject: [PATCH 338/338] Comment unused code --- web/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/app.js b/web/app.js index 7e8cf828c4b40..4ad53c4752257 100644 --- a/web/app.js +++ b/web/app.js @@ -53,7 +53,7 @@ import { PDFWorker, ResponseException, shadow, - stopEvent, + // stopEvent, TouchManager, version, } from "pdfjs-lib";

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