[epiphany/mcatanzaro/pdfjs-2.9.359: 9/9] Update to PDF.js 2.10.377




commit 70c0796c1e8305dbcbabe6c86eae72042c3a3bfb
Author: Michael Catanzaro <mcatanzaro redhat com>
Date:   Mon Aug 9 17:12:40 2021 -0500

    Update to PDF.js 2.10.377

 third-party/pdfjs/README.epiphany.md               |    2 +-
 third-party/pdfjs/build/pdf.js                     | 1166 +--
 third-party/pdfjs/build/pdf.sandbox.js             |    6 +-
 third-party/pdfjs/build/pdf.worker.js              | 7777 ++++++++++++++------
 third-party/pdfjs/epiphany-pdfjs-changes.patch     |  206 +-
 third-party/pdfjs/pdfjs.gresource.xml              |   22 +-
 third-party/pdfjs/web/debugger.js                  |   39 +-
 third-party/pdfjs/web/locale/ach/viewer.properties |    1 +
 third-party/pdfjs/web/locale/af/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/an/viewer.properties  |    4 +-
 third-party/pdfjs/web/locale/ar/viewer.properties  |    3 +-
 third-party/pdfjs/web/locale/ast/viewer.properties |    4 +-
 third-party/pdfjs/web/locale/az/viewer.properties  |    4 +-
 third-party/pdfjs/web/locale/be/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/bg/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/bn/viewer.properties  |    2 +
 third-party/pdfjs/web/locale/bo/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/br/viewer.properties  |    8 +
 third-party/pdfjs/web/locale/brx/viewer.properties |    1 +
 third-party/pdfjs/web/locale/bs/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/ca/viewer.properties  |   10 +-
 third-party/pdfjs/web/locale/cak/viewer.properties |    6 +-
 third-party/pdfjs/web/locale/ckb/viewer.properties |    4 +-
 third-party/pdfjs/web/locale/cs/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/cy/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/da/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/de/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/dsb/viewer.properties |    6 +-
 third-party/pdfjs/web/locale/el/viewer.properties  |    8 +-
 .../pdfjs/web/locale/en-CA/viewer.properties       |    6 +-
 .../pdfjs/web/locale/en-GB/viewer.properties       |    6 +-
 third-party/pdfjs/web/locale/eo/viewer.properties  |    6 +-
 .../pdfjs/web/locale/es-AR/viewer.properties       |    6 +-
 .../pdfjs/web/locale/es-CL/viewer.properties       |    6 +-
 .../pdfjs/web/locale/es-ES/viewer.properties       |    6 +-
 .../pdfjs/web/locale/es-MX/viewer.properties       |   10 +-
 third-party/pdfjs/web/locale/et/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/eu/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/fa/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/ff/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/fi/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/fr/viewer.properties  |    6 +-
 .../pdfjs/web/locale/fy-NL/viewer.properties       |    6 +-
 .../pdfjs/web/locale/ga-IE/viewer.properties       |    1 +
 third-party/pdfjs/web/locale/gd/viewer.properties  |   14 +
 third-party/pdfjs/web/locale/gl/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/gn/viewer.properties  |    6 +-
 .../pdfjs/web/locale/gu-IN/viewer.properties       |    1 +
 third-party/pdfjs/web/locale/he/viewer.properties  |    6 +-
 .../pdfjs/web/locale/hi-IN/viewer.properties       |    2 +
 third-party/pdfjs/web/locale/hr/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/hsb/viewer.properties |    6 +-
 third-party/pdfjs/web/locale/hu/viewer.properties  |    6 +-
 .../pdfjs/web/locale/hy-AM/viewer.properties       |    2 +
 third-party/pdfjs/web/locale/hye/viewer.properties |    4 +-
 third-party/pdfjs/web/locale/ia/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/id/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/is/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/it/viewer.properties  |    5 +-
 third-party/pdfjs/web/locale/ja/viewer.properties  |    3 +-
 third-party/pdfjs/web/locale/ka/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/kab/viewer.properties |    3 +-
 third-party/pdfjs/web/locale/kk/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/km/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/kn/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/ko/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/lij/viewer.properties |    1 +
 third-party/pdfjs/web/locale/lo/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/lt/viewer.properties  |    3 +-
 third-party/pdfjs/web/locale/ltg/viewer.properties |    1 +
 third-party/pdfjs/web/locale/lv/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/mk/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/mr/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/ms/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/my/viewer.properties  |    1 +
 .../pdfjs/web/locale/nb-NO/viewer.properties       |    6 +-
 .../pdfjs/web/locale/ne-NP/viewer.properties       |    1 +
 third-party/pdfjs/web/locale/nl/viewer.properties  |    6 +-
 .../pdfjs/web/locale/nn-NO/viewer.properties       |    6 +-
 third-party/pdfjs/web/locale/oc/viewer.properties  |   25 +-
 .../pdfjs/web/locale/pa-IN/viewer.properties       |    6 +-
 third-party/pdfjs/web/locale/pl/viewer.properties  |    6 +-
 .../pdfjs/web/locale/pt-BR/viewer.properties       |    6 +-
 .../pdfjs/web/locale/pt-PT/viewer.properties       |    6 +-
 third-party/pdfjs/web/locale/rm/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/ro/viewer.properties  |    2 +
 third-party/pdfjs/web/locale/ru/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/sco/viewer.properties |  112 +-
 third-party/pdfjs/web/locale/si/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/sk/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/sl/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/son/viewer.properties |    1 +
 third-party/pdfjs/web/locale/sq/viewer.properties  |    4 +-
 third-party/pdfjs/web/locale/sr/viewer.properties  |   11 +-
 .../pdfjs/web/locale/sv-SE/viewer.properties       |    6 +-
 third-party/pdfjs/web/locale/szl/viewer.properties |    3 +-
 third-party/pdfjs/web/locale/ta/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/te/viewer.properties  |    4 +-
 third-party/pdfjs/web/locale/tg/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/th/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/tl/viewer.properties  |    4 +-
 third-party/pdfjs/web/locale/tr/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/uk/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/ur/viewer.properties  |    7 +
 third-party/pdfjs/web/locale/uz/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/vi/viewer.properties  |    6 +-
 third-party/pdfjs/web/locale/wo/viewer.properties  |    1 +
 third-party/pdfjs/web/locale/xh/viewer.properties  |    1 +
 .../pdfjs/web/locale/zh-CN/viewer.properties       |    6 +-
 .../pdfjs/web/locale/zh-TW/viewer.properties       |    6 +-
 .../pdfjs/web/standard_fonts/FoxitDingbats.pfb     |  Bin 0 -> 29513 bytes
 .../pdfjs/web/standard_fonts/FoxitFixed.pfb        |  Bin 0 -> 17597 bytes
 .../pdfjs/web/standard_fonts/FoxitFixedBold.pfb    |  Bin 0 -> 18055 bytes
 .../web/standard_fonts/FoxitFixedBoldItalic.pfb    |  Bin 0 -> 19151 bytes
 .../pdfjs/web/standard_fonts/FoxitFixedItalic.pfb  |  Bin 0 -> 18746 bytes
 third-party/pdfjs/web/standard_fonts/FoxitSans.pfb |  Bin 0 -> 15025 bytes
 .../pdfjs/web/standard_fonts/FoxitSansBold.pfb     |  Bin 0 -> 16344 bytes
 .../web/standard_fonts/FoxitSansBoldItalic.pfb     |  Bin 0 -> 16418 bytes
 .../pdfjs/web/standard_fonts/FoxitSansItalic.pfb   |  Bin 0 -> 16339 bytes
 .../pdfjs/web/standard_fonts/FoxitSerif.pfb        |  Bin 0 -> 19469 bytes
 .../pdfjs/web/standard_fonts/FoxitSerifBold.pfb    |  Bin 0 -> 19395 bytes
 .../web/standard_fonts/FoxitSerifBoldItalic.pfb    |  Bin 0 -> 20733 bytes
 .../pdfjs/web/standard_fonts/FoxitSerifItalic.pfb  |  Bin 0 -> 21227 bytes
 .../pdfjs/web/standard_fonts/FoxitSymbol.pfb       |  Bin 0 -> 16729 bytes
 third-party/pdfjs/web/standard_fonts/LICENSE_FOXIT |   27 +
 .../pdfjs/web/standard_fonts/LICENSE_LIBERATION    |  102 +
 .../web/standard_fonts/LiberationSans-Bold.ttf     |  Bin 0 -> 137052 bytes
 .../standard_fonts/LiberationSans-BoldItalic.ttf   |  Bin 0 -> 135124 bytes
 .../web/standard_fonts/LiberationSans-Italic.ttf   |  Bin 0 -> 162036 bytes
 .../web/standard_fonts/LiberationSans-Regular.ttf  |  Bin 0 -> 139512 bytes
 third-party/pdfjs/web/viewer.css                   |  257 +-
 third-party/pdfjs/web/viewer.html                  |    1 -
 third-party/pdfjs/web/viewer.js                    |  265 +-
 133 files changed, 7401 insertions(+), 3040 deletions(-)
---
diff --git a/third-party/pdfjs/README.epiphany.md b/third-party/pdfjs/README.epiphany.md
index 5040b54b8..70be46998 100644
--- a/third-party/pdfjs/README.epiphany.md
+++ b/third-party/pdfjs/README.epiphany.md
@@ -8,7 +8,7 @@ This directory contains an official pdf.js release version, distributed at: http
 3. Delete precompiled .map files (viewer.js.map, pdf.js.map, pdf.worker.js.map, pdf.sandbox.js.map).
 4. Manually merge changes from epiphany-pdfjs-changes.patch into web/viewer.[html/js/css].
 5. Recreate epiphany-pdfjs-changes.patch.
-6. Recreate the resource xml file with `python ./pdfjs_generate_resource.py`
+6. Recreate the resource xml file with `./pdfjs_generate_resource.py`
 
 ## Modifications to viewer.html
 1. In order to circumvent CORS the pdf is downloaded and then embedded into the viewer.html file. Therefore 
the head has an
diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js
index 33b6253f2..fde8904fc 100644
--- a/third-party/pdfjs/build/pdf.js
+++ b/third-party/pdfjs/build/pdf.js
@@ -46,59 +46,22 @@ exports.addLinkAttributes = addLinkAttributes;
 exports.deprecated = deprecated;
 exports.getFilenameFromUrl = getFilenameFromUrl;
 exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
+exports.getXfaPageViewport = getXfaPageViewport;
 exports.isDataScheme = isDataScheme;
-exports.isFetchSupported = isFetchSupported;
 exports.isPdfFile = isPdfFile;
 exports.isValidFetchUrl = isValidFetchUrl;
 exports.loadScript = loadScript;
-exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = 
exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = 
exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0;
+exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = 
exports.LinkTarget = exports.DOMSVGFactory = exports.DOMStandardFontDataFactory = 
exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
+var _base_factory = __w_pdfjs_require__(5);
+
 const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
 exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
 const SVG_NS = "http://www.w3.org/2000/svg";;
 
-class BaseCanvasFactory {
-  constructor() {
-    if (this.constructor === BaseCanvasFactory) {
-      (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
-    }
-  }
-
-  create(width, height) {
-    (0, _util.unreachable)("Abstract method `create` called.");
-  }
-
-  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");
-    }
-
-    canvasAndContext.canvas.width = 0;
-    canvasAndContext.canvas.height = 0;
-    canvasAndContext.canvas = null;
-    canvasAndContext.context = null;
-  }
-
-}
-
-exports.BaseCanvasFactory = BaseCanvasFactory;
-
-class DOMCanvasFactory extends BaseCanvasFactory {
+class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
   constructor({
     ownerDocument = globalThis.document
   } = {}) {
@@ -106,123 +69,71 @@ class DOMCanvasFactory extends BaseCanvasFactory {
     this._document = ownerDocument;
   }
 
-  create(width, height) {
-    if (width <= 0 || height <= 0) {
-      throw new Error("Invalid canvas size");
-    }
-
+  _createCanvas(width, height) {
     const canvas = this._document.createElement("canvas");
 
-    const context = canvas.getContext("2d");
     canvas.width = width;
     canvas.height = height;
-    return {
-      canvas,
-      context
-    };
+    return canvas;
   }
 
 }
 
 exports.DOMCanvasFactory = DOMCanvasFactory;
 
-class BaseCMapReaderFactory {
-  constructor({
-    baseUrl = null,
-    isCompressed = false
-  }) {
-    if (this.constructor === BaseCMapReaderFactory) {
-      (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
-    }
-
-    this.baseUrl = baseUrl;
-    this.isCompressed = isCompressed;
-  }
-
-  async fetch({
-    name
-  }) {
-    if (!this.baseUrl) {
-      throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and 
"cMapPacked" API parameters are provided.');
-    }
+async function fetchData(url, asTypedArray = false) {
+  if (isValidFetchUrl(url, document.baseURI)) {
+    const response = await fetch(url);
 
-    if (!name) {
-      throw new Error("CMap name must be specified.");
+    if (!response.ok) {
+      throw new Error(response.statusText);
     }
 
-    const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
-    const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : 
_util.CMapCompressionType.NONE;
-    return this._fetchData(url, compressionType).catch(reason => {
-      throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
-    });
-  }
-
-  _fetchData(url, compressionType) {
-    (0, _util.unreachable)("Abstract method `_fetchData` called.");
+    return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await 
response.text());
   }
 
-}
+  return new Promise((resolve, reject) => {
+    const request = new XMLHttpRequest();
+    request.open("GET", url, true);
 
-exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
+    if (asTypedArray) {
+      request.responseType = "arraybuffer";
+    }
 
-class DOMCMapReaderFactory extends BaseCMapReaderFactory {
-  _fetchData(url, compressionType) {
-    if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {
-      return fetch(url).then(async response => {
-        if (!response.ok) {
-          throw new Error(response.statusText);
-        }
+    request.onreadystatechange = () => {
+      if (request.readyState !== XMLHttpRequest.DONE) {
+        return;
+      }
 
-        let cMapData;
+      if (request.status === 200 || request.status === 0) {
+        let data;
 
-        if (this.isCompressed) {
-          cMapData = new Uint8Array(await response.arrayBuffer());
-        } else {
-          cMapData = (0, _util.stringToBytes)(await response.text());
+        if (asTypedArray && request.response) {
+          data = new Uint8Array(request.response);
+        } else if (!asTypedArray && request.responseText) {
+          data = (0, _util.stringToBytes)(request.responseText);
         }
 
-        return {
-          cMapData,
-          compressionType
-        };
-      });
-    }
-
-    return new Promise((resolve, reject) => {
-      const request = new XMLHttpRequest();
-      request.open("GET", url, true);
-
-      if (this.isCompressed) {
-        request.responseType = "arraybuffer";
-      }
-
-      request.onreadystatechange = () => {
-        if (request.readyState !== XMLHttpRequest.DONE) {
+        if (data) {
+          resolve(data);
           return;
         }
+      }
 
-        if (request.status === 200 || request.status === 0) {
-          let cMapData;
-
-          if (this.isCompressed && request.response) {
-            cMapData = new Uint8Array(request.response);
-          } else if (!this.isCompressed && request.responseText) {
-            cMapData = (0, _util.stringToBytes)(request.responseText);
-          }
+      reject(new Error(request.statusText));
+    };
 
-          if (cMapData) {
-            resolve({
-              cMapData,
-              compressionType
-            });
-            return;
-          }
-        }
+    request.send(null);
+  });
+}
 
-        reject(new Error(request.statusText));
+class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
+  _fetchData(url, compressionType) {
+    return fetchData(url, this.isCompressed).then(data => {
+      return {
+        cMapData: data,
+        compressionType
       };
-
-      request.send(null);
     });
   }
 
@@ -230,20 +141,17 @@ class DOMCMapReaderFactory extends BaseCMapReaderFactory {
 
 exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
 
-class DOMSVGFactory {
-  create(width, height) {
-    (0, _util.assert)(width > 0 && height > 0, "Invalid SVG dimensions");
-    const svg = document.createElementNS(SVG_NS, "svg:svg");
-    svg.setAttribute("version", "1.1");
-    svg.setAttribute("width", width + "px");
-    svg.setAttribute("height", height + "px");
-    svg.setAttribute("preserveAspectRatio", "none");
-    svg.setAttribute("viewBox", "0 0 " + width + " " + height);
-    return svg;
+class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
+  _fetchData(url) {
+    return fetchData(url, true);
   }
 
-  createElement(type) {
-    (0, _util.assert)(typeof type === "string", "Invalid SVG element type");
+}
+
+exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;
+
+class DOMSVGFactory extends _base_factory.BaseSVGFactory {
+  _createSVG(type) {
     return document.createElementNS(SVG_NS, type);
   }
 
@@ -535,10 +443,6 @@ class StatTimer {
 
 exports.StatTimer = StatTimer;
 
-function isFetchSupported() {
-  return typeof fetch !== "undefined" && typeof Response !== "undefined" && "body" in Response.prototype && 
typeof ReadableStream !== "undefined";
-}
-
 function isValidFetchUrl(url, baseUrl) {
   try {
     const {
@@ -625,6 +529,22 @@ class PDFDateString {
 
 exports.PDFDateString = PDFDateString;
 
+function getXfaPageViewport(xfaPage, {
+  scale = 1,
+  rotation = 0
+}) {
+  const {
+    width,
+    height
+  } = xfaPage.attributes.style;
+  const viewBox = [0, 0, parseInt(width), parseInt(height)];
+  return new PageViewport({
+    viewBox,
+    scale,
+    rotation
+  });
+}
+
 /***/ }),
 /* 2 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -844,6 +764,7 @@ exports.StreamType = StreamType;
 const FontType = {
   UNKNOWN: "UNKNOWN",
   TYPE1: "TYPE1",
+  TYPE1STANDARD: "TYPE1STANDARD",
   TYPE1C: "TYPE1C",
   CIDFONTTYPE0: "CIDFONTTYPE0",
   CIDFONTTYPE0C: "CIDFONTTYPE0C",
@@ -1554,24 +1475,200 @@ exports.isNodeJS = isNodeJS;
 
 
 
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.BaseSVGFactory = exports.BaseStandardFontDataFactory = exports.BaseCMapReaderFactory = 
exports.BaseCanvasFactory = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+class BaseCanvasFactory {
+  constructor() {
+    if (this.constructor === BaseCanvasFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
+    }
+  }
+
+  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")
+    };
+  }
+
+  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");
+    }
+
+    canvasAndContext.canvas.width = 0;
+    canvasAndContext.canvas.height = 0;
+    canvasAndContext.canvas = null;
+    canvasAndContext.context = null;
+  }
+
+  _createCanvas(width, height) {
+    (0, _util.unreachable)("Abstract method `_createCanvas` called.");
+  }
+
+}
+
+exports.BaseCanvasFactory = BaseCanvasFactory;
+
+class BaseCMapReaderFactory {
+  constructor({
+    baseUrl = null,
+    isCompressed = false
+  }) {
+    if (this.constructor === BaseCMapReaderFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
+    }
+
+    this.baseUrl = baseUrl;
+    this.isCompressed = isCompressed;
+  }
+
+  async fetch({
+    name
+  }) {
+    if (!this.baseUrl) {
+      throw new Error('The CMap "baseUrl" parameter must be specified, 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" : "");
+    const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : 
_util.CMapCompressionType.NONE;
+    return this._fetchData(url, compressionType).catch(reason => {
+      throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
+    });
+  }
+
+  _fetchData(url, compressionType) {
+    (0, _util.unreachable)("Abstract method `_fetchData` called.");
+  }
+
+}
+
+exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
+
+class BaseStandardFontDataFactory {
+  constructor({
+    baseUrl = null
+  }) {
+    if (this.constructor === BaseStandardFontDataFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
+    }
+
+    this.baseUrl = baseUrl;
+  }
+
+  async fetch({
+    filename
+  }) {
+    if (!this.baseUrl) {
+      throw new Error('The standard font "baseUrl" parameter must be specified, 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._fetchData(url).catch(reason => {
+      throw new Error(`Unable to load font data at: ${url}`);
+    });
+  }
+
+  _fetchData(url) {
+    (0, _util.unreachable)("Abstract method `_fetchData` called.");
+  }
+
+}
+
+exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;
+
+class BaseSVGFactory {
+  constructor() {
+    if (this.constructor === BaseSVGFactory) {
+      (0, _util.unreachable)("Cannot initialize BaseSVGFactory.");
+    }
+  }
+
+  create(width, height) {
+    if (width <= 0 || height <= 0) {
+      throw new Error("Invalid SVG dimensions");
+    }
+
+    const svg = this._createSVG("svg:svg");
+
+    svg.setAttribute("version", "1.1");
+    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);
+  }
+
+  _createSVG(type) {
+    (0, _util.unreachable)("Abstract method `_createSVG` called.");
+  }
+
+}
+
+exports.BaseSVGFactory = BaseSVGFactory;
+
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
 exports.getDocument = getDocument;
 exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
-exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = 
exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultCMapReaderFactory = 
exports.DefaultCanvasFactory = exports.build = void 0;
+exports.version = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = 
exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = 
exports.DefaultCMapReaderFactory = exports.DefaultCanvasFactory = exports.build = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
 var _display_utils = __w_pdfjs_require__(1);
 
-var _font_loader = __w_pdfjs_require__(6);
-
-var _node_utils = __w_pdfjs_require__(7);
+var _font_loader = __w_pdfjs_require__(7);
 
-var _annotation_storage = __w_pdfjs_require__(8);
+var _node_utils = __w_pdfjs_require__(8);
 
-var _api_compatibility = __w_pdfjs_require__(9);
+var _annotation_storage = __w_pdfjs_require__(9);
 
 var _canvas = __w_pdfjs_require__(10);
 
@@ -1593,6 +1690,8 @@ const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory :
 exports.DefaultCanvasFactory = DefaultCanvasFactory;
 const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : 
_display_utils.DOMCMapReaderFactory;
 exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
+const DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : 
_display_utils.DOMStandardFontDataFactory;
+exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;
 let createPDFNetworkStream;
 
 function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
@@ -1681,6 +1780,7 @@ function getDocument(src) {
 
   params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
   params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
+  params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;
   params.ignoreErrors = params.stopAtErrors !== true;
   params.fontExtraProperties = params.fontExtraProperties === true;
   params.pdfBug = params.pdfBug === true;
@@ -1694,12 +1794,20 @@ function getDocument(src) {
     params.maxImageSize = -1;
   }
 
+  if (typeof params.useWorkerFetch !== "boolean") {
+    params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && 
params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;
+  }
+
   if (typeof params.isEvalSupported !== "boolean") {
     params.isEvalSupported = true;
   }
 
   if (typeof params.disableFontFace !== "boolean") {
-    params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
+    params.disableFontFace = _is_node.isNodeJS;
+  }
+
+  if (typeof params.useSystemFonts !== "boolean") {
+    params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;
   }
 
   if (typeof params.ownerDocument === "undefined") {
@@ -1792,7 +1900,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
 
   return worker.messageHandler.sendWithPromise("GetDocRequest", {
     docId,
-    apiVersion: '2.9.359',
+    apiVersion: '2.10.377',
     source: {
       data: source.data,
       url: source.url,
@@ -1808,7 +1916,10 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
     ignoreErrors: source.ignoreErrors,
     isEvalSupported: source.isEvalSupported,
     fontExtraProperties: source.fontExtraProperties,
-    enableXfa: source.enableXfa
+    enableXfa: source.enableXfa,
+    useSystemFonts: source.useSystemFonts,
+    cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,
+    standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null
   }).then(function (workerId) {
     if (worker.destroyed) {
       throw new Error("Worker was destroyed");
@@ -1933,6 +2044,13 @@ class PDFDocumentProxy {
   constructor(pdfInfo, transport) {
     this._pdfInfo = pdfInfo;
     this._transport = transport;
+    Object.defineProperty(this, "fingerprint", {
+      get() {
+        (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use 
`PDFDocumentProxy.fingerprints` instead.");
+        return this.fingerprints[0];
+      }
+
+    });
   }
 
   get annotationStorage() {
@@ -1943,12 +2061,16 @@ class PDFDocumentProxy {
     return this._pdfInfo.numPages;
   }
 
-  get fingerprint() {
-    return this._pdfInfo.fingerprint;
+  get fingerprints() {
+    return this._pdfInfo.fingerprints;
   }
 
   get isPureXfa() {
-    return this._pdfInfo.isPureXfa;
+    return !!this._transport._htmlForXfa;
+  }
+
+  get allXfaHtml() {
+    return this._transport._htmlForXfa;
   }
 
   getPage(pageNumber) {
@@ -2048,10 +2170,6 @@ class PDFDocumentProxy {
   }
 
   saveDocument() {
-    if (arguments.length > 0) {
-      (0, _display_utils.deprecated)("saveDocument no longer accepts any options.");
-    }
-
     if (this._transport.annotationStorage.size <= 0) {
       (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please 
use the getData-method instead.");
     }
@@ -2131,9 +2249,11 @@ class PDFPageProxy {
   getAnnotations({
     intent = null
   } = {}) {
-    if (!this._annotationsPromise || this._annotationsIntent !== intent) {
-      this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
-      this._annotationsIntent = intent;
+    const renderingIntent = intent === "display" || intent === "print" ? intent : null;
+
+    if (!this._annotationsPromise || this._annotationsIntent !== renderingIntent) {
+      this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, renderingIntent);
+      this._annotationsIntent = renderingIntent;
     }
 
     return this._annotationsPromise;
@@ -2143,8 +2263,8 @@ class PDFPageProxy {
     return this._jsActionsPromise || (this._jsActionsPromise = 
this._transport.getPageJSActions(this._pageIndex));
   }
 
-  getXfa() {
-    return this._xfaPromise || (this._xfaPromise = this._transport.getPageXfa(this._pageIndex));
+  async getXfa() {
+    return this._transport._htmlForXfa?.children[this._pageIndex] || null;
   }
 
   render({
@@ -2161,11 +2281,6 @@ class PDFPageProxy {
   }) {
     var _intentState;
 
-    if (arguments[0]?.annotationStorage !== undefined) {
-      (0, _display_utils.deprecated)("render no longer accepts an `annotationStorage` option, " + "please 
use the `includeAnnotationStorage`-boolean instead.");
-      includeAnnotationStorage || (includeAnnotationStorage = !!arguments[0].annotationStorage);
-    }
-
     if (this._stats) {
       this._stats.time("Overall");
     }
@@ -2280,7 +2395,9 @@ class PDFPageProxy {
     return renderTask;
   }
 
-  getOperatorList() {
+  getOperatorList({
+    intent = "display"
+  } = {}) {
     function operatorListChanged() {
       if (intentState.operatorList.lastChunk) {
         intentState.opListReadCapability.resolve(intentState.operatorList);
@@ -2288,7 +2405,7 @@ class PDFPageProxy {
       }
     }
 
-    const renderingIntent = "oplist";
+    const renderingIntent = `oplist-${intent === "print" ? "print" : "display"}`;
 
     let intentState = this._intentStates.get(renderingIntent);
 
@@ -2391,7 +2508,7 @@ class PDFPageProxy {
         force: true
       });
 
-      if (intent === "oplist") {
+      if (intent.startsWith("oplist-")) {
         continue;
       }
 
@@ -2404,7 +2521,6 @@ class PDFPageProxy {
     this.objs.clear();
     this._annotationsPromise = null;
     this._jsActionsPromise = null;
-    this._xfaPromise = null;
     this._structTreePromise = null;
     this.pendingCleanup = false;
     return Promise.all(waitOn);
@@ -2434,7 +2550,6 @@ class PDFPageProxy {
     this.objs.clear();
     this._annotationsPromise = null;
     this._jsActionsPromise = null;
-    this._xfaPromise = null;
     this._structTreePromise = null;
 
     if (resetStats && this._stats) {
@@ -2600,6 +2715,10 @@ class LoopbackPort {
 
   postMessage(obj, transfers) {
     function cloneValue(value) {
+      if (typeof value === "function" || typeof value === "symbol" || value instanceof URL) {
+        throw new Error(`LoopbackPort.postMessage - cannot clone: ${value?.toString()}`);
+      }
+
       if (typeof value !== "object" || value === null) {
         return value;
       }
@@ -2643,10 +2762,6 @@ class LoopbackPort {
         return result;
       }
 
-      if (value instanceof URL) {
-        throw new Error(`LoopbackPort.postMessage - cannot clone: ${value}`);
-      }
-
       result = Array.isArray(value) ? [] : Object.create(null);
       cloned.set(value, result);
 
@@ -2662,11 +2777,7 @@ class LoopbackPort {
           continue;
         }
 
-        if (typeof desc.value === "function") {
-          if (value.hasOwnProperty?.(i)) {
-            throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);
-          }
-
+        if (typeof desc.value === "function" && !value.hasOwnProperty?.(i)) {
           continue;
         }
 
@@ -3011,13 +3122,21 @@ class WorkerTransport {
     this.fontLoader = new _font_loader.FontLoader({
       docId: loadingTask.docId,
       onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
-      ownerDocument: params.ownerDocument
+      ownerDocument: params.ownerDocument,
+      styleElement: params.styleElement
     });
     this._params = params;
-    this.CMapReaderFactory = new params.CMapReaderFactory({
-      baseUrl: params.cMapUrl,
-      isCompressed: params.cMapPacked
-    });
+
+    if (!params.useWorkerFetch) {
+      this.CMapReaderFactory = new params.CMapReaderFactory({
+        baseUrl: params.cMapUrl,
+        isCompressed: params.cMapPacked
+      });
+      this.StandardFontDataFactory = new params.StandardFontDataFactory({
+        baseUrl: params.standardFontDataUrl
+      });
+    }
+
     this.destroyed = false;
     this.destroyCapability = null;
     this._passwordCapability = null;
@@ -3196,6 +3315,8 @@ class WorkerTransport {
       pdfInfo
     }) => {
       this._numPages = pdfInfo.numPages;
+      this._htmlForXfa = pdfInfo.htmlForXfa;
+      delete pdfInfo.htmlForXfa;
 
       loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
     });
@@ -3356,6 +3477,10 @@ class WorkerTransport {
 
           break;
 
+        case "Pattern":
+          pageProxy.objs.resolve(id, imageData);
+          break;
+
         default:
           throw new Error(`Got unknown object type ${type}`);
       }
@@ -3375,27 +3500,27 @@ class WorkerTransport {
       }
     });
     messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
-    messageHandler.on("FetchBuiltInCMap", (data, sink) => {
+    messageHandler.on("FetchBuiltInCMap", data => {
       if (this.destroyed) {
-        sink.error(new Error("Worker was destroyed"));
-        return;
+        return Promise.reject(new Error("Worker was destroyed."));
       }
 
-      let fetched = false;
+      if (!this.CMapReaderFactory) {
+        return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` 
parameter."));
+      }
 
-      sink.onPull = () => {
-        if (fetched) {
-          sink.close();
-          return;
-        }
+      return this.CMapReaderFactory.fetch(data);
+    });
+    messageHandler.on("FetchStandardFontData", data => {
+      if (this.destroyed) {
+        return Promise.reject(new Error("Worker was destroyed."));
+      }
 
-        fetched = true;
-        this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {
-          sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);
-        }).catch(function (reason) {
-          sink.error(reason);
-        });
-      };
+      if (!this.StandardFontDataFactory) {
+        return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` 
parameter."));
+      }
+
+      return this.StandardFontDataFactory.fetch(data);
     });
   }
 
@@ -3458,6 +3583,7 @@ class WorkerTransport {
 
   saveDocument() {
     return this.messageHandler.sendWithPromise("SaveDocument", {
+      isPureXfa: !!this._htmlForXfa,
       numPages: this._numPages,
       annotationStorage: this.annotationStorage.serializable,
       filename: this._fullReader?.filename ?? null
@@ -3530,12 +3656,6 @@ class WorkerTransport {
     });
   }
 
-  getPageXfa(pageIndex) {
-    return this.messageHandler.sendWithPromise("GetPageXfa", {
-      pageIndex
-    });
-  }
-
   getStructTree(pageIndex) {
     return this.messageHandler.sendWithPromise("GetStructTree", {
       pageIndex
@@ -3608,8 +3728,7 @@ class WorkerTransport {
   get loadingParams() {
     const params = this._params;
     return (0, _util.shadow)(this, "loadingParams", {
-      disableAutoFetch: params.disableAutoFetch,
-      disableFontFace: params.disableFontFace
+      disableAutoFetch: params.disableAutoFetch
     });
   }
 
@@ -3855,13 +3974,13 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
   return InternalRenderTask;
 }();
 
-const version = '2.9.359';
+const version = '2.10.377';
 exports.version = version;
-const build = 'e667c8cbc';
+const build = '156762c48';
 exports.build = build;
 
 /***/ }),
-/* 6 */
+/* 7 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -3877,7 +3996,8 @@ class BaseFontLoader {
   constructor({
     docId,
     onUnsupportedFeature,
-    ownerDocument = globalThis.document
+    ownerDocument = globalThis.document,
+    styleElement = null
   }) {
     if (this.constructor === BaseFontLoader) {
       (0, _util.unreachable)("Cannot initialize BaseFontLoader.");
@@ -3974,7 +4094,8 @@ class BaseFontLoader {
   }
 
   get isFontLoadingAPISupported() {
-    return (0, _util.shadow)(this, "isFontLoadingAPISupported", !!this._document?.fonts);
+    const hasFonts = !!this._document?.fonts;
+    return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts);
   }
 
   get isSyncFontLoadingSupported() {
@@ -4272,7 +4393,7 @@ class FontFaceObject {
 exports.FontFaceObject = FontFaceObject;
 
 /***/ }),
-/* 7 */
+/* 8 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -4280,9 +4401,9 @@ exports.FontFaceObject = FontFaceObject;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
+exports.NodeStandardFontDataFactory = exports.NodeCMapReaderFactory = exports.NodeCanvasFactory = void 0;
 
-var _display_utils = __w_pdfjs_require__(1);
+var _base_factory = __w_pdfjs_require__(5);
 
 var _is_node = __w_pdfjs_require__(4);
 
@@ -4302,48 +4423,59 @@ let NodeCMapReaderFactory = class {
 
 };
 exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
+let NodeStandardFontDataFactory = class {
+  constructor() {
+    (0, _util.unreachable)("Not implemented: NodeStandardFontDataFactory");
+  }
+
+};
+exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;
 
 if (_is_node.isNodeJS) {
-  exports.NodeCanvasFactory = NodeCanvasFactory = class extends _display_utils.BaseCanvasFactory {
-    create(width, height) {
-      if (width <= 0 || height <= 0) {
-        throw new Error("Invalid canvas size");
-      }
+  const fetchData = function (url) {
+    return new Promise((resolve, reject) => {
+      const fs = require("fs");
+
+      fs.readFile(url, (error, data) => {
+        if (error || !data) {
+          reject(new Error(error));
+          return;
+        }
+
+        resolve(new Uint8Array(data));
+      });
+    });
+  };
 
+  exports.NodeCanvasFactory = NodeCanvasFactory = class extends _base_factory.BaseCanvasFactory {
+    _createCanvas(width, height) {
       const Canvas = require("canvas");
 
-      const canvas = Canvas.createCanvas(width, height);
-      return {
-        canvas,
-        context: canvas.getContext("2d")
-      };
+      return Canvas.createCanvas(width, height);
     }
 
   };
-  exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _display_utils.BaseCMapReaderFactory 
{
+  exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory {
     _fetchData(url, compressionType) {
-      return new Promise((resolve, reject) => {
-        const fs = require("fs");
-
-        fs.readFile(url, (error, data) => {
-          if (error || !data) {
-            reject(new Error(error));
-            return;
-          }
-
-          resolve({
-            cMapData: new Uint8Array(data),
-            compressionType
-          });
-        });
+      return fetchData(url).then(data => {
+        return {
+          cMapData: data,
+          compressionType
+        };
       });
     }
 
   };
+  exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends 
_base_factory.BaseStandardFontDataFactory {
+    _fetchData(url) {
+      return fetchData(url);
+    }
+
+  };
 }
 
 /***/ }),
-/* 8 */
+/* 9 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -4428,30 +4560,6 @@ class AnnotationStorage {
 
 exports.AnnotationStorage = AnnotationStorage;
 
-/***/ }),
-/* 9 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.apiCompatibilityParams = void 0;
-
-var _is_node = __w_pdfjs_require__(4);
-
-const compatibilityParams = Object.create(null);
-{
-  (function checkFontFace() {
-    if (_is_node.isNodeJS) {
-      compatibilityParams.disableFontFace = true;
-    }
-  })();
-}
-const apiCompatibilityParams = Object.freeze(compatibilityParams);
-exports.apiCompatibilityParams = apiCompatibilityParams;
-
 /***/ }),
 /* 10 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -4549,10 +4657,10 @@ function addContextCurrentTransform(ctx) {
 
   ctx.scale = function ctxScale(x, y) {
     const m = this._transformMatrix;
-    m[0] = m[0] * x;
-    m[1] = m[1] * x;
-    m[2] = m[2] * y;
-    m[3] = m[3] * y;
+    m[0] *= x;
+    m[1] *= x;
+    m[2] *= y;
+    m[3] *= y;
 
     this._originalScale(x, y);
   };
@@ -5200,6 +5308,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       this.markedContentStack = [];
       this.optionalContentConfig = optionalContentConfig;
       this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+      this.cachedPatterns = new Map();
 
       if (canvasCtx) {
         addContextCurrentTransform(canvasCtx);
@@ -5318,12 +5427,100 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       }
 
       this.cachedCanvases.clear();
+      this.cachedPatterns.clear();
 
       if (this.imageLayer) {
         this.imageLayer.endLayout();
       }
     }
 
+    _scaleImage(img, inverseTransform) {
+      const width = img.width;
+      const height = img.height;
+      let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
+      let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
+      let paintWidth = width,
+          paintHeight = height;
+      let tmpCanvasId = "prescale1";
+      let tmpCanvas, tmpCtx;
+
+      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+        let newWidth = paintWidth,
+            newHeight = paintHeight;
+
+        if (widthScale > 2 && paintWidth > 1) {
+          newWidth = Math.ceil(paintWidth / 2);
+          widthScale /= paintWidth / newWidth;
+        }
+
+        if (heightScale > 2 && paintHeight > 1) {
+          newHeight = Math.ceil(paintHeight / 2);
+          heightScale /= paintHeight / newHeight;
+        }
+
+        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+        tmpCtx = tmpCanvas.context;
+        tmpCtx.clearRect(0, 0, newWidth, newHeight);
+        tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+        img = tmpCanvas.canvas;
+        paintWidth = newWidth;
+        paintHeight = newHeight;
+        tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
+      }
+
+      return {
+        img,
+        paintWidth,
+        paintHeight
+      };
+    }
+
+    _createMaskCanvas(img) {
+      const ctx = this.ctx;
+      const width = img.width,
+            height = img.height;
+      const fillColor = this.current.fillColor;
+      const isPatternFill = this.current.patternFill;
+      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+      const maskCtx = maskCanvas.context;
+      putBinaryImageMask(maskCtx, img);
+      const objToCanvas = ctx.mozCurrentTransform;
+
+      let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
+
+      maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
+
+      const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);
+
+      const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);
+
+      const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);
+
+      const drawnWidth = Math.ceil(rect[2] - rect[0]);
+      const drawnHeight = Math.ceil(rect[3] - rect[1]);
+      const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
+      const fillCtx = fillCanvas.context;
+      const offsetX = Math.min(cord1[0], cord2[0]);
+      const offsetY = Math.min(cord1[1], cord2[1]);
+      fillCtx.translate(-offsetX, -offsetY);
+      fillCtx.transform.apply(fillCtx, maskToCanvas);
+
+      const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+
+      fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
+      fillCtx.globalCompositeOperation = "source-in";
+
+      const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, 
-offsetY]);
+
+      fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, false) : fillColor;
+      fillCtx.fillRect(0, 0, width, height);
+      return {
+        canvas: fillCanvas.canvas,
+        offsetX: Math.round(offsetX),
+        offsetY: Math.round(offsetY)
+      };
+    }
+
     setLineWidth(width) {
       this.current.lineWidth = width;
       this.ctx.lineWidth = width;
@@ -5607,7 +5804,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         if (typeof strokeColor === "object" && strokeColor?.getPattern) {
           const lineWidth = this.getSinglePixelWidth();
           ctx.save();
-          ctx.strokeStyle = strokeColor.getPattern(ctx, this);
+          ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
           ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
           ctx.stroke();
           ctx.restore();
@@ -5648,7 +5845,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
 
       if (isPatternFill) {
         ctx.save();
-        ctx.fillStyle = fillColor.getPattern(ctx, this);
+        ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
         needRestore = true;
       }
 
@@ -5957,7 +6154,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
 
       if (current.patternFill) {
         ctx.save();
-        const pattern = current.fillColor.getPattern(ctx, this);
+        const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse);
         patternTransform = ctx.mozCurrentTransform;
         ctx.restore();
         ctx.fillStyle = pattern;
@@ -6161,7 +6358,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         };
         pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, 
baseTransform);
       } else {
-        pattern = (0, _pattern_helper.getShadingPattern)(IR);
+        pattern = this._getPattern(IR[1]);
       }
 
       return pattern;
@@ -6191,15 +6388,27 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       this.current.patternFill = false;
     }
 
-    shadingFill(patternIR) {
+    _getPattern(objId) {
+      if (this.cachedPatterns.has(objId)) {
+        return this.cachedPatterns.get(objId);
+      }
+
+      const pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));
+      this.cachedPatterns.set(objId, pattern);
+      return pattern;
+    }
+
+    shadingFill(objId) {
       if (!this.contentVisible) {
         return;
       }
 
       const ctx = this.ctx;
       this.save();
-      const pattern = (0, _pattern_helper.getShadingPattern)(patternIR);
-      ctx.fillStyle = pattern.getPattern(ctx, this, true);
+
+      const pattern = this._getPattern(objId);
+
+      ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, true);
       const inv = ctx.mozCurrentTransformInverse;
 
       if (inv) {
@@ -6389,7 +6598,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       this.restore();
     }
 
-    beginAnnotation(rect, transform, matrix) {
+    beginAnnotation(id, rect, transform, matrix) {
       this.save();
       resetCtxToDefault(this.ctx);
       this.current = new CanvasExtraState();
@@ -6418,8 +6627,6 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       const ctx = this.ctx;
       const width = img.width,
             height = img.height;
-      const fillColor = this.current.fillColor;
-      const isPatternFill = this.current.patternFill;
       const glyph = this.processingType3;
 
       if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
@@ -6439,15 +6646,13 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-      const maskCtx = maskCanvas.context;
-      maskCtx.save();
-      putBinaryImageMask(maskCtx, img);
-      maskCtx.globalCompositeOperation = "source-in";
-      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
-      maskCtx.fillRect(0, 0, width, height);
-      maskCtx.restore();
-      this.paintInlineImageXObject(maskCanvas.canvas);
+      const mask = this._createMaskCanvas(img);
+
+      const maskCanvas = mask.canvas;
+      ctx.save();
+      ctx.setTransform(1, 0, 0, 1, 0, 0);
+      ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
+      ctx.restore();
     }
 
     paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
@@ -6455,27 +6660,24 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         return;
       }
 
-      const width = imgData.width;
-      const height = imgData.height;
-      const fillColor = this.current.fillColor;
-      const isPatternFill = this.current.patternFill;
-      const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
-      const maskCtx = maskCanvas.context;
-      maskCtx.save();
-      putBinaryImageMask(maskCtx, imgData);
-      maskCtx.globalCompositeOperation = "source-in";
-      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
-      maskCtx.fillRect(0, 0, width, height);
-      maskCtx.restore();
       const ctx = this.ctx;
+      ctx.save();
+      const currentTransform = ctx.mozCurrentTransform;
+      ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
+
+      const mask = this._createMaskCanvas(imgData);
+
+      ctx.setTransform(1, 0, 0, 1, 0, 0);
 
       for (let i = 0, ii = positions.length; i < ii; i += 2) {
-        ctx.save();
-        ctx.transform(scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]);
-        ctx.scale(1, -1);
-        ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
-        ctx.restore();
+        const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], 
positions[i + 1]]);
+
+        const [x, y] = _util.Util.applyTransform([0, 0], trans);
+
+        ctx.drawImage(mask.canvas, x, y);
       }
+
+      ctx.restore();
     }
 
     paintImageMaskXObjectGroup(images) {
@@ -6496,7 +6698,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         maskCtx.save();
         putBinaryImageMask(maskCtx, image);
         maskCtx.globalCompositeOperation = "source-in";
-        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
+        maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, 
ctx.mozCurrentTransformInverse, false) : fillColor;
         maskCtx.fillRect(0, 0, width, height);
         maskCtx.restore();
         ctx.save();
@@ -6561,49 +6763,20 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       const ctx = this.ctx;
       this.save();
       ctx.scale(1 / width, -1 / height);
-      const currentTransform = ctx.mozCurrentTransformInverse;
-      let widthScale = Math.max(Math.hypot(currentTransform[0], currentTransform[1]), 1);
-      let heightScale = Math.max(Math.hypot(currentTransform[2], currentTransform[3]), 1);
-      let imgToPaint, tmpCanvas, tmpCtx;
+      let imgToPaint;
 
       if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
         imgToPaint = imgData;
       } else {
-        tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
-        tmpCtx = tmpCanvas.context;
+        const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+        const tmpCtx = tmpCanvas.context;
         putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
         imgToPaint = tmpCanvas.canvas;
       }
 
-      let paintWidth = width,
-          paintHeight = height;
-      let tmpCanvasId = "prescale1";
-
-      while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
-        let newWidth = paintWidth,
-            newHeight = paintHeight;
-
-        if (widthScale > 2 && paintWidth > 1) {
-          newWidth = Math.ceil(paintWidth / 2);
-          widthScale /= paintWidth / newWidth;
-        }
-
-        if (heightScale > 2 && paintHeight > 1) {
-          newHeight = Math.ceil(paintHeight / 2);
-          heightScale /= paintHeight / newHeight;
-        }
-
-        tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
-        tmpCtx = tmpCanvas.context;
-        tmpCtx.clearRect(0, 0, newWidth, newHeight);
-        tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
-        imgToPaint = tmpCanvas.canvas;
-        paintWidth = newWidth;
-        paintHeight = newHeight;
-        tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
-      }
+      const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);
 
-      ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
+      ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
 
       if (this.imageLayer) {
         const position = this.getCanvasPosition(0, -height);
@@ -6611,8 +6784,8 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
           imgData,
           left: position[0],
           top: position[1],
-          width: width / currentTransform[0],
-          height: height / currentTransform[3]
+          width: width / ctx.mozCurrentTransformInverse[0],
+          height: height / ctx.mozCurrentTransformInverse[3]
         });
       }
 
@@ -6770,20 +6943,6 @@ exports.TilingPattern = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-let svgElement;
-
-function createMatrix(matrix) {
-  if (typeof DOMMatrix !== "undefined") {
-    return new DOMMatrix(matrix);
-  }
-
-  if (!svgElement) {
-    svgElement = document.createElementNS("http://www.w3.org/2000/svg";, "svg");
-  }
-
-  return svgElement.createSVGMatrix(matrix);
-}
-
 function applyBoundingBox(ctx, bbox) {
   if (!bbox || typeof Path2D === "undefined") {
     return;
@@ -6820,42 +6979,65 @@ class RadialAxialShadingPattern extends BaseShadingPattern {
     this._r0 = IR[6];
     this._r1 = IR[7];
     this._matrix = IR[8];
+    this._patternCache = null;
   }
 
-  getPattern(ctx, owner, shadingFill) {
-    const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", ctx.canvas.width, ctx.canvas.height, true);
-    const tmpCtx = tmpCanvas.context;
-    tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
-    tmpCtx.beginPath();
-    tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
-
-    if (!shadingFill) {
-      tmpCtx.setTransform.apply(tmpCtx, owner.baseTransform);
-
-      if (this._matrix) {
-        tmpCtx.transform.apply(tmpCtx, this._matrix);
-      }
-    } else {
-      tmpCtx.setTransform.apply(tmpCtx, ctx.mozCurrentTransform);
-    }
-
-    applyBoundingBox(tmpCtx, this._bbox);
+  _createGradient(ctx) {
     let grad;
 
     if (this._type === "axial") {
-      grad = tmpCtx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);
+      grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);
     } else if (this._type === "radial") {
-      grad = tmpCtx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], 
this._r1);
+      grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], 
this._r1);
     }
 
     for (const colorStop of this._colorStops) {
       grad.addColorStop(colorStop[0], colorStop[1]);
     }
 
-    tmpCtx.fillStyle = grad;
-    tmpCtx.fill();
-    const pattern = ctx.createPattern(tmpCanvas.canvas, "repeat");
-    pattern.setTransform(createMatrix(ctx.mozCurrentTransformInverse));
+    return grad;
+  }
+
+  getPattern(ctx, owner, inverse, shadingFill = false) {
+    let pattern;
+
+    if (this._patternCache) {
+      pattern = this._patternCache;
+    } else {
+      if (!shadingFill) {
+        const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", owner.ctx.canvas.width, 
owner.ctx.canvas.height, true);
+        const tmpCtx = tmpCanvas.context;
+        tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+        tmpCtx.beginPath();
+        tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+        tmpCtx.setTransform.apply(tmpCtx, owner.baseTransform);
+
+        if (this._matrix) {
+          tmpCtx.transform.apply(tmpCtx, this._matrix);
+        }
+
+        applyBoundingBox(tmpCtx, this._bbox);
+        tmpCtx.fillStyle = this._createGradient(tmpCtx);
+        tmpCtx.fill();
+        pattern = ctx.createPattern(tmpCanvas.canvas, "repeat");
+      } else {
+        applyBoundingBox(ctx, this._bbox);
+        pattern = this._createGradient(ctx);
+      }
+
+      this._patternCache = pattern;
+    }
+
+    if (!shadingFill) {
+      const domMatrix = new DOMMatrix(inverse);
+
+      try {
+        pattern.setTransform(domMatrix);
+      } catch (ex) {
+        (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`);
+      }
+    }
+
     return pattern;
   }
 
@@ -6926,8 +7108,6 @@ function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
 
       if (y < y1) {
         k = 0;
-      } else if (y1 === y2) {
-        k = 1;
       } else {
         k = (y1 - y) / (y1 - y2);
       }
@@ -7086,7 +7266,7 @@ class MeshShadingPattern extends BaseShadingPattern {
     };
   }
 
-  getPattern(ctx, owner, shadingFill) {
+  getPattern(ctx, owner, inverse, shadingFill = false) {
     applyBoundingBox(ctx, this._bbox);
     let scale;
 
@@ -7192,15 +7372,33 @@ class TilingPattern {
     const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
     graphics.groupLevel = owner.groupLevel;
     this.setFillAndStrokeStyleToContext(graphics, paintType, color);
+    let adjustedX0 = x0;
+    let adjustedY0 = y0;
+    let adjustedX1 = x1;
+    let adjustedY1 = y1;
+
+    if (x0 < 0) {
+      adjustedX0 = 0;
+      adjustedX1 += Math.abs(x0);
+    }
+
+    if (y0 < 0) {
+      adjustedY0 = 0;
+      adjustedY1 += Math.abs(y0);
+    }
+
+    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));
     graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
-    this.clipBbox(graphics, bbox, x0, y0, x1, y1);
+    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);
     graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();
     graphics.executeOperatorList(operatorList);
     graphics.endDrawing();
     return {
       canvas: tmpCanvas.canvas,
       scaleX: dimx.scale,
-      scaleY: dimy.scale
+      scaleY: dimy.scale,
+      offsetX: adjustedX0,
+      offsetY: adjustedY0
     };
   }
 
@@ -7221,14 +7419,12 @@ class TilingPattern {
     };
   }
 
-  clipBbox(graphics, bbox, x0, y0, x1, y1) {
-    if (Array.isArray(bbox) && bbox.length === 4) {
-      const bboxWidth = x1 - x0;
-      const bboxHeight = y1 - y0;
-      graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
-      graphics.clip();
-      graphics.endPath();
-    }
+  clipBbox(graphics, x0, y0, x1, y1) {
+    const bboxWidth = x1 - x0;
+    const bboxHeight = y1 - y0;
+    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
+    graphics.clip();
+    graphics.endPath();
   }
 
   setFillAndStrokeStyleToContext(graphics, paintType, color) {
@@ -7258,9 +7454,8 @@ class TilingPattern {
     }
   }
 
-  getPattern(ctx, owner, shadingFill) {
-    ctx = this.ctx;
-    let matrix = ctx.mozCurrentTransformInverse;
+  getPattern(ctx, owner, inverse, shadingFill = false) {
+    let matrix = inverse;
 
     if (!shadingFill) {
       matrix = _util.Util.transform(matrix, owner.baseTransform);
@@ -7271,10 +7466,17 @@ class TilingPattern {
     }
 
     const temporaryPatternCanvas = this.createPatternCanvas(owner);
-    let domMatrix = createMatrix(matrix);
+    let domMatrix = new DOMMatrix(matrix);
+    domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
     domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);
     const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat");
-    pattern.setTransform(domMatrix);
+
+    try {
+      pattern.setTransform(domMatrix);
+    } catch (ex) {
+      (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`);
+    }
+
     return pattern;
   }
 
@@ -8421,7 +8623,7 @@ var _display_utils = __w_pdfjs_require__(1);
 
 var _util = __w_pdfjs_require__(2);
 
-var _annotation_storage = __w_pdfjs_require__(8);
+var _annotation_storage = __w_pdfjs_require__(9);
 
 var _scripting_utils = __w_pdfjs_require__(18);
 
@@ -8558,8 +8760,8 @@ class AnnotationElement {
       container.style.borderWidth = `${data.borderStyle.width}px`;
 
       if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
-        width = width - 2 * data.borderStyle.width;
-        height = height - 2 * data.borderStyle.width;
+        width -= 2 * data.borderStyle.width;
+        height -= 2 * data.borderStyle.width;
       }
 
       const horizontalRadius = data.borderStyle.horizontalCornerRadius;
@@ -12048,9 +12250,7 @@ exports.SVGGraphics = SVGGraphics;
       const paintType = args[7];
       const tilingId = `shading${shadingCount++}`;
 
-      const [tx0, ty0] = _util.Util.applyTransform([x0, y0], matrix);
-
-      const [tx1, ty1] = _util.Util.applyTransform([x1, y1], matrix);
+      const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), 
..._util.Util.applyTransform([x1, y1], matrix)]);
 
       const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);
 
@@ -12576,48 +12776,54 @@ Object.defineProperty(exports, "__esModule", ({
 exports.XfaLayer = void 0;
 
 class XfaLayer {
-  static setupStorage(html, fieldId, element, storage) {
-    const storedData = storage.getValue(fieldId, {
+  static setupStorage(html, id, element, storage, intent) {
+    const storedData = storage.getValue(id, {
       value: null
     });
 
     switch (element.name) {
       case "textarea":
-        html.textContent = storedData.value !== null ? storedData.value : "";
+        if (storedData.value !== null) {
+          html.textContent = storedData.value;
+        }
+
+        if (intent === "print") {
+          break;
+        }
+
         html.addEventListener("input", event => {
-          storage.setValue(fieldId, {
+          storage.setValue(id, {
             value: event.target.value
           });
         });
         break;
 
       case "input":
-        if (storedData.value !== null) {
-          html.setAttribute("value", storedData.value);
-        }
+        if (element.attributes.type === "radio" || element.attributes.type === "checkbox") {
+          if (storedData.value === element.attributes.xfaOn) {
+            html.setAttribute("checked", true);
+          }
 
-        if (element.attributes.type === "radio") {
-          html.addEventListener("change", event => {
-            const {
-              target
-            } = event;
-
-            for (const radio of document.getElementsByName(target.name)) {
-              if (radio !== target) {
-                const id = radio.id;
-                storage.setValue(id.split("-")[0], {
-                  value: false
-                });
-              }
-            }
+          if (intent === "print") {
+            break;
+          }
 
-            storage.setValue(fieldId, {
-              value: target.checked
+          html.addEventListener("change", event => {
+            storage.setValue(id, {
+              value: event.target.getAttribute("xfaOn")
             });
           });
         } else {
+          if (storedData.value !== null) {
+            html.setAttribute("value", storedData.value);
+          }
+
+          if (intent === "print") {
+            break;
+          }
+
           html.addEventListener("input", event => {
-            storage.setValue(fieldId, {
+            storage.setValue(id, {
               value: event.target.value
             });
           });
@@ -12636,8 +12842,8 @@ class XfaLayer {
 
         html.addEventListener("input", event => {
           const options = event.target.options;
-          const value = options.selectedIndex === -1 ? null : options[options.selectedIndex].value;
-          storage.setValue(fieldId, {
+          const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value;
+          storage.setValue(id, {
             value
           });
         });
@@ -12645,19 +12851,25 @@ class XfaLayer {
     }
   }
 
-  static setAttributes(html, element, storage) {
+  static setAttributes(html, element, storage, intent) {
     const {
       attributes
     } = element;
 
+    if (attributes.type === "radio") {
+      attributes.name = `${attributes.name}-${intent}`;
+    }
+
     for (const [key, value] of Object.entries(attributes)) {
-      if (value === null || value === undefined || key === "fieldId") {
+      if (value === null || value === undefined || key === "dataId") {
         continue;
       }
 
       if (key !== "style") {
         if (key === "textContent") {
           html.textContent = value;
+        } else if (key === "class") {
+          html.setAttribute(key, value.join(" "));
         } else {
           html.setAttribute(key, value);
         }
@@ -12666,14 +12878,15 @@ class XfaLayer {
       }
     }
 
-    if (storage && attributes.fieldId !== undefined) {
-      this.setupStorage(html, attributes.fieldId, element, storage);
+    if (storage && attributes.dataId) {
+      this.setupStorage(html, attributes.dataId, element, storage);
     }
   }
 
   static render(parameters) {
     const storage = parameters.annotationStorage;
     const root = parameters.xfa;
+    const intent = parameters.intent || "display";
     const rootHtml = document.createElement(root.name);
 
     if (root.attributes) {
@@ -12683,8 +12896,8 @@ class XfaLayer {
     const stack = [[root, -1, rootHtml]];
     const rootDiv = parameters.div;
     rootDiv.appendChild(rootHtml);
-    const coeffs = parameters.viewport.transform.join(",");
-    rootDiv.style.transform = `matrix(${coeffs})`;
+    const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+    rootDiv.style.transform = transform;
     rootDiv.setAttribute("class", "xfaLayer xfaFont");
 
     while (stack.length > 0) {
@@ -12710,11 +12923,18 @@ class XfaLayer {
         continue;
       }
 
-      const childHtml = document.createElement(name);
+      let childHtml;
+
+      if (child?.attributes?.xmlns) {
+        childHtml = document.createElementNS(child.attributes.xmlns, name);
+      } else {
+        childHtml = document.createElement(name);
+      }
+
       html.appendChild(childHtml);
 
       if (child.attributes) {
-        this.setAttributes(childHtml, child, storage);
+        this.setAttributes(childHtml, child, storage, intent);
       }
 
       if (child.children && child.children.length > 0) {
@@ -12723,6 +12943,10 @@ class XfaLayer {
         childHtml.appendChild(document.createTextNode(child.value));
       }
     }
+
+    for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) {
+      el.setAttribute("readOnly", true);
+    }
   }
 
   static update(parameters) {
@@ -14367,6 +14591,12 @@ Object.defineProperty(exports, "getPdfFilenameFromUrl", ({
     return _display_utils.getPdfFilenameFromUrl;
   }
 }));
+Object.defineProperty(exports, "getXfaPageViewport", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.getXfaPageViewport;
+  }
+}));
 Object.defineProperty(exports, "isPdfFile", ({
   enumerable: true,
   get: function () {
@@ -14529,12 +14759,6 @@ Object.defineProperty(exports, "AnnotationLayer", ({
     return _annotation_layer.AnnotationLayer;
   }
 }));
-Object.defineProperty(exports, "apiCompatibilityParams", ({
-  enumerable: true,
-  get: function () {
-    return _api_compatibility.apiCompatibilityParams;
-  }
-}));
 Object.defineProperty(exports, "GlobalWorkerOptions", ({
   enumerable: true,
   get: function () {
@@ -14562,46 +14786,44 @@ Object.defineProperty(exports, "XfaLayer", ({
 
 var _display_utils = __w_pdfjs_require__(1);
 
-var _api = __w_pdfjs_require__(5);
+var _api = __w_pdfjs_require__(6);
 
 var _util = __w_pdfjs_require__(2);
 
 var _annotation_layer = __w_pdfjs_require__(17);
 
-var _api_compatibility = __w_pdfjs_require__(9);
-
 var _worker_options = __w_pdfjs_require__(12);
 
+var _is_node = __w_pdfjs_require__(4);
+
 var _text_layer = __w_pdfjs_require__(19);
 
 var _svg = __w_pdfjs_require__(20);
 
 var _xfa_layer = __w_pdfjs_require__(21);
 
-const pdfjsVersion = '2.9.359';
-const pdfjsBuild = 'e667c8cbc';
+const pdfjsVersion = '2.10.377';
+const pdfjsBuild = '156762c48';
 {
-  const {
-    isNodeJS
-  } = __w_pdfjs_require__(4);
-
-  if (isNodeJS) {
-    const PDFNodeStream = __w_pdfjs_require__(22).PDFNodeStream;
+  if (_is_node.isNodeJS) {
+    const {
+      PDFNodeStream
+    } = __w_pdfjs_require__(22);
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
       return new PDFNodeStream(params);
     });
   } else {
-    const PDFNetworkStream = __w_pdfjs_require__(25).PDFNetworkStream;
-
-    let PDFFetchStream;
+    const {
+      PDFNetworkStream
+    } = __w_pdfjs_require__(25);
 
-    if ((0, _display_utils.isFetchSupported)()) {
-      PDFFetchStream = __w_pdfjs_require__(26).PDFFetchStream;
-    }
+    const {
+      PDFFetchStream
+    } = __w_pdfjs_require__(26);
 
     (0, _api.setPDFNetworkStreamFactory)(params => {
-      if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {
+      if ((0, _display_utils.isValidFetchUrl)(params.url)) {
         return new PDFFetchStream(params);
       }
 
diff --git a/third-party/pdfjs/build/pdf.sandbox.js b/third-party/pdfjs/build/pdf.sandbox.js
index 6e0fa98ce..9f778c348 100644
--- a/third-party/pdfjs/build/pdf.sandbox.js
+++ b/third-party/pdfjs/build/pdf.sandbox.js
@@ -215,8 +215,8 @@ var _pdfSandboxExternal = __w_pdfjs_require__(2);
 
 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-const pdfjsVersion = '2.9.359';
-const pdfjsBuild = 'e667c8cbc';
+const pdfjsVersion = '2.10.377';
+const pdfjsBuild = '156762c48';
 
 class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
   exportValueToSandbox(val) {
@@ -242,7 +242,7 @@ class Sandbox {
   }
 
   create(data) {
-    const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 
\'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 
\'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = 
__w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar 
_conso
 le = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = 
__w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete 
globalThis.pdfjsScripting;\n  const externalCall = globalThis.callExternalFunction;\n  delete 
globalThis.callExternalFunction;\n\n  const globalEval = code => globalThis.eval(code);\n\n  const send = 
data => externalCall("send", [data]);\n\n  const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    
data\n  } = params;\n  const doc = new _doc.Doc({\n    send,\n    globalEval,\n    ...data.docInfo\n  });\n  
const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, proxyHandler)\n  };\n  const app = new 
_app.App({\n    send,\n    globalEval,\n    externalCall,\n    _document,\n    calculationOrder: 
data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  const util = new _util.Util({\n    
externalCall\n  });\n  const appObjects = app._objects;\n\n  if (data.objects) 
 {\n    const annotations = [];\n\n    for (const [name, objs] of Object.entries(data.objects)) {\n      
annotations.length = 0;\n      let container = null;\n\n      for (const obj of objs) {\n        if (obj.type 
!== "") {\n          annotations.push(obj);\n        } else {\n          container = obj;\n        }\n      
}\n\n      let obj = container;\n\n      if (annotations.length > 0) {\n        obj = annotations[0];\n       
 obj.send = send;\n      }\n\n      obj.globalEval = globalEval;\n      obj.doc = _document;\n      
obj.fieldPath = name;\n      obj.appObjects = appObjects;\n      let field;\n\n      switch (obj.type) {\n    
    case "radiobutton":\n          {\n            const otherButtons = annotations.slice(1);\n            
field = new _field.RadioButtonField(otherButtons, obj);\n            break;\n          }\n\n        case 
"checkbox":\n          {\n            const otherButtons = annotations.slice(1);\n            field = new 
_field.CheckboxField(otherButtons, obj
 );\n            break;\n          }\n\n        case "text":\n          if (annotations.length <= 1) {\n      
      field = new _field.Field(obj);\n            break;\n          }\n\n          obj.siblings = 
annotations.map(x => x.id).slice(1);\n          field = new _field.Field(obj);\n          break;\n\n        
default:\n          field = new _field.Field(obj);\n      }\n\n      const wrapped = new Proxy(field, 
proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: field,\n       
 wrapped\n      };\n\n      for (const object of objs) {\n        appObjects[object.id] = _object;\n      
}\n\n      if (container) {\n        appObjects[container.id] = _object;\n      }\n    }\n  }\n\n  const 
color = new _color.Color();\n  globalThis.event = null;\n  globalThis.global = Object.create(null);\n  
globalThis.app = new Proxy(app, proxyHandler);\n  globalThis.color = new Proxy(color, proxyHandler);\n  
globalThis.console = new Proxy(new _console.Console(
 {\n    send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  globalThis.trans = _constants.Trans;\n  
globalThis.zoomtype = _constants.ZoomType;\n  globalThis.ADBE = {\n    Reader_Value_Asked: true,\n    
Viewer_Value_Asked: true\n  };\n  const aform = new _aform.AForm(doc, app, util, color);\n\n  for (const name 
of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n  
   Object.defineProperty(globalThis, name, {\n      value,\n      writable: false\n    });\n  }\n\n  
Object.defineProperties(globalThis, {\n    ColorConvert: {\n      value: color.convert.bind(color),\n      
writable: true\n    },\n    ColorEqual: {\n      value: color.equal.bind(color),\n      writable: true\n    
}\n  });\n  const properties = Object.create(null);\n\n  for (const name of 
Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name === "constructor" || name.startsWith("_")) 
{\n      continue;\n    }\n\n    const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, 
name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: descriptor.get.bind(doc),\n     
   set: descriptor.set.bind(doc)\n      };\n    } else {\n      properties[name] = {\n        value: 
_doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  Object.defineProperties(globalThis, 
properties);\n  const functions = {\n    dispatchEvent: app._dispatchEvent.bind(app),\
 n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n    try {\n      
functions[name](args);\n    } catch (error) {\n      const value = `${error.toString()}\\n${error.stack}`;\n  
    send({\n        command: "error",\n        value\n      });\n    }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = 
exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = 
exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n  s: "solid",\n  d: "dashed",\n  
b: "beveled",\n  i: "inset",\n  u: "underline"\n});\nexports.Border = Border;\nconst Cursor = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  noPrint: 2,\n  noView
 : 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: "Times-Roman",\n  TimesB: 
"Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: "Helvetica",\n  HelvB: 
"Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n  Cour: "Courier",\n  
CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  Symbol: "Symbol",\n  
ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n  n: "none",\n  
i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = 
Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 3,\n  iconTextH: 4,\n  
textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n  
proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = O
 bject.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitHorizontalIn",\n  splitHO: "SplitHorizontalOut",\n 
 splitVI: "SplitVerticalIn",\n  splitVO: "SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  
wipeR: "WipeRight",\n  wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  
none: "NoVary",\n  fitP: "FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  
pref: "Preferred",\n  refW: "ReflowWidth"\n});\ne
 xports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  IDS_GREATER_THAN: "Invalid value: 
must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % 
s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: must be less than or equal to % 
s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid date / time: please ensure that the 
date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format ",\n  IDS_INVALID_VALUE: "The value 
entered does not match the format of the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: 
"January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + 
"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] 
Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: 
["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SE
 P: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d
 {0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    this.calcOrd
 erIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = data.comb;\n    
this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = data.currentValueIndices;\n  
  this.defaultStyle = data.defaultStyle;\n    this.defaultValue = data.defaultValue;\n    this.doNotScroll = 
data.doNotScroll;\n    this.doNotSpellCheck = data.doNotSpellCheck;\n    this.delay = data.delay;\n    
this.display = data.display;\n    this.doc = data.doc.wrapped;\n    this.editable = data.editable;\n    
this.exportValues = data.exportValues;\n    this.fileSelect = data.fileSelect;\n    this.hidden = 
data.hidden;\n    this.highlight = data.highlight;\n    this.lineWidth = data.lineWidth;\n    this.multiline 
= data.multiline;\n    this.multipleSelection = !!data.multipleSelection;\n    this.name = data.name;\n    
this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.
 rect = data.rect;\n    this.required = data.required;\n    this.richText = data.richText;\n    
this.richValue = data.richValue;\n    this.rotation = data.rotation;\n    this.style = data.style;\n    
this.submitName = data.submitName;\n    this.textFont = data.textFont;\n    this.textSize = data.textSize;\n  
  this.type = data.type;\n    this.userName = data.userName;\n    this._actions = (0, 
_common.createActionsMap)(data.actions);\n    this._browseForFileToSubmit = data.browseForFileToSubmit || 
null;\n    this._buttonCaption = null;\n    this._buttonIcon = null;\n    this._children = null;\n    
this._currentValueIndices = data.currentValueIndices || 0;\n    this._document = data.doc;\n    
this._fieldPath = data.fieldPath;\n    this._fillColor = data.fillColor || ["T"];\n    this._isChoice = 
Array.isArray(data.items);\n    this._items = data.items || [];\n    this._page = data.page || 0;\n    
this._strokeColor = data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || 
 ["G", 0];\n    this._value = data.value || "";\n    this._kidIds = data.kidIds || null;\n    this._fieldType 
= (0, _common.getFieldType)(this._actions);\n    this._siblings = data.siblings || null;\n    
this._globalEval = data.globalEval;\n    this._appObjects = data.appObjects;\n    this.valueAsString = 
data.valueAsString || this._value;\n  }\n\n  get currentValueIndices() {\n    if (!this._isChoice) {\n      
return 0;\n    }\n\n    return this._currentValueIndices;\n  }\n\n  set currentValueIndices(indices) {\n    
if (!this._isChoice) {\n      return;\n    }\n\n    if (!Array.isArray(indices)) {\n      indices = 
[indices];\n    }\n\n    if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i 
< this.numItems)) {\n      return;\n    }\n\n    indices.sort();\n\n    if (this.multipleSelection) {\n      
this._currentValueIndices = indices;\n      this._value = [];\n      indices.forEach(i => {\n        
this._value.push(this._items[i].displayValue);\n      })
 ;\n    } else {\n      if (indices.length > 0) {\n        indices = indices.splice(1, indices.length - 1);\n 
       this._currentValueIndices = indices[0];\n        this._value = 
this._items[this._currentValueIndices];\n      }\n    }\n\n    this._send({\n      id: this._id,\n      
indices\n    });\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get bgColor() {\n 
   return this.fillColor;\n  }\n\n  set bgColor(color) {\n    this.fillColor = color;\n  }\n\n  get 
numItems() {\n    if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    return 
this._items.length;\n  }\n\n  set numItems(_) {\n    throw new Error("field.numItems is read-only");\n  }\n\n 
 get strokeColor() {\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n
   }\n\n  get borderColor() {\n    return this.strokeColor;\n  }\n\n  set borderColor(color) {\n    
this.strokeColor = color;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(_) {\n    throw 
new Error("field.page is read-only");\n  }\n\n  get textColor() {\n    return this._textColor;\n  }\n\n  set 
textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n      this._textColor = color;\n    }\n  
}\n\n  get fgColor() {\n    return this.textColor;\n  }\n\n  set fgColor(color) {\n    this.textColor = 
color;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "") 
{\n      this._value = "";\n    } else if (typeof value === "string") {\n      switch (this._fieldType) {\n   
     case _common.FieldType.number:\n        case _common.FieldType.percent:\n          value = 
parseFloat(value);\n\n          if (!isNaN(value)) {\n            this._value = value;\n          }\n\n       
   break;\n\n        default:\n          this.
 _value = value;\n      }\n    } else {\n      this._value = value;\n    }\n\n    if (this._isChoice) {\n     
 if (this.multipleSelection) {\n        const values = new Set(value);\n        
this._currentValueIndices.length = 0;\n\n        this._items.forEach(({\n          displayValue\n        }, 
i) => {\n          if (values.has(displayValue)) {\n            this._currentValueIndices.push(i);\n          
}\n        });\n      } else {\n        this._currentValueIndices = this._items.findIndex(({\n          
displayValue\n        }) => value === displayValue);\n      }\n    }\n  }\n\n  get valueAsString() {\n    if 
(this._valueAsString === undefined) {\n      this._valueAsString = this._value ? this._value.toString() : 
"";\n    }\n\n    return this._valueAsString;\n  }\n\n  set valueAsString(val) {\n    this._valueAsString = 
val ? val.toString() : "";\n  }\n\n  browseForFileToSubmit() {\n    if (this._browseForFileToSubmit) {\n      
this._browseForFileToSubmit();\n    }\n  }\n\n  butto
 nGetCaption(nFace = 0) {\n    if (this._buttonCaption) {\n      return this._buttonCaption[nFace];\n    
}\n\n    return "";\n  }\n\n  buttonGetIcon(nFace = 0) {\n    if (this._buttonIcon) {\n      return 
this._buttonIcon[nFace];\n    }\n\n    return null;\n  }\n\n  buttonImportIcon(cPath = null, nPave = 0) 
{}\n\n  buttonSetCaption(cCaption, nFace = 0) {\n    if (!this._buttonCaption) {\n      this._buttonCaption = 
["", "", ""];\n    }\n\n    this._buttonCaption[nFace] = cCaption;\n  }\n\n  buttonSetIcon(oIcon, nFace = 0) 
{\n    if (!this._buttonIcon) {\n      this._buttonIcon = [null, null, null];\n    }\n\n    
this._buttonIcon[nFace] = oIcon;\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {}\n\n  clearItems() {\n    
if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    this._items = [];\n\n    
this._send({\n      id: this._id,\n      clear: null\n    });\n  }\n\n  deleteItemAt(nIdx = null) {\n    if 
(!this._isChoice) {\n      throw new Error("Not a c
 hoice widget");\n    }\n\n    if (!this.numItems) {\n      return;\n    }\n\n    if (nIdx === null) {\n      
nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n 
     nIdx = nIdx || 0;\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = this.numItems - 
1;\n    }\n\n    this._items.splice(nIdx, 1);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      
let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        if 
(this._currentValueIndices[index] === nIdx) {\n          this._currentValueIndices.splice(index, 1);\n        
}\n\n        for (const ii = this._currentValueIndices.length; index < ii; index++) {\n          
--this._currentValueIndices[index];\n        }\n      }\n    } else {\n      if (this._currentValueIndices 
=== nIdx) {\n        this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n      } else if 
(this._currentValueIndices > nIdx) {\n        --
 this._currentValueIndices;\n      }\n    }\n\n    this._send({\n      id: this._id,\n      remove: nIdx\n    
});\n  }\n\n  getItemAt(nIdx = -1, bExportValue = false) {\n    if (!this._isChoice) {\n      throw new 
Error("Not a choice widget");\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = 
this.numItems - 1;\n    }\n\n    const item = this._items[nIdx];\n    return bExportValue ? item.exportValue 
: item.displayValue;\n  }\n\n  getArray() {\n    if (this._kidIds) {\n      return this._kidIds.map(id => 
this._appObjects[id].wrapped);\n    }\n\n    if (this._children === null) {\n      this._children = 
this._document.obj._getChildren(this._fieldPath);\n    }\n\n    return this._children;\n  }\n\n  getLock() 
{\n    return undefined;\n  }\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  
isDefaultChecked(nWidget) {\n    return false;\n  }\n\n  insertItemAt(cName, cExport = undefined, nIdx = 0) 
{\n    if (!this._isChoice) {\n      throw new Error("Not a choice 
 widget");\n    }\n\n    if (!cName) {\n      return;\n    }\n\n    if (nIdx < 0 || nIdx > this.numItems) {\n 
     nIdx = this.numItems;\n    }\n\n    if (this._items.some(({\n      displayValue\n    }) => displayValue 
=== cName)) {\n      return;\n    }\n\n    if (cExport === undefined) {\n      cExport = cName;\n    }\n\n    
const data = {\n      displayValue: cName,\n      exportValue: cExport\n    };\n\n    
this._items.splice(nIdx, 0, data);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      let index = 
this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        for (const ii = 
this._currentValueIndices.length; index < ii; index++) {\n          ++this._currentValueIndices[index];\n     
   }\n      }\n    } else if (this._currentValueIndices >= nIdx) {\n      ++this._currentValueIndices;\n    
}\n\n    this._send({\n      id: this._id,\n      insert: {\n        index: nIdx,\n        ...data\n      }\n 
   });\n  }\n\n  setAction(cTrigger, cS
 cript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n      return;\n    }\n\n   
 if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = [];\n    }\n\n    
this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: this._id,\n      
focus: true\n    });\n  }\n\n  setItems(oArray) {\n    if (!this._isChoice) {\n      throw new Error("Not a 
choice widget");\n    }\n\n    this._items.length = 0;\n\n    for (const element of oArray) {\n      let 
displayValue, exportValue;\n\n      if (Array.isArray(element)) {\n        displayValue = 
element[0]?.toString() || "";\n        exportValue = element[1]?.toString() || "";\n      } else {\n        
displayValue = exportValue = element?.toString() || "";\n      }\n\n      this._items.push({\n        
displayValue,\n        exportValue\n      });\n    }\n\n    this._currentValueIndices = 0;\n\n    
this._send({\n      id: this._id,\n      items: this._items\n    });\n  }\n\n  se
 tLock() {}\n\n  signatureGetModifications() {}\n\n  signatureGetSeedValue() {}\n\n  signatureInfo() {}\n\n  
signatureSetSeedValue() {}\n\n  signatureSign() {}\n\n  signatureValidate() {}\n\n  _isButton() {\n    return 
false;\n  }\n\n  _runActions(event) {\n    const eventName = event.name;\n\n    if 
(!this._actions.has(eventName)) {\n      return false;\n    }\n\n    const actions = 
this._actions.get(eventName);\n\n    try {\n      for (const action of actions) {\n        
this._globalEval(action);\n      }\n    } catch (error) {\n      event.rc = false;\n      throw error;\n    
}\n\n    return true;\n  }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n  
constructor(otherButtons, data) {\n    super(data);\n    this.exportValues = [this.exportValues];\n    
this._radioIds = [this._id];\n    this._radioActions = [this._actions];\n\n    for (const radioData of 
otherButtons) {\n      this.exportValues.push(radioData.exportValues);\n\n      this._radioIds.push(rad
 ioData.id);\n\n      this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n      if 
(this._value === radioData.exportValues) {\n        this._id = radioData.id;\n      }\n    }\n  }\n\n  get 
value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === null || value === 
undefined) {\n      this._value = "";\n    }\n\n    const i = this.exportValues.indexOf(value);\n\n    if (0 
<= i && i < this._radioIds.length) {\n      this._id = this._radioIds[i];\n      this._value = value;\n    } 
else if (value === "Off" && this._radioIds.length === 2) {\n      const nextI = (1 + 
this._radioIds.indexOf(this._id)) % 2;\n      this._id = this._radioIds[nextI];\n      this._value = 
this.exportValues[nextI];\n    }\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {\n    if (nWidget < 0 || 
nWidget >= this._radioIds.length || !bCheckIt) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = this.exportValues[nWidget];\n\n    t
 his._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n  isBoxChecked(nWidget) {\n    
return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n  }\n\n  
isDefaultChecked(nWidget) {\n    return nWidget >= 0 && nWidget < this.exportValues.length && 
this.defaultValue === this.exportValues[nWidget];\n  }\n\n  _getExportValue(state) {\n    const i = 
this._radioIds.indexOf(this._id);\n\n    return this.exportValues[i];\n  }\n\n  _runActions(event) {\n    
const i = this._radioIds.indexOf(this._id);\n\n    this._actions = this._radioActions[i];\n    return 
super._runActions(event);\n  }\n\n  _isButton() {\n    return true;\n  }\n\n}\n\nexports.RadioButtonField = 
RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n  get value() {\n    return 
this._value;\n  }\n\n  set value(value) {\n    if (!value || value === "Off") {\n      this._value = "Off";\n 
   } else {\n      super.value = value;\n    }\n  }\n\n  _getExport
 Value(state) {\n    return state ? super._getExportValue(state) : "Off";\n  }\n\n  isBoxChecked(nWidget) {\n 
   if (this._value === "Off") {\n      return false;\n    }\n\n    return super.isBoxChecked(nWidget);\n  
}\n\n  isDefaultChecked(nWidget) {\n    if (this.defaultValue === "Off") {\n      return this._value === 
"Off";\n    }\n\n    return super.isDefaultChecked(nWidget);\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) 
{\n    if (nWidget < 0 || nWidget >= this._radioIds.length) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n    
this._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n}\n\nexports.CheckboxField = 
CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.createActionsMap = 
createActionsMap;\nexports.getFieldType = getFieldType;\nexports.FieldTy
 pe = void 0;\nconst FieldType = {\n  none: 0,\n  number: 1,\n  percent: 2,\n  date: 3,\n  time: 
4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n  const actionsMap = new 
Map();\n\n  if (actions) {\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n      
actionsMap.set(eventType, actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\nfunction 
getFieldType(actions) {\n  let format = actions.get("Format");\n\n  if (!format) {\n    return 
FieldType.none;\n  }\n\n  format = format[0];\n  format = format.trim();\n\n  if 
(format.startsWith("AFNumber_")) {\n    return FieldType.number;\n  }\n\n  if 
(format.startsWith("AFPercent_")) {\n    return FieldType.percent;\n  }\n\n  if 
(format.startsWith("AFDate_")) {\n    return FieldType.date;\n  }\n\n  if (format.startsWith("AFTime__")) {\n 
   return FieldType.time;\n  }\n\n  return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) =
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Color = void 
0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
Color extends _pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n  
  this.black = ["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = 
["RGB", 0, 1, 0];\n    this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    
this.magenta = ["CMYK", 0, 1, 0, 0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 
0.25];\n    this.gray = ["G", 0.5];\n    this.ltGray = ["G", 0.75];\n  }\n\n  static 
_isValidSpace(cColorSpace) {\n    return typeof cColorSpace === "string" && (cColorSpace === "T" || 
cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n  }\n\n  static 
_isValidColor(colorArray) {\n    if (!Array.isArray(colorArray) || colorArray.length === 0) {\n      
 return false;\n    }\n\n    const space = colorArray[0];\n\n    if (!Color._isValidSpace(space)) {\n      
return false;\n    }\n\n    switch (space) {\n      case "T":\n        if (colorArray.length !== 1) {\n       
   return false;\n        }\n\n        break;\n\n      case "G":\n        if (colorArray.length !== 2) {\n    
      return false;\n        }\n\n        break;\n\n      case "RGB":\n        if (colorArray.length !== 4) 
{\n          return false;\n        }\n\n        break;\n\n      case "CMYK":\n        if (colorArray.length 
!== 5) {\n          return false;\n        }\n\n        break;\n\n      default:\n        return false;\n    
}\n\n    return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n  }\n\n  static 
_getCorrectColor(colorArray) {\n    return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n  }\n\n  
convert(colorArray, cColorSpace) {\n    if (!Color._isValidSpace(cColorSpace)) {\n      return this.black;\n  
  }\n\n    if (cC
 olorSpace === "T") {\n      return ["T"];\n    }\n\n    colorArray = Color._getCorrectColor(colorArray);\n\n 
   if (colorArray[0] === cColorSpace) {\n      return colorArray;\n    }\n\n    if (colorArray[0] === "T") 
{\n      return this.convert(this.black, cColorSpace);\n    }\n\n    return 
_scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n  }\n\n  
equal(colorArray1, colorArray2) {\n    colorArray1 = Color._getCorrectColor(colorArray1);\n    colorArray2 = 
Color._getCorrectColor(colorArray2);\n\n    if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n      
return colorArray1[0] === "T" && colorArray2[0] === "T";\n    }\n\n    if (colorArray1[0] !== colorArray2[0]) 
{\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\n    }\n\n    return 
colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n  }\n\n}\n\nexports.Color = Color;\n\n/***/ 
}),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.definePr
 operty(exports, "__esModule", ({\n  value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction 
makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, 
"0");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return ["G", 1 - Math.min(1, 0.3 * 
c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return ["CMYK", 0, 0, 0, 1 - g];\n  }\n\n  
static G_RGB([g]) {\n    return ["RGB", g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = 
makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return ["G", 0.3 * r 
+ 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const R = makeColorComp(r);\n    const G 
= makeColorComp(g);\n    const B = makeColorComp(b);\n    return `#${R}${G}${B}`;\n  }\n\n  static T_HTML() 
{\n    return "#00000000";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return ["RGB", 1 - Math.min(1, c + 
k), 1 - Math.min(1, m + k), 1 - Math.min(1, y 
 + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return this.RGB_HTML(this.CMYK_RGB(components));\n  
}\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    
const k = Math.min(c, m, y);\n    return ["CMYK", c, m, y, k];\n  }\n\n}\n\nexports.ColorConverters = 
ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.PDFObject = void 
0;\n\nclass PDFObject {\n  constructor(data) {\n    this._expandos = Object.create(null);\n    this._send = 
data.send || null;\n    this._id = data.id || null;\n  }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ 
}),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.AForm = void 0;\n\nvar 
_constants = __w_pdfjs_require__(2);\n\nclass AForm {\n  constructor(document, app, util, c
 olor) {\n    this._document = document;\n    this._app = app;\n    this._util = util;\n    this._color = 
color;\n    this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", 
"yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n    
this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n    this._emailRegex = new 
RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + 
"(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n  }\n\n  _mkTargetName(event) {\n    return 
event.target ? `[ ${event.target.name} ]` : "";\n  }\n\n  _parseDate(cFormat, cDate) {\n    const ddate = 
Date.parse(cDate);\n\n    if (isNaN(ddate)) {\n      try {\n        return this._util.scand(cFormat, 
cDate);\n      } catch (error) {\n        return null;\n      }\n    } else {\n      return new 
Date(ddate);\n    }\n  }\n\n  AFMergeChange(event = globalThis.event) {\n    
 if (event.willCommit) {\n      return event.value.toString();\n    }\n\n    return 
this._app._eventDispatcher.mergeChange(event);\n  }\n\n  AFParseDateEx(cString, cOrder) {\n    return 
this._parseDate(cOrder, cString);\n  }\n\n  AFExtractNums(str) {\n    if (typeof str === "number") {\n      
return [str];\n    }\n\n    if (!str || typeof str !== "string") {\n      return null;\n    }\n\n    const 
first = str.charAt(0);\n\n    if (first === "." || first === ",") {\n      str = `0${str}`;\n    }\n\n    
const numbers = str.match(/([0-9]+)/g);\n\n    if (numbers.length === 0) {\n      return null;\n    }\n\n    
return numbers;\n  }\n\n  AFMakeNumber(str) {\n    if (typeof str === "number") {\n      return str;\n    
}\n\n    if (typeof str !== "string") {\n      return null;\n    }\n\n    str = str.trim().replace(",", 
".");\n    const number = parseFloat(str);\n\n    if (isNaN(number) || !isFinite(number)) {\n      return 
null;\n    }\n\n    return number;\n  }\n\n  AFMakeArrayFromList(s
 tring) {\n    if (typeof string === "string") {\n      return string.split(/, ?/g);\n    }\n\n    return 
string;\n  }\n\n  AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n    
const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    let value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      event.value = "";\n      return;\n    
}\n\n    const sign = Math.sign(value);\n    const buf = [];\n    let hasParen = false;\n\n    if (sign === 
-1 && bCurrencyPrepend && negStyle === 0) {\n      buf.push("-");\n    }\n\n    if ((negStyle === 2 || 
negStyle === 3) && sign === -1) {\n      buf.push("(");\n      hasParen = true;\n    }\n\n    if 
(bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n    if 
(!bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    if (hasPare
 n) {\n      buf.push(")");\n    }\n\n    if (negStyle === 1 || negStyle === 3) {\n      
event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n    }\n\n    if ((negStyle !== 0 
|| bCurrencyPrepend) && sign === -1) {\n      value = -value;\n    }\n\n    const formatStr = buf.join("");\n 
   event.value = this._util.printf(formatStr, value);\n  }\n\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, 
currStyle, strCurrency, bCurrencyPrepend) {\n    const event = globalThis.event;\n    let value = 
this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    }\n\n    value = value.trim();\n    let 
pattern;\n\n    if (sepStyle > 1) {\n      pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : 
/^[+-]?[0-9]*,?[0-9]*$/;\n    } else {\n      pattern = event.willCommit ? 
/^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : /^[+-]?[0-9]*\\.?[0-9]*$/;\n    }\n\n    if (!pattern.test(value)) 
{\n      if (event.willCommit) {\n        const err = `${_constants.GlobalConstan
 ts.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n        this._app.alert(err);\n      }\n\n      
event.rc = false;\n    }\n\n    if (event.willCommit && sepStyle > 1) {\n      event.value = 
parseFloat(value.replace(",", "."));\n    }\n  }\n\n  AFPercent_Format(nDec, sepStyle, percentPrepend = 
false) {\n    if (typeof nDec !== "number") {\n      return;\n    }\n\n    if (typeof sepStyle !== "number") 
{\n      return;\n    }\n\n    if (nDec < 0) {\n      throw new Error("Invalid nDec value in 
AFPercent_Format");\n    }\n\n    const event = globalThis.event;\n\n    if (nDec > 512) {\n      event.value 
= "%";\n      return;\n    }\n\n    nDec = Math.floor(nDec);\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    let value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n    
  event.value = "%";\n      return;\n    }\n\n    const formatStr = `%,${sepStyle}.${nDec}f`;\n    value = 
this._util.printf(formatStr, value * 100);\n\n    if (percentPrepend)
  {\n      event.value = `%${value}`;\n    } else {\n      event.value = `${value}%`;\n    }\n  }\n\n  
AFPercent_Keystroke(nDec, sepStyle) {\n    this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n  }\n\n  
AFDate_FormatEx(cFormat) {\n    const event = globalThis.event;\n    const value = event.value;\n\n    if 
(!value) {\n      return;\n    }\n\n    const date = this._parseDate(cFormat, value);\n\n    if (date !== 
null) {\n      event.value = this._util.printd(cFormat, date);\n    }\n  }\n\n  AFDate_Format(pdf) {\n    if 
(pdf >= 0 && pdf < this._dateFormats.length) {\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\n    }\n  
}\n\n  AFDate_KeystrokeEx(cFormat) {\n    const event = globalThis.event;\n\n    if (!event.willCommit) {\n   
   return;\n    }\n\n    const value = this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    
}\n\n    if (this._parseDate(cFormat, value) === null) {\n      const invalid = 
_constants.GlobalConstants.IDS_INVALID_DATE;\n      const
  invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n      const err = `${invalid} 
${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n      this._app.alert(err);\n\n      event.rc = 
false;\n    }\n  }\n\n  AFDate_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < this._dateFormats.length) {\n      
this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n    }\n  }\n\n  AFRange_Validate(bGreaterThan, 
nGreaterThan, bLessThan, nLessThan) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      
return;\n    }\n\n    const value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      
return;\n    }\n\n    bGreaterThan = !!bGreaterThan;\n    bLessThan = !!bLessThan;\n\n    if (bGreaterThan) 
{\n      nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n      if (nGreaterThan === null) {\n        
return;\n      }\n    }\n\n    if (bLessThan) {\n      nLessThan = this.AFMakeNumber(nLessThan);\n\n      if 
(nLessThan === null) {\n        return;\n      }\n    }\n\n    l
 et err = "";\n\n    if (bGreaterThan && bLessThan) {\n      if (value < nGreaterThan || value > nLessThan) 
{\n        err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n      
}\n    } else if (bGreaterThan) {\n      if (value < nGreaterThan) {\n        err = 
this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n      }\n    } else if (value 
nLessThan) {\n      err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n    
}\n\n    if (err) {\n      this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  
AFSimple(cFunction, nValue1, nValue2) {\n    const value1 = this.AFMakeNumber(nValue1);\n\n    if (value1 === 
null) {\n      throw new Error("Invalid nValue1 in AFSimple");\n    }\n\n    const value2 = 
this.AFMakeNumber(nValue2);\n\n    if (value2 === null) {\n      throw new Error("Invalid nValue2 in 
AFSimple");\n    }\n\n    switch (cFunction) {\n      case "AVG":\n        return (val
 ue1 + value2) / 2;\n\n      case "SUM":\n        return value1 + value2;\n\n      case "PRD":\n        
return value1 * value2;\n\n      case "MIN":\n        return Math.min(value1, value2);\n\n      case "MAX":\n 
       return Math.max(value1, value2);\n    }\n\n    throw new Error("Invalid cFunction in AFSimple");\n  
}\n\n  AFSimple_Calculate(cFunction, cFields) {\n    const actions = {\n      AVG: args => args.reduce((acc, 
value) => acc + value, 0) / args.length,\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\n   
   PRD: args => args.reduce((acc, value) => acc * value, 1),\n      MIN: args => args.reduce((acc, value) => 
Math.min(acc, value), Number.MAX_VALUE),\n      MAX: args => args.reduce((acc, value) => Math.max(acc, 
value), Number.MIN_VALUE)\n    };\n\n    if (!(cFunction in actions)) {\n      throw new TypeError("Invalid 
function in AFSimple_Calculate");\n    }\n\n    const event = globalThis.event;\n    const values = [];\n\n   
 for (const cField of cField
 s) {\n      const field = this._document.getField(cField);\n\n      const number = 
this.AFMakeNumber(field.value);\n\n      if (number !== null) {\n        values.push(number);\n      }\n    
}\n\n    if (values.length === 0) {\n      event.value = cFunction === "PRD" ? 1 : 0;\n      return;\n    
}\n\n    const res = actions[cFunction](values);\n    event.value = Math.round(1e6 * res) / 1e6;\n  }\n\n  
AFSpecial_Format(psf) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    
}\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Format");\n    }\n\n    let formatStr = "";\n\n    switch (psf) {\n      case 0:\n        formatStr 
= "99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        if (this._util.printx("9999999999", event.value).length >= 10) {\n          formatStr = "(999) 
999-9999";\n        } else {\n          formatStr = "9
 99-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    
event.value = this._util.printx(formatStr, event.value);\n  }\n\n  AFSpecial_KeystrokeEx(cMask) {\n    if 
(!cMask) {\n      return;\n    }\n\n    const event = globalThis.event;\n    const value = 
this.AFMergeChange(event);\n    const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", 
char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" 
|| "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n    function 
_checkValidity(_value, _cMask) {\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        const mask 
= _cMask.charAt(i);\n\n        const char = _value.charAt(i);\n\n        const checker = 
checkers.get(mask);\n\n        if (checker) {\n          if (!checker(char)) {\n    
         return false;\n          }\n        } else if (mask !== char) {\n          return false;\n        
}\n      }\n\n      return true;\n    }\n\n    if (!value) {\n      return;\n    }\n\n    const err = 
`${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n    if (value.length > cMask.length) {\n   
   this._app.alert(err);\n\n      event.rc = false;\n      return;\n    }\n\n    if (event.willCommit) {\n    
  if (value.length < cMask.length) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      if (!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        
event.rc = false;\n        return;\n      }\n\n      event.value += cMask.substring(value.length);\n      
return;\n    }\n\n    if (value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n   
 }\n\n    if (!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      event.rc = false;\n    
}\n  }\n\n  AFSpecial_Keystroke(ps
 f) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    psf = 
this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n      case 0:\n        formatStr = 
"99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n    
    if (finalLen >= 8) {\n          formatStr = "(999) 999-9999";\n        } else {\n          formatStr = 
"999-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    
this.AFSpecial_KeystrokeEx(formatStr);\n  }\n\n  AFTime_FormatEx(cFormat) {\n    
this.AFDate_FormatEx(cFormat);\n  }\n\n  AFTime_Format(pdf) {\n    if (pdf >= 0 &&
  pdf < this._timeFormats.length) {\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  }\n\n  
AFTime_KeystrokeEx(cFormat) {\n    this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) {\n    
if (pdf >= 0 && pdf < this._timeFormats.length) {\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n   
 }\n  }\n\n  eMailValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = 
AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _
 pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._constants = null;\n    
this._focusRect = true;\n    this._fs = null;\n    this._language = App._getLanguage(data.language);\n    
this._openInPlace = false;\n    this._platform = App._getPlatform(data.platform);\n    this._runtimeHighlight 
= false;\n    this._runtimeHighlightColor = ["T"];\n    this._thermometer = null;\n    this._toolbar = 
false;\n    this._document = data._document;\n    this._proxyHandler = data.proxyHandler;\n    this._objects 
= Object.create(null);\n    this._eventDispatcher = new _event.EventDispatcher(this._document, 
data.calculationOrder, this._objects);\n    this._timeoutIds = new WeakMap();\n\n    if (typeof 
FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = new 
FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = null;\n  
  }\n\n    this._timeoutCallbackIds = new Map();\n    this._timeoutCallbackId = 0;\n    this
 ._globalEval = data.globalEval;\n    this._externalCall = data.externalCall;\n    this._document = 
data._document;\n  }\n\n  _dispatchEvent(pdfEvent) {\n    this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  
_registerTimeoutCallback(cExpr) {\n    const id = this._timeoutCallbackId++;\n\n    
this._timeoutCallbackIds.set(id, cExpr);\n\n    return id;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    
this._timeoutCallbackIds.delete(id);\n  }\n\n  _evalCallback({\n    callbackId,\n    interval\n  }) {\n    
const expr = this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n      this._timeoutIdsRegistry.register(timeout, id);\n    
 }\n\n    return timeout;\n  }\n\n  _unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeout({\n    callbackId,\n    interval\n  }) {\n    
this._unregisterTimeoutCallback(callbackId);\n\n    if (interval) {\n      
this._externalCall("clearInterval", [callbackId]);\n    } else {\n      this._externalCall("clearTimeout", 
[callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if (typeof platform === "string") {\n    
  platform = platform.toLowerCase();\n\n      if (platform.includes("win")) {\n        return "WIN";\n      } 
else if (platform.includes("mac")) {\n        return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  
static _getLanguage(language) {\n    const [main, sub] = language.toLowerCase().split(/[
 -_]/);\n\n    switch (main) {\n      case "zh":\n        if (sub === "cn" || sub === "sg") {\n          
return "CHS";\n        }\n\n        return "CHT";\n\n      case "da":\n        return "DAN";\n\n      case 
"de":\n        return "DEU";\n\n      case "es":\n        return "ESP";\n\n      case "fr":\n        return 
"FRA";\n\n      case "it":\n        return "ITA";\n\n      case "ko":\n        return "KOR";\n\n      case 
"ja":\n        return "JPN";\n\n      case "nl":\n        return "NLD";\n\n      case "no":\n        return 
"NOR";\n\n      case "pt":\n        if (sub === "br") {\n          return "PTB";\n        }\n\n        return 
"ENU";\n\n      case "fi":\n        return "SUO";\n\n      case "SV":\n        return "SVE";\n\n      
default:\n        return "ENU";\n    }\n  }\n\n  get activeDocs() {\n    return [this._document.wrapped];\n  
}\n\n  set activeDocs(_) {\n    throw new Error("app.activeDocs is read-only");\n  }\n\n  get calculate() {\n 
   return this._document.obj.cal
 culate;\n  }\n\n  set calculate(calculate) {\n    this._document.obj.calculate = calculate;\n  }\n\n  get 
constants() {\n    if (!this._constants) {\n      this._constants = Object.freeze({\n        align: 
Object.freeze({\n          left: 0,\n          center: 1,\n          right: 2,\n          top: 3,\n          
bottom: 4\n        })\n      });\n    }\n\n    return this._constants;\n  }\n\n  set constants(_) {\n    
throw new Error("app.constants is read-only");\n  }\n\n  get focusRect() {\n    return this._focusRect;\n  
}\n\n  set focusRect(val) {\n    this._focusRect = val;\n  }\n\n  get formsVersion() {\n    return 
FORMS_VERSION;\n  }\n\n  set formsVersion(_) {\n    throw new Error("app.formsVersion is read-only");\n  
}\n\n  get fromPDFConverters() {\n    return [];\n  }\n\n  set fromPDFConverters(_) {\n    throw new 
Error("app.fromPDFConverters is read-only");\n  }\n\n  get fs() {\n    if (this._fs === null) {\n      
this._fs = new Proxy(new _fullscreen.FullScreen({\n        sen
 d: this._send\n      }), this._proxyHandler);\n    }\n\n    return this._fs;\n  }\n\n  set fs(_) {\n    
throw new Error("app.fs is read-only");\n  }\n\n  get language() {\n    return this._language;\n  }\n\n  set 
language(_) {\n    throw new Error("app.language is read-only");\n  }\n\n  get media() {\n    return 
undefined;\n  }\n\n  set media(_) {\n    throw new Error("app.media is read-only");\n  }\n\n  get monitors() 
{\n    return [];\n  }\n\n  set monitors(_) {\n    throw new Error("app.monitors is read-only");\n  }\n\n  
get numPlugins() {\n    return 0;\n  }\n\n  set numPlugins(_) {\n    throw new Error("app.numPlugins is 
read-only");\n  }\n\n  get openInPlace() {\n    return this._openInPlace;\n  }\n\n  set openInPlace(val) {\n  
  this._openInPlace = val;\n  }\n\n  get platform() {\n    return this._platform;\n  }\n\n  set platform(_) 
{\n    throw new Error("app.platform is read-only");\n  }\n\n  get plugins() {\n    return [];\n  }\n\n  set 
plugins(_) {\n    throw new Error("a
 pp.plugins is read-only");\n  }\n\n  get printColorProfiles() {\n    return [];\n  }\n\n  set 
printColorProfiles(_) {\n    throw new Error("app.printColorProfiles is read-only");\n  }\n\n  get 
printerNames() {\n    return [];\n  }\n\n  set printerNames(_) {\n    throw new Error("app.printerNames is 
read-only");\n  }\n\n  get runtimeHighlight() {\n    return this._runtimeHighlight;\n  }\n\n  set 
runtimeHighlight(val) {\n    this._runtimeHighlight = val;\n  }\n\n  get runtimeHighlightColor() {\n    
return this._runtimeHighlightColor;\n  }\n\n  set runtimeHighlightColor(val) {\n    if 
(_color.Color._isValidColor(val)) {\n      this._runtimeHighlightColor = val;\n    }\n  }\n\n  get 
thermometer() {\n    if (this._thermometer === null) {\n      this._thermometer = new Proxy(new 
_thermometer.Thermometer({\n        send: this._send\n      }), this._proxyHandler);\n    }\n\n    return 
this._thermometer;\n  }\n\n  set thermometer(_) {\n    throw new Error("app.thermometer is read-only");\n  
 }\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  set toolbar(val) {\n    this._toolbar = val;\n  
}\n\n  get toolbarHorizontal() {\n    return this.toolbar;\n  }\n\n  set toolbarHorizontal(value) {\n    
this.toolbar = value;\n  }\n\n  get toolbarVertical() {\n    return this.toolbar;\n  }\n\n  set 
toolbarVertical(value) {\n    this.toolbar = value;\n  }\n\n  get viewerType() {\n    return VIEWER_TYPE;\n  
}\n\n  set viewerType(_) {\n    throw new Error("app.viewerType is read-only");\n  }\n\n  get 
viewerVariation() {\n    return VIEWER_VARIATION;\n  }\n\n  set viewerVariation(_) {\n    throw new 
Error("app.viewerVariation is read-only");\n  }\n\n  get viewerVersion() {\n    return VIEWER_VERSION;\n  
}\n\n  set viewerVersion(_) {\n    throw new Error("app.viewerVersion is read-only");\n  }\n\n  addMenuItem() 
{}\n\n  addSubMenu() {}\n\n  addToolButton() {}\n\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", 
oDoc = null, oCheckbox = null) {\n    if (typeof cMsg === "obje
 ct") {\n      nType = cMsg.nType;\n      cMsg = cMsg.cMsg;\n    }\n\n    cMsg = (cMsg || "").toString();\n   
 nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n    if (nType >= 
2) {\n      return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n    }\n\n    this._externalCall("alert", 
[cMsg]);\n\n    return 1;\n  }\n\n  beep() {}\n\n  beginPriv() {}\n\n  browseForDoc() {}\n\n  
clearInterval(oInterval) {\n    this._unregisterTimeout(oInterval);\n  }\n\n  clearTimeOut(oTime) {\n    
this._unregisterTimeout(oTime);\n  }\n\n  endPriv() {}\n\n  execDialog() {}\n\n  execMenuItem() {}\n\n  
getNthPlugInName() {}\n\n  getPath() {}\n\n  goBack() {}\n\n  goForward() {}\n\n  hideMenuItem() {}\n\n  
hideToolbarButton() {}\n\n  launchURL() {}\n\n  listMenuItems() {}\n\n  listToolbarButtons() {}\n\n  
loadPolicyFile() {}\n\n  mailGetAddrs() {}\n\n  mailMsg() {}\n\n  newDoc() {}\n\n  newCollection() {}\n\n  
newFDF() {}\n\n  openDoc() {}\n\n  openFDF() {}\n\n  p
 opUpMenu() {}\n\n  popUpMenuEx() {}\n\n  removeToolButton() {}\n\n  response(cQuestion, cTitle = "", 
cDefault = "", bPassword = "", cLabel = "") {\n    if (typeof cQuestion === "object") {\n      cDefault = 
cQuestion.cDefault;\n      cQuestion = cQuestion.cQuestion;\n    }\n\n    cQuestion = (cQuestion || 
"").toString();\n    cDefault = (cDefault || "").toString();\n    return this._externalCall("prompt", 
[cQuestion, cDefault || ""]);\n  }\n\n  setInterval(cExpr, nMilliseconds = 0) {\n    if (typeof cExpr === 
"object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n      cExpr = cExpr.cExpr;\n    }\n\n    if 
(typeof cExpr !== "string") {\n      throw new TypeError("First argument of app.setInterval must be a 
string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw new TypeError("Second argument 
of app.setInterval must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setInterval", [callbackId, n
 Milliseconds]);\n\n    return this._registerTimeout(callbackId, true);\n  }\n\n  setTimeOut(cExpr, 
nMilliseconds = 0) {\n    if (typeof cExpr === "object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n 
     cExpr = cExpr.cExpr;\n    }\n\n    if (typeof cExpr !== "string") {\n      throw new TypeError("First 
argument of app.setTimeOut must be a string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      
throw new TypeError("Second argument of app.setTimeOut must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setTimeout", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, false);\n  }\n\n  trustedFunction() {}\n\n  
trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass E
 vent {\n  constructor(data) {\n    this.change = data.change || "";\n    this.changeEx = data.changeEx || 
null;\n    this.commitKey = data.commitKey || 0;\n    this.fieldFull = data.fieldFull || false;\n    
this.keyDown = data.keyDown || false;\n    this.modifier = data.modifier || false;\n    this.name = 
data.name;\n    this.rc = true;\n    this.richChange = data.richChange || [];\n    this.richChangeEx = 
data.richChangeEx || [];\n    this.richValue = data.richValue || [];\n    this.selEnd = data.selEnd || -1;\n  
  this.selStart = data.selStart || -1;\n    this.shift = data.shift || false;\n    this.source = data.source 
|| null;\n    this.target = data.target || null;\n    this.targetName = "";\n    this.type = "Field";\n    
this.value = data.value || "";\n    this.willCommit = data.willCommit || false;\n  }\n\n}\n\nexports.Event = 
Event;\n\nclass EventDispatcher {\n  constructor(document, calculationOrder, objects) {\n    this._document = 
document;\n    this._calculationOrder = ca
 lculationOrder;\n    this._objects = objects;\n    this._document.obj._eventDispatcher = this;\n  }\n\n  
mergeChange(event) {\n    let value = event.value;\n\n    if (typeof value !== "string") {\n      value = 
value.toString();\n    }\n\n    const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : 
"";\n    const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : 
"";\n    return `${prefix}${event.change}${postfix}`;\n  }\n\n  dispatch(baseEvent) {\n    const id = 
baseEvent.id;\n\n    if (!(id in this._objects)) {\n      let event;\n\n      if (id === "doc" || id === 
"page") {\n        event = globalThis.event = new Event(baseEvent);\n        event.source = event.target = 
this._document.wrapped;\n        event.name = baseEvent.name;\n      }\n\n      if (id === "doc") {\n        
this._document.obj._dispatchDocEvent(event.name);\n      } else if (id === "page") {\n        
this._document.obj._dispatchPageEvent(event.name, base
 Event.actions, baseEvent.pageNumber);\n      }\n\n      return;\n    }\n\n    const name = baseEvent.name;\n 
   const source = this._objects[id];\n    const event = globalThis.event = new Event(baseEvent);\n    let 
savedChange;\n\n    if (source.obj._isButton()) {\n      source.obj._id = id;\n      event.value = 
source.obj._getExportValue(event.value);\n\n      if (name === "Action") {\n        source.obj._value = 
event.value;\n      }\n    }\n\n    switch (name) {\n      case "Keystroke":\n        savedChange = {\n       
   value: event.value,\n          change: event.change,\n          selStart: event.selStart,\n          
selEnd: event.selEnd\n        };\n        break;\n\n      case "Blur":\n      case "Focus":\n        
Object.defineProperty(event, "value", {\n          configurable: false,\n          writable: false,\n         
 enumerable: true,\n          value: event.value\n        });\n        break;\n\n      case "Validate":\n     
   this.runValidation(source, event);\n     
    return;\n\n      case "Action":\n        this.runActions(source, source, event, name);\n\n        if 
(this._document.obj.calculate) {\n          this.runCalculate(source, event);\n        }\n\n        return;\n 
   }\n\n    this.runActions(source, source, event, name);\n\n    if (name === "Keystroke") {\n      if 
(event.rc) {\n        if (event.willCommit) {\n          this.runValidation(source, event);\n        } else 
if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== 
savedChange.selEnd) {\n          source.wrapped.value = this.mergeChange(event);\n        }\n      } else if 
(!event.willCommit) {\n        source.obj._send({\n          id: source.obj._id,\n          value: 
savedChange.value,\n          selRange: [savedChange.selStart, savedChange.selEnd]\n        });\n      }\n    
}\n  }\n\n  runValidation(source, event) {\n    const hasRan = this.runActions(source, source, event, 
"Validate");\n\n    if (event.rc) {\n      if (ha
 sRan) {\n        source.wrapped.value = event.value;\n        source.wrapped.valueAsString = event.value;\n  
    } else {\n        source.obj.value = event.value;\n        source.obj.valueAsString = event.value;\n      
}\n\n      if (this._document.obj.calculate) {\n        this.runCalculate(source, event);\n      }\n\n      
event.value = source.obj.value;\n      this.runActions(source, source, event, "Format");\n      
source.wrapped.valueAsString = event.value;\n    }\n  }\n\n  runActions(source, target, event, eventName) {\n 
   event.source = source.wrapped;\n    event.target = target.wrapped;\n    event.name = eventName;\n    
event.targetName = target.obj.name;\n    event.rc = true;\n    return target.obj._runActions(event);\n  }\n\n 
 calculateNow() {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n    const first = 
this._calculationOrder[0];\n    const source = this._objects[first];\n    globalThis.event = new Event({});\n 
   this.runCalculate(source, globalThis.eve
 nt);\n  }\n\n  runCalculate(source, event) {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n   
 for (const targetId of this._calculationOrder) {\n      if (!(targetId in this._objects)) {\n        
continue;\n      }\n\n      if (!this._document.obj.calculate) {\n        continue;\n      }\n\n      
event.value = null;\n      const target = this._objects[targetId];\n      this.runActions(source, target, 
event, "Calculate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n      if (event.value !== null) 
{\n        target.wrapped.value = event.value;\n      }\n\n      event.value = target.obj.value;\n      
this.runActions(target, target, event, "Validate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n 
     event.value = target.obj.value;\n      this.runActions(target, target, event, "Format");\n\n      if 
(event.value !== null) {\n        target.wrapped.valueAsString = event.value;\n      }\n    }\n  
}\n\n}\n\nexports.EventDispatcher = EventDispatcher
 ;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.FullScreen = void 
0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
FullScreen extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    
this._backgroundColor = [];\n    this._clickAdvances = true;\n    this._cursor = _constants.Cursor.hidden;\n  
  this._defaultTransition = "";\n    this._escapeExits = true;\n    this._isFullScreen = true;\n    
this._loop = false;\n    this._timeDelay = 3600;\n    this._usePageTiming = false;\n    this._useTimer = 
false;\n  }\n\n  get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(_) 
{}\n\n  get clickAdvances() {\n    return this._clickAdvances;\n  }\n\n  set clickAdvances(_) {}\n\n  get 
cursor() {\n    return this._cursor;\n  }\n\n  set cursor(_) {}\n\n  get default
 Transition() {\n    return this._defaultTransition;\n  }\n\n  set defaultTransition(_) {}\n\n  get 
escapeExits() {\n    return this._escapeExits;\n  }\n\n  set escapeExits(_) {}\n\n  get isFullScreen() {\n    
return this._isFullScreen;\n  }\n\n  set isFullScreen(_) {}\n\n  get loop() {\n    return this._loop;\n  
}\n\n  set loop(_) {}\n\n  get timeDelay() {\n    return this._timeDelay;\n  }\n\n  set timeDelay(_) {}\n\n  
get transitions() {\n    return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", 
"SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", 
"BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", 
"Random"];\n  }\n\n  set transitions(_) {\n    throw new Error("fullscreen.transitions is read-only");\n  
}\n\n  get usePageTiming() {\n    return this._usePageTiming;\n  }\n\n  set usePageTiming(_) {}\n\n  get 
useTimer() {\n    return this._useTimer;\n  }\n\n  set useTimer(_) {}\
 n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, 
__w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer 
extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._cancelled = false;\n    
this._duration = 100;\n    this._text = "";\n    this._value = 0;\n  }\n\n  get cancelled() {\n    return 
this._cancelled;\n  }\n\n  set cancelled(_) {\n    throw new Error("thermometer.cancelled is read-only");\n  
}\n\n  get duration() {\n    return this._duration;\n  }\n\n  set duration(val) {\n    this._duration = 
val;\n  }\n\n  get text() {\n    return this._text;\n  }\n\n  set text(val) {\n    this._text = val;\n  }\n\n 
 get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  begin() 
{}\n\n  end() {}\n\n}\n\nexports.Thermometer 
 = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Console = void 
0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n  clear() 
{\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  println(msg) {\n    if (typeof msg 
=== "string") {\n      this._send({\n        command: "println",\n        value: "PDF.js Console:: " + msg\n  
    });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar 
_pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass InfoProxyHandler
  {\n  static get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) 
{\n    throw new Error(`doc.info.${prop} is read-only`);\n  }\n\n}\n\nclass Doc extends _pdf_object.PDFObject 
{\n  constructor(data) {\n    super(data);\n    this._expandos = globalThis;\n    this._baseURL = 
data.baseURL || "";\n    this._calculate = true;\n    this._delay = false;\n    this._dirty = false;\n    
this._disclosed = false;\n    this._media = undefined;\n    this._metadata = data.metadata || "";\n    
this._noautocomplete = undefined;\n    this._nocache = undefined;\n    this._spellDictionaryOrder = [];\n    
this._spellLanguageOrder = [];\n    this._printParams = null;\n    this._fields = new Map();\n    
this._fieldNames = [];\n    this._event = null;\n    this._author = data.Author || "";\n    this._creator = 
data.Creator || "";\n    this._creationDate = this._getDate(data.CreationDate) || null;\n    this._docID = 
data.docID || ["", ""];\n    this._documentFileName 
 = data.filename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = data.Keywords || 
"";\n    this._layout = data.layout || "";\n    this._modDate = this._getDate(data.ModDate) || null;\n    
this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    this._pageNum = data.pageNum || 0;\n    
this._producer = data.Producer || "";\n    this._subject = data.Subject || "";\n    this._title = data.Title 
|| "";\n    this._URL = data.URL || "";\n    this._info = new Proxy({\n      title: this._title,\n      
author: this._author,\n      authors: data.authors || [this._author],\n      subject: this._subject,\n      
keywords: this._keywords,\n      creator: this._creator,\n      producer: this._producer,\n      
creationdate: this._creationDate,\n      moddate: this._modDate,\n      trapped: data.Trapped || "Unknown"\n  
  }, InfoProxyHandler);\n    this._zoomType = _constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n 
   this._actions = (0, _common.createActi
 onsMap)(data.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = new Map();\n  }\n\n 
 _dispatchDocEvent(name) {\n    if (name === "Open") {\n      const dontRun = new Set(["WillClose", 
"WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n      for (const actionName of 
this._actions.keys()) {\n        if (!dontRun.has(actionName)) {\n          this._runActions(actionName);\n   
     }\n      }\n\n      this._runActions("OpenAction");\n    } else {\n      this._runActions(name);\n    
}\n  }\n\n  _dispatchPageEvent(name, actions, pageNumber) {\n    if (name === "PageOpen") {\n      if 
(!this._pageActions.has(pageNumber)) {\n        this._pageActions.set(pageNumber, (0, 
_common.createActionsMap)(actions));\n      }\n\n      this._pageNum = pageNumber - 1;\n    }\n\n    actions 
= this._pageActions.get(pageNumber)?.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _runAc
 tions(name) {\n    const actions = this._actions.get(name);\n\n    if (actions) {\n      for (const action 
of actions) {\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _addField(name, field) {\n    
this._fields.set(name, field);\n\n    this._fieldNames.push(name);\n\n    this._numFields++;\n  }\n\n  
_getDate(date) {\n    if (!date || date.length < 15 || !date.startsWith("D:")) {\n      return date;\n    
}\n\n    date = date.substring(2);\n    const year = date.substring(0, 4);\n    const month = 
date.substring(4, 6);\n    const day = date.substring(6, 8);\n    const hour = date.substring(8, 10);\n    
const minute = date.substring(10, 12);\n    const o = date.charAt(12);\n    let second, offsetPos;\n\n    if 
(o === "Z" || o === "+" || o === "-") {\n      second = "00";\n      offsetPos = 12;\n    } else {\n      
second = date.substring(12, 14);\n      offsetPos = 14;\n    }\n\n    const offset = 
date.substring(offsetPos).replaceAll("\'", "");\n    return new Date(`${yea
 r}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n  }\n\n  get author() {\n    return 
this._author;\n  }\n\n  set author(_) {\n    throw new Error("doc.author is read-only");\n  }\n\n  get 
baseURL() {\n    return this._baseURL;\n  }\n\n  set baseURL(baseURL) {\n    this._baseURL = baseURL;\n  
}\n\n  get bookmarkRoot() {\n    return undefined;\n  }\n\n  set bookmarkRoot(_) {\n    throw new 
Error("doc.bookmarkRoot is read-only");\n  }\n\n  get calculate() {\n    return this._calculate;\n  }\n\n  
set calculate(calculate) {\n    this._calculate = calculate;\n  }\n\n  get creator() {\n    return 
this._creator;\n  }\n\n  set creator(_) {\n    throw new Error("doc.creator is read-only");\n  }\n\n  get 
dataObjects() {\n    return [];\n  }\n\n  set dataObjects(_) {\n    throw new Error("doc.dataObjects is 
read-only");\n  }\n\n  get delay() {\n    return this._delay;\n  }\n\n  set delay(delay) {\n    this._delay = 
delay;\n  }\n\n  get dirty() {\n    return this._dirty;\n  }\n\n  set
  dirty(dirty) {\n    this._dirty = dirty;\n  }\n\n  get disclosed() {\n    return this._disclosed;\n  }\n\n  
set disclosed(disclosed) {\n    this._disclosed = disclosed;\n  }\n\n  get docID() {\n    return 
this._docID;\n  }\n\n  set docID(_) {\n    throw new Error("doc.docID is read-only");\n  }\n\n  get 
documentFileName() {\n    return this._documentFileName;\n  }\n\n  set documentFileName(_) {\n    throw new 
Error("doc.documentFileName is read-only");\n  }\n\n  get dynamicXFAForm() {\n    return false;\n  }\n\n  set 
dynamicXFAForm(_) {\n    throw new Error("doc.dynamicXFAForm is read-only");\n  }\n\n  get external() {\n    
return true;\n  }\n\n  set external(_) {\n    throw new Error("doc.external is read-only");\n  }\n\n  get 
filesize() {\n    return this._filesize;\n  }\n\n  set filesize(_) {\n    throw new Error("doc.filesize is 
read-only");\n  }\n\n  get hidden() {\n    return false;\n  }\n\n  set hidden(_) {\n    throw new 
Error("doc.hidden is read-only");\n  }\n\n  get hostC
 ontainer() {\n    return undefined;\n  }\n\n  set hostContainer(_) {\n    throw new Error("doc.hostContainer 
is read-only");\n  }\n\n  get icons() {\n    return undefined;\n  }\n\n  set icons(_) {\n    throw new 
Error("doc.icons is read-only");\n  }\n\n  get info() {\n    return this._info;\n  }\n\n  set info(_) {\n    
throw new Error("doc.info is read-only");\n  }\n\n  get innerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set innerAppWindowRect(_) {\n    throw new Error("doc.innerAppWindowRect is read-only");\n  }\n\n  get 
innerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set innerDocWindowRect(_) {\n    throw new 
Error("doc.innerDocWindowRect is read-only");\n  }\n\n  get isModal() {\n    return false;\n  }\n\n  set 
isModal(_) {\n    throw new Error("doc.isModal is read-only");\n  }\n\n  get keywords() {\n    return 
this._keywords;\n  }\n\n  set keywords(_) {\n    throw new Error("doc.keywords is read-only");\n  }\n\n  get 
layout() {\n    return this._layout;\n  
 }\n\n  set layout(value) {\n    if (typeof value !== "string") {\n      return;\n    }\n\n    if (value !== 
"SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== 
"TwoColumnRight" && value !== "TwoPageRight") {\n      value = "SinglePage";\n    }\n\n    this._send({\n     
 command: "layout",\n      value\n    });\n\n    this._layout = value;\n  }\n\n  get media() {\n    return 
this._media;\n  }\n\n  set media(media) {\n    this._media = media;\n  }\n\n  get metadata() {\n    return 
this._metadata;\n  }\n\n  set metadata(metadata) {\n    this._metadata = metadata;\n  }\n\n  get modDate() 
{\n    return this._modDate;\n  }\n\n  set modDate(_) {\n    throw new Error("doc.modDate is read-only");\n  
}\n\n  get mouseX() {\n    return 0;\n  }\n\n  set mouseX(_) {\n    throw new Error("doc.mouseX is 
read-only");\n  }\n\n  get mouseY() {\n    return 0;\n  }\n\n  set mouseY(_) {\n    throw new 
Error("doc.mouseY is read-only");\n  }\n\n  get n
 oautocomplete() {\n    return this._noautocomplete;\n  }\n\n  set noautocomplete(noautocomplete) {\n    
this._noautocomplete = noautocomplete;\n  }\n\n  get nocache() {\n    return this._nocache;\n  }\n\n  set 
nocache(nocache) {\n    this._nocache = nocache;\n  }\n\n  get numFields() {\n    return this._numFields;\n  
}\n\n  set numFields(_) {\n    throw new Error("doc.numFields is read-only");\n  }\n\n  get numPages() {\n    
return this._numPages;\n  }\n\n  set numPages(_) {\n    throw new Error("doc.numPages is read-only");\n  
}\n\n  get numTemplates() {\n    return 0;\n  }\n\n  set numTemplates(_) {\n    throw new 
Error("doc.numTemplates is read-only");\n  }\n\n  get outerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set outerAppWindowRect(_) {\n    throw new Error("doc.outerAppWindowRect is read-only");\n  }\n\n  get 
outerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set outerDocWindowRect(_) {\n    throw new 
Error("doc.outerDocWindowRect is read-only");\n  }\n\n 
  get pageNum() {\n    return this._pageNum;\n  }\n\n  set pageNum(value) {\n    if (typeof value !== 
"number" || value < 0 || value >= this._numPages) {\n      return;\n    }\n\n    this._send({\n      command: 
"page-num",\n      value\n    });\n\n    this._pageNum = value;\n  }\n\n  get pageWindowRect() {\n    return 
[0, 0, 0, 0];\n  }\n\n  set pageWindowRect(_) {\n    throw new Error("doc.pageWindowRect is read-only");\n  
}\n\n  get path() {\n    return "";\n  }\n\n  set path(_) {\n    throw new Error("doc.path is read-only");\n  
}\n\n  get permStatusReady() {\n    return true;\n  }\n\n  set permStatusReady(_) {\n    throw new 
Error("doc.permStatusReady is read-only");\n  }\n\n  get producer() {\n    return this._producer;\n  }\n\n  
set producer(_) {\n    throw new Error("doc.producer is read-only");\n  }\n\n  get requiresFullSave() {\n    
return false;\n  }\n\n  set requiresFullSave(_) {\n    throw new Error("doc.requiresFullSave is 
read-only");\n  }\n\n  get securityHandler() {\
 n    return null;\n  }\n\n  set securityHandler(_) {\n    throw new Error("doc.securityHandler is 
read-only");\n  }\n\n  get selectedAnnots() {\n    return [];\n  }\n\n  set selectedAnnots(_) {\n    throw 
new Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    return [];\n  }\n\n  set 
sounds(_) {\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get spellDictionaryOrder() {\n    
return this._spellDictionaryOrder;\n  }\n\n  set spellDictionaryOrder(spellDictionaryOrder) {\n    
this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n  get spellLanguageOrder() {\n    return 
this._spellLanguageOrder;\n  }\n\n  set spellLanguageOrder(spellLanguageOrder) {\n    
this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get subject() {\n    return this._subject;\n  }\n\n  
set subject(_) {\n    throw new Error("doc.subject is read-only");\n  }\n\n  get templates() {\n    return 
[];\n  }\n\n  set templates(_) {\n    throw new Error("doc.templates is read-only");
 \n  }\n\n  get title() {\n    return this._title;\n  }\n\n  set title(_) {\n    throw new Error("doc.title 
is read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\n\n  set URL(_) {\n    throw new 
Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return undefined;\n  }\n\n  set viewState(_) 
{\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get xfa() {\n    return this._xfa;\n  }\n\n  
set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  get XFAForeground() {\n    return 
false;\n  }\n\n  set XFAForeground(_) {\n    throw new Error("doc.XFAForeground is read-only");\n  }\n\n  get 
zoomType() {\n    return this._zoomType;\n  }\n\n  set zoomType(type) {\n    if (typeof type !== "string") 
{\n      return;\n    }\n\n    switch (type) {\n      case _constants.ZoomType.none:\n        this._send({\n  
        command: "zoom",\n          value: 1\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitP:\n        this._send({\n    
       command: "zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitW:\n        this._send({\n          command: "zoom",\n          value: "page-width"\n  
      });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n        this._send({\n          command: 
"zoom",\n          value: "page-height"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: "auto"\n        
});\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case _constants.ZoomType.refW:\n        
break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = type;\n  }\n\n  get zoom() {\n    
return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== "number" || value < 8.33 || value > 
6400) {\n      return;\n    }\n\n    this._send({\n      command: "zoom",\n      value: value / 100\n    
});\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  add
 Icon() {}\n\n  addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() 
{}\n\n  addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  addWatermarkFromText() {}\n\n  addWeblinks() 
{}\n\n  bringToFront() {}\n\n  calculateNow() {\n    this._eventDispatcher.calculateNow();\n  }\n\n  
closeDoc() {}\n\n  colorConvertPage() {}\n\n  createDataObject() {}\n\n  createTemplate() {}\n\n  
deletePages() {}\n\n  deleteSound() {}\n\n  embedDocAsDataObject() {}\n\n  embedOutputIntent() {}\n\n  
encryptForRecipients() {}\n\n  encryptUsingPolicy() {}\n\n  exportAsFDF() {}\n\n  exportAsFDFStr() {}\n\n  
exportAsText() {}\n\n  exportAsXFDF() {}\n\n  exportAsXFDFStr() {}\n\n  exportDataObject() {}\n\n  
exportXFAData() {}\n\n  extractPages() {}\n\n  flattenPages() {}\n\n  getAnnot() {}\n\n  getAnnots() {}\n\n  
getAnnot3D() {}\n\n  getAnnots3D() {}\n\n  getColorConvertAction() {}\n\n  getDataObject() {}\n\n  
getDataObjectContents() {}\n\n  getField(cName) {\n    if (typeof
  cName === "object") {\n      cName = cName.cName;\n    }\n\n    if (typeof cName !== "string") {\n      
throw new TypeError("Invalid field name: must be a string");\n    }\n\n    const searchedField = 
this._fields.get(cName);\n\n    if (searchedField) {\n      return searchedField;\n    }\n\n    const parts = 
cName.split("#");\n    let childIndex = NaN;\n\n    if (parts.length === 2) {\n      childIndex = 
Math.floor(parseFloat(parts[1]));\n      cName = parts[0];\n    }\n\n    for (const [name, field] of 
this._fields.entries()) {\n      if (name.endsWith(cName)) {\n        if (!isNaN(childIndex)) {\n          
const children = this._getChildren(name);\n\n          if (childIndex < 0 || childIndex >= children.length) 
{\n            childIndex = 0;\n          }\n\n          if (childIndex < children.length) {\n            
this._fields.set(cName, children[childIndex]);\n\n            return children[childIndex];\n          }\n     
   }\n\n        this._fields.set(cName, field);\n\n    
     return field;\n      }\n    }\n\n    return null;\n  }\n\n  _getChildren(fieldName) {\n    const len = 
fieldName.length;\n    const children = [];\n    const pattern = /^\\.[^.]+$/;\n\n    for (const [name, 
field] of this._fields.entries()) {\n      if (name.startsWith(fieldName)) {\n        const finalPart = 
name.slice(len);\n\n        if (finalPart.match(pattern)) {\n          children.push(field);\n        }\n     
 }\n    }\n\n    return children;\n  }\n\n  getIcon() {}\n\n  getLegalWarnings() {}\n\n  getLinks() {}\n\n  
getNthFieldName(nIndex) {\n    if (typeof nIndex === "object") {\n      nIndex = nIndex.nIndex;\n    }\n\n    
if (typeof nIndex !== "number") {\n      throw new TypeError("Invalid field index: must be a number");\n    
}\n\n    if (0 <= nIndex && nIndex < this.numFields) {\n      return this._fieldNames[Math.trunc(nIndex)];\n  
  }\n\n    return null;\n  }\n\n  getNthTemplate() {\n    return null;\n  }\n\n  getOCGs() {}\n\n  
getOCGOrder() {}\n\n  getPageBox() {}
 \n\n  getPageLabel() {}\n\n  getPageNthWord() {}\n\n  getPageNthWordQuads() {}\n\n  getPageNumWords() {}\n\n 
 getPageRotation() {}\n\n  getPageTransition() {}\n\n  getPrintParams() {\n    if (!this._printParams) {\n    
  this._printParams = new _print_params.PrintParams({\n        lastPage: this._numPages - 1\n      });\n    
}\n\n    return this._printParams;\n  }\n\n  getSound() {}\n\n  getTemplate() {}\n\n  getURL() {}\n\n  
gotoNamedDest() {}\n\n  importAnFDF() {}\n\n  importAnXFDF() {}\n\n  importDataObject() {}\n\n  importIcon() 
{}\n\n  importSound() {}\n\n  importTextData() {}\n\n  importXFAData() {}\n\n  insertPages() {}\n\n  
mailDoc() {}\n\n  mailForm() {}\n\n  movePage() {}\n\n  newPage() {}\n\n  openDataObject() {}\n\n  print(bUI 
= true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = 
false, bAnnotations = true, printParams = null) {\n    if (typeof bUI === "object") {\n      nStart = 
bUI.nStart;\n      nEnd = bUI.nEnd;\n     
  bSilent = bUI.bSilent;\n      bShrinkToFit = bUI.bShrinkToFit;\n      bPrintAsImage = bUI.bPrintAsImage;\n  
    bReverse = bUI.bReverse;\n      bAnnotations = bUI.bAnnotations;\n      printParams = bUI.printParams;\n  
    bUI = bUI.bUI;\n    }\n\n    if (printParams) {\n      nStart = printParams.firstPage;\n      nEnd = 
printParams.lastPage;\n    }\n\n    if (typeof nStart === "number") {\n      nStart = Math.max(0, 
Math.trunc(nStart));\n    } else {\n      nStart = 0;\n    }\n\n    if (typeof nEnd === "number") {\n      
nEnd = Math.max(0, Math.trunc(nEnd));\n    } else {\n      nEnd = -1;\n    }\n\n    this._send({\n      
command: "print",\n      start: nStart,\n      end: nEnd\n    });\n  }\n\n  removeDataObject() {}\n\n  
removeField() {}\n\n  removeIcon() {}\n\n  removeLinks() {}\n\n  removeRequirement() {}\n\n  removeScript() 
{}\n\n  removeTemplate() {}\n\n  removeThumbnails() {}\n\n  removeWeblinks() {}\n\n  replacePages() {}\n\n  
resetForm(aFields = null) {\n    if (aFields 
 && !Array.isArray(aFields) && typeof aFields === "object") {\n      aFields = aFields.aFields;\n    }\n\n    
let mustCalculate = false;\n\n    if (aFields) {\n      for (const fieldName of aFields) {\n        if 
(!fieldName) {\n          continue;\n        }\n\n        const field = this.getField(fieldName);\n\n        
if (!field) {\n          continue;\n        }\n\n        field.value = field.defaultValue;\n        
field.valueAsString = field.value;\n        mustCalculate = true;\n      }\n    } else {\n      mustCalculate 
= this._fields.size !== 0;\n\n      for (const field of this._fields.values()) {\n        field.value = 
field.defaultValue;\n        field.valueAsString = field.value;\n      }\n    }\n\n    if (mustCalculate) {\n 
     this.calculateNow();\n    }\n  }\n\n  saveAs() {}\n\n  scroll() {}\n\n  selectPageNthWord() {}\n\n  
setAction() {}\n\n  setDataObjectContents() {}\n\n  setOCGOrder() {}\n\n  setPageAction() {}\n\n  
setPageBoxes() {}\n\n  setPageLabels() {}\n\n  se
 tPageRotations() {}\n\n  setPageTabOrder() {}\n\n  setPageTransitions() {}\n\n  spawnPageFromTemplate() 
{}\n\n  submitForm() {}\n\n  syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n  constructor(data) {\n    this.binaryOk = 
true;\n    this.bitmapDPI = 150;\n    this.booklet = {\n      binding: 0,\n      duplexMode: 0,\n      
subsetFrom: 0,\n      subsetTo: -1\n    };\n    this.colorOverride = 0;\n    this.colorProfile = "";\n    
this.constants = Object.freeze({\n      bookletBindings: Object.freeze({\n        Left: 0,\n        Right: 
1,\n        LeftTall: 2,\n        RightTall: 3\n      }),\n      bookletDuplexMode: Object.freeze({\n        
BothSides: 0,\n        FrontSideOnly: 1,\n        BasicSideOnly: 2\n      }),\n      colorOverrides: 
Object.freeze({\n        auto: 0,\n        gray
 : 1,\n        mono: 2\n      }),\n      fontPolicies: Object.freeze({\n        everyPage: 0,\n        
jobStart: 1,\n        pageRange: 2\n      }),\n      handling: Object.freeze({\n        none: 0,\n        
fit: 1,\n        shrink: 2,\n        tileAll: 3,\n        tileLarge: 4,\n        nUp: 5,\n        booklet: 
6\n      }),\n      interactionLevel: Object.freeze({\n        automatic: 0,\n        full: 1,\n        
silent: 2\n      }),\n      nUpPageOrders: Object.freeze({\n        Horizontal: 0,\n        
HorizontalReversed: 1,\n        Vertical: 2\n      }),\n      printContents: Object.freeze({\n        doc: 
0,\n        docAndComments: 1,\n        formFieldsOnly: 2\n      }),\n      flagValues: Object.freeze({\n     
   applyOverPrint: 1,\n        applySoftProofSettings: 1 << 1,\n        applyWorkingColorSpaces: 1 << 2,\n    
    emitHalftones: 1 << 3,\n        emitPostScriptXObjects: 1 << 4,\n        emitFormsAsPSForms: 1 << 5,\n    
    maxJP2KRes: 1 << 6,\n        setPageSize: 1 <
 < 7,\n        suppressBG: 1 << 8,\n        suppressCenter: 1 << 9,\n        suppressCJKFontSubst: 1 << 10,\n 
       suppressCropClip: 1 << 1,\n        suppressRotate: 1 << 12,\n        suppressTransfer: 1 << 13,\n      
  suppressUCR: 1 << 14,\n        useTrapAnnots: 1 << 15,\n        usePrintersMarks: 1 << 16\n      }),\n      
rasterFlagValues: Object.freeze({\n        textToOutline: 1,\n        strokesToOutline: 1 << 1,\n        
allowComplexClip: 1 << 2,\n        preserveOverprint: 1 << 3\n      }),\n      subsets: Object.freeze({\n     
   all: 0,\n        even: 1,\n        odd: 2\n      }),\n      tileMarks: Object.freeze({\n        none: 0,\n 
       west: 1,\n        east: 2\n      }),\n      usages: Object.freeze({\n        auto: 0,\n        use: 
1,\n        noUse: 2\n      })\n    });\n    this.downloadFarEastFonts = false;\n    this.fileName = "";\n    
this.firstPage = 0;\n    this.flags = 0;\n    this.fontPolicy = 0;\n    this.gradientDPI = 150;\n    
this.interactive = 1;\n  
   this.lastPage = data.lastPage;\n    this.npUpAutoRotate = false;\n    this.npUpNumPagesH = 2;\n    
this.npUpNumPagesV = 2;\n    this.npUpPageBorder = false;\n    this.npUpPageOrder = 0;\n    this.pageHandling 
= 0;\n    this.pageSubset = 0;\n    this.printAsImage = false;\n    this.printContent = 0;\n    
this.printerName = "";\n    this.psLevel = 0;\n    this.rasterFlags = 0;\n    this.reversePages = false;\n    
this.tileLabel = false;\n    this.tileMark = 0;\n    this.tileOverlap = 0;\n    this.tileScale = 1.0;\n    
this.transparencyLevel = 75;\n    this.usePrinterCRD = 0;\n    this.useT1Conversion = 0;\n  
}\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n  constructor() {\n    this.nosend = new 
Set(["delay"]);\n  }\n\n  get(obj, prop) {\n    if (prop in obj._expandos) {\n      const v
 al = obj._expandos[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n      
}\n\n      return val;\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) 
{\n      const val = obj[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n    
  }\n\n      return val;\n    }\n\n    return undefined;\n  }\n\n  set(obj, prop, value) {\n    if 
(obj._kidIds) {\n      obj._kidIds.forEach(id => {\n        obj._appObjects[id].wrapped[prop] = value;\n      
});\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      const old = 
obj[prop];\n      obj[prop] = value;\n\n      if (!this.nosend.has(prop) && obj._send && obj._id !== null && 
typeof old !== "function") {\n        const data = {\n          id: obj._id\n        };\n        data[prop] = 
obj[prop];\n\n        if (!obj._siblings) {\n          obj._send(data);\n        } else {\n          
data.siblings = obj._siblings;\n\n  
         obj._send(data);\n        }\n      }\n    } else {\n      obj._expandos[prop] = value;\n    }\n\n    
return true;\n  }\n\n  has(obj, prop) {\n    return prop in obj._expandos || typeof prop === "string" && 
!prop.startsWith("_") && prop in obj;\n  }\n\n  getPrototypeOf(obj) {\n    return null;\n  }\n\n  
setPrototypeOf(obj, proto) {\n    return false;\n  }\n\n  isExtensible(obj) {\n    return true;\n  }\n\n  
preventExtensions(obj) {\n    return false;\n  }\n\n  getOwnPropertyDescriptor(obj, prop) {\n    if (prop in 
obj._expandos) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: 
obj._expandos[prop]\n      };\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in 
obj) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: obj[prop]\n    
  };\n    }\n\n    return undefined;\n  }\n\n  defineProperty(obj, key, descriptor) {\n    
Object.defineProperty(obj._expandos, key, descriptor);\
 n    return true;\n  }\n\n  deleteProperty(obj, prop) {\n    if (prop in obj._expandos) {\n      delete 
obj._expandos[prop];\n    }\n  }\n\n  ownKeys(obj) {\n    const fromExpandos = 
Reflect.ownKeys(obj._expandos);\n    const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n  
  return fromExpandos.concat(fromObj);\n  }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 
*/\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this._scandCache = new Map();\n    this._months = ["January", "February", "March", "April", 
"May", "June", "July", "August", "September", "October", "November", "December"];\n    this._days = 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n    this.MILL
 ISECONDS_IN_DAY = 86400000;\n    this.MILLISECONDS_IN_WEEK = 604800000;\n    this._externalCall = 
data.externalCall;\n  }\n\n  printf(...args) {\n    if (args.length === 0) {\n      throw new Error("Invalid 
number of params in printf");\n    }\n\n    if (typeof args[0] !== "string") {\n      throw new 
TypeError("First argument of printf must be a string");\n    }\n\n    const pattern = /%(,[0-4])?([+ 
0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n    const PLUS = 1;\n    const SPACE = 2;\n    const ZERO = 4;\n    const 
HASH = 8;\n    let i = 0;\n    return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, 
nPrecision, cConvChar) {\n      if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar 
!== "x") {\n        const buf = ["%"];\n\n        for (const str of [nDecSep, cFlags, nWidth, nPrecision, 
cConvChar]) {\n          if (str) {\n            buf.push(str);\n          }\n        }\n\n        return 
buf.join("");\n      }\n\n      i++;\n\n      if (i === ar
 gs.length) {\n        throw new Error("Not enough arguments in printf");\n      }\n\n      const arg = 
args[i];\n\n      if (cConvChar === "s") {\n        return arg.toString();\n      }\n\n      let flags = 
0;\n\n      if (cFlags) {\n        for (const flag of cFlags) {\n          switch (flag) {\n            case 
"+":\n              flags |= PLUS;\n              break;\n\n            case " ":\n              flags |= 
SPACE;\n              break;\n\n            case "0":\n              flags |= ZERO;\n              break;\n\n 
           case "#":\n              flags |= HASH;\n              break;\n          }\n        }\n      }\n\n 
     cFlags = flags;\n\n      if (nWidth) {\n        nWidth = parseInt(nWidth);\n      }\n\n      let intPart 
= Math.trunc(arg);\n\n      if (cConvChar === "x") {\n        let hex = 
Math.abs(intPart).toString(16).toUpperCase();\n\n        if (nWidth !== undefined) {\n          hex = 
hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n        }\n\n       
  if (cFlags & HASH) {\n          hex = `0x${hex}`;\n        }\n\n        return hex;\n      }\n\n      if 
(nPrecision) {\n        nPrecision = parseInt(nPrecision.substring(1));\n      }\n\n      nDecSep = nDecSep ? 
nDecSep.substring(1) : "0";\n      const separators = {\n        0: [",", "."],\n        1: ["", "."],\n      
  2: [".", ","],\n        3: ["", ","],\n        4: ["\'", "."]\n      };\n      const [thousandSep, 
decimalSep] = separators[nDecSep];\n      let decPart = "";\n\n      if (cConvChar === "f") {\n        if 
(nPrecision !== undefined) {\n          decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n        } 
else {\n          decPart = Math.abs(arg - intPart).toString();\n        }\n\n        if (decPart.length > 2) 
{\n          decPart = `${decimalSep}${decPart.substring(2)}`;\n        } else if (cFlags & HASH) {\n         
 decPart = ".";\n        } else {\n          decPart = "";\n        }\n      }\n\n      let sign = "";\n\n    
  if (intPart < 0) {\n      
   sign = "-";\n        intPart = -intPart;\n      } else if (cFlags & PLUS) {\n        sign = "+";\n      } 
else if (cFlags & SPACE) {\n        sign = " ";\n      }\n\n      if (thousandSep && intPart >= 1000) {\n     
   const buf = [];\n\n        while (true) {\n          buf.push((intPart % 1000).toString().padStart(3, 
"0"));\n          intPart = Math.trunc(intPart / 1000);\n\n          if (intPart < 1000) {\n            
buf.push(intPart.toString());\n            break;\n          }\n        }\n\n        intPart = 
buf.reverse().join(thousandSep);\n      } else {\n        intPart = intPart.toString();\n      }\n\n      let 
n = `${intPart}${decPart}`;\n\n      if (nWidth !== undefined) {\n        n = n.padStart(nWidth - 
sign.length, cFlags & ZERO ? "0" : " ");\n      }\n\n      return `${sign}${n}`;\n    });\n  }\n\n  
iconStreamFromIcon() {}\n\n  printd(cFormat, oDate) {\n    switch (cFormat) {\n      case 0:\n        return 
this.printd("D:yyyymmddHHMMss", oDate);\n\n      case 1:\n
         return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n      case 2:\n        return 
this.printd("m/d/yy h:MM:ss tt", oDate);\n    }\n\n    const handlers = {\n      mmmm: data => {\n        
return this._months[data.month];\n      },\n      mmm: data => {\n        return 
this._months[data.month].substring(0, 3);\n      },\n      mm: data => {\n        return (data.month + 
1).toString().padStart(2, "0");\n      },\n      m: data => {\n        return (data.month + 1).toString();\n  
    },\n      dddd: data => {\n        return this._days[data.dayOfWeek];\n      },\n      ddd: data => {\n   
     return this._days[data.dayOfWeek].substring(0, 3);\n      },\n      dd: data => {\n        return 
data.day.toString().padStart(2, "0");\n      },\n      d: data => {\n        return data.day.toString();\n    
  },\n      yyyy: data => {\n        return data.year.toString();\n      },\n      yy: data => {\n        
return (data.year % 100).toString().padStart(2, "0");\n      },\n      HH: da
 ta => {\n        return data.hours.toString().padStart(2, "0");\n      },\n      H: data => {\n        
return data.hours.toString();\n      },\n      hh: data => {\n        return (1 + (data.hours + 11) % 
12).toString().padStart(2, "0");\n      },\n      h: data => {\n        return (1 + (data.hours + 11) % 
12).toString();\n      },\n      MM: data => {\n        return data.minutes.toString().padStart(2, "0");\n    
  },\n      M: data => {\n        return data.minutes.toString();\n      },\n      ss: data => {\n        
return data.seconds.toString().padStart(2, "0");\n      },\n      s: data => {\n        return 
data.seconds.toString();\n      },\n      tt: data => {\n        return data.hours < 12 ? "am" : "pm";\n      
},\n      t: data => {\n        return data.hours < 12 ? "a" : "p";\n      }\n    };\n    const data = {\n    
  year: oDate.getFullYear(),\n      month: oDate.getMonth(),\n      day: oDate.getDate(),\n      dayOfWeek: 
oDate.getDay(),\n      hours: oDate.getHours(),\n
       minutes: oDate.getMinutes(),\n      seconds: oDate.getSeconds()\n    };\n    const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n    return 
cFormat.replace(patterns, function (match, pattern) {\n      if (pattern in handlers) {\n        return 
handlers[pattern](data);\n      }\n\n      return pattern.charCodeAt(1);\n    });\n  }\n\n  printx(cFormat, 
cSource) {\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n    const buf = [];\n 
   let i = 0;\n    const ii = cSource.length;\n    let currCase = handlers[0];\n    let escaped = false;\n\n  
  for (const command of cFormat) {\n      if (escaped) {\n        buf.push(command);\n        escaped = 
false;\n        continue;\n      }\n\n      if (i >= ii) {\n        break;\n      }\n\n      switch (command) 
{\n        case "?":\n          buf.push(currCase(cSource.charAt(i++)));\n          break;\n\n        case 
"X":\n          while (i < ii) {\n            const char = 
 cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= 
char && char <= "9") {\n              buf.push(currCase(char));\n              break;\n            }\n        
  }\n\n          break;\n\n        case "A":\n          while (i < ii) {\n            const char = 
cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n         
     buf.push(currCase(char));\n              break;\n            }\n          }\n\n          break;\n\n      
  case "9":\n          while (i < ii) {\n            const char = cSource.charAt(i++);\n\n            if ("0" 
<= char && char <= "9") {\n              buf.push(char);\n              break;\n            }\n          
}\n\n          break;\n\n        case "*":\n          while (i < ii) {\n            
buf.push(currCase(cSource.charAt(i++)));\n          }\n\n          break;\n\n        case "\\\\":\n          
escaped = true;\n          break;\n\n        case ">"
 :\n          currCase = handlers[1];\n          break;\n\n        case "<":\n          currCase = 
handlers[2];\n          break;\n\n        case "=":\n          currCase = handlers[0];\n          break;\n\n  
      default:\n          buf.push(command);\n      }\n    }\n\n    return buf.join("");\n  }\n\n  
scand(cFormat, cDate) {\n    if (cDate === "") {\n      return new Date();\n    }\n\n    switch (cFormat) {\n 
     case 0:\n        return this.scand("D:yyyymmddHHMMss", cDate);\n\n      case 1:\n        return 
this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n      case 2:\n        return this.scand("m/d/yy h:MM:ss tt", 
cDate);\n    }\n\n    if (!this._scandCache.has(cFormat)) {\n      const months = this._months;\n      const 
days = this._days;\n      const handlers = {\n        mmmm: {\n          pattern: `(${months.join("|")})`,\n  
        action: (value, data) => {\n            data.month = months.indexOf(value);\n          }\n        
},\n        mmm: {\n          pattern: `(${mont
 hs.map(month => month.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            
data.month = months.findIndex(month => month.substring(0, 3) === value);\n          }\n        },\n        
mm: {\n          pattern: `([0-9]{2})`,\n          action: (value, data) => {\n            data.month = 
parseInt(value) - 1;\n          }\n        },\n        m: {\n          pattern: `([0-9]{1,2})`,\n          
action: (value, data) => {\n            data.month = parseInt(value) - 1;\n          }\n        },\n        
dddd: {\n          pattern: `(${days.join("|")})`,\n          action: (value, data) => {\n            
data.day = days.indexOf(value);\n          }\n        },\n        ddd: {\n          pattern: `(${days.map(day 
=> day.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            data.day = 
days.findIndex(day => day.substring(0, 3) === value);\n          }\n        },\n        dd: {\n          
pattern: "([0-9]{2})",\n          action: (value, 
 data) => {\n            data.day = parseInt(value);\n          }\n        },\n        d: {\n          
pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.day = parseInt(value);\n     
     }\n        },\n        yyyy: {\n          pattern: "([0-9]{4})",\n          action: (value, data) => {\n 
           data.year = parseInt(value);\n          }\n        },\n        yy: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.year = 2000 + parseInt(value);\n        
  }\n        },\n        HH: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n      
      data.hours = parseInt(value);\n          }\n        },\n        H: {\n          pattern: 
"([0-9]{1,2})",\n          action: (value, data) => {\n            data.hours = parseInt(value);\n          
}\n        },\n        hh: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n        
    data.hours = parseInt(value);\n       
    }\n        },\n        h: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n   
         data.hours = parseInt(value);\n          }\n        },\n        MM: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.minutes = parseInt(value);\n          
}\n        },\n        M: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.minutes = parseInt(value);\n          }\n        },\n        ss: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.seconds = parseInt(value);\n          
}\n        },\n        s: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.seconds = parseInt(value);\n          }\n        },\n        tt: {\n          pattern: 
"([aApP][mM])",\n          action: (value, data) => {\n            const char = value.charAt(0);\n            
data.am = char === "a" || char === "A";\n        
   }\n        },\n        t: {\n          pattern: "([aApP])",\n          action: (value, data) => {\n        
    data.am = value === "a" || value === "A";\n          }\n        }\n      };\n      const escapedFormat = 
cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n      const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n      const actions = [];\n      const re 
= escapedFormat.replace(patterns, function (match, patternElement) {\n        const {\n          pattern,\n   
       action\n        } = handlers[patternElement];\n        actions.push(action);\n        return 
pattern;\n      });\n\n      this._scandCache.set(cFormat, [re, actions]);\n    }\n\n    const [re, actions] 
= this._scandCache.get(cFormat);\n\n    const matches = new RegExp(re, "g").exec(cDate);\n\n    if (!matches 
|| matches.length !== actions.length + 1) {\n      return null;\n    }\n\n    const data = {\n      year: 
0,\n      month: 0,\n      day: 0,\n      hours: 0,\n  
     minutes: 0,\n      seconds: 0,\n      am: null\n    };\n    actions.forEach((action, i) => 
action(matches[i + 1], data));\n\n    if (data.am !== null) {\n      data.hours = data.hours % 12 + (data.am 
? 0 : 12);\n    }\n\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, 
data.seconds);\n  }\n\n  spansToXML() {}\n\n  stringFromStream() {}\n\n  xmlToSpans() {}\n\n}\n\nexports.Util 
= Util;\n\n/***/ })\n/******/ 
\t]);\n/************************************************************************/\n/******/ \t// The module 
cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require 
function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in 
cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== 
undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new 
module (and put it into the cache)\n/
 ******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id 
needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ 
\t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, 
module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the 
module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ 
\t\n/************************************************************************/\nvar __webpack_exports__ = 
{};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n  
value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n  enumerable: true,\n  get: function () 
{\n    return _initialization.initSandbox;\n  }\n}));\n\nvar _initialization = __w_pdfjs_require__(1)
 ;\n\nconst pdfjsVersion = \'2.9.359\';\nconst pdfjsBuild = \'e667c8cbc\';\n})();\n\n/******/ \treturn 
__webpack_exports__;\n/******/ })()\n;\n});'];
+    const code = ['(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 
\'object\' && typeof module === \'object\')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 
\'function\' && define.amd)\n\t\tdefine("pdfjs-dist/build/pdf.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.initSandbox = initSandbox;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar _aform = 
__w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar 
_conso
 le = __w_pdfjs_require__(13);\n\nvar _doc = __w_pdfjs_require__(14);\n\nvar _proxy = 
__w_pdfjs_require__(16);\n\nvar _util = __w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete 
globalThis.pdfjsScripting;\n  const externalCall = globalThis.callExternalFunction;\n  delete 
globalThis.callExternalFunction;\n\n  const globalEval = code => globalThis.eval(code);\n\n  const send = 
data => externalCall("send", [data]);\n\n  const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    
data\n  } = params;\n  const doc = new _doc.Doc({\n    send,\n    globalEval,\n    ...data.docInfo\n  });\n  
const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, proxyHandler)\n  };\n  const app = new 
_app.App({\n    send,\n    globalEval,\n    externalCall,\n    _document,\n    calculationOrder: 
data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  const util = new _util.Util({\n    
externalCall\n  });\n  const appObjects = app._objects;\n\n  if (data.objects) 
 {\n    const annotations = [];\n\n    for (const [name, objs] of Object.entries(data.objects)) {\n      
annotations.length = 0;\n      let container = null;\n\n      for (const obj of objs) {\n        if (obj.type 
!== "") {\n          annotations.push(obj);\n        } else {\n          container = obj;\n        }\n      
}\n\n      let obj = container;\n\n      if (annotations.length > 0) {\n        obj = annotations[0];\n       
 obj.send = send;\n      }\n\n      obj.globalEval = globalEval;\n      obj.doc = _document;\n      
obj.fieldPath = name;\n      obj.appObjects = appObjects;\n      let field;\n\n      switch (obj.type) {\n    
    case "radiobutton":\n          {\n            const otherButtons = annotations.slice(1);\n            
field = new _field.RadioButtonField(otherButtons, obj);\n            break;\n          }\n\n        case 
"checkbox":\n          {\n            const otherButtons = annotations.slice(1);\n            field = new 
_field.CheckboxField(otherButtons, obj
 );\n            break;\n          }\n\n        case "text":\n          if (annotations.length <= 1) {\n      
      field = new _field.Field(obj);\n            break;\n          }\n\n          obj.siblings = 
annotations.map(x => x.id).slice(1);\n          field = new _field.Field(obj);\n          break;\n\n        
default:\n          field = new _field.Field(obj);\n      }\n\n      const wrapped = new Proxy(field, 
proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: field,\n       
 wrapped\n      };\n\n      for (const object of objs) {\n        appObjects[object.id] = _object;\n      
}\n\n      if (container) {\n        appObjects[container.id] = _object;\n      }\n    }\n  }\n\n  const 
color = new _color.Color();\n  globalThis.event = null;\n  globalThis.global = Object.create(null);\n  
globalThis.app = new Proxy(app, proxyHandler);\n  globalThis.color = new Proxy(color, proxyHandler);\n  
globalThis.console = new Proxy(new _console.Console(
 {\n    send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  globalThis.trans = _constants.Trans;\n  
globalThis.zoomtype = _constants.ZoomType;\n  globalThis.ADBE = {\n    Reader_Value_Asked: true,\n    
Viewer_Value_Asked: true\n  };\n  const aform = new _aform.AForm(doc, app, util, color);\n\n  for (const name 
of Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n  
   Object.defineProperty(globalThis, name, {\n      value,\n      writable: false\n    });\n  }\n\n  
Object.defineProperties(globalThis, {\n    ColorConvert: {\n      value: color.convert.bind(color),\n      
writable: true\n    },\n    ColorEqual: {\n      value: color.equal.bind(color),\n      writable: true\n    
}\n  });\n  const properties = Object.create(null);\n\n  for (const name of 
Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name === "constructor" || name.startsWith("_")) 
{\n      continue;\n    }\n\n    const descriptor = Object.getOwnPropertyDescriptor(_doc.Doc.prototype, 
name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: descriptor.get.bind(doc),\n     
   set: descriptor.set.bind(doc)\n      };\n    } else {\n      properties[name] = {\n        value: 
_doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  Object.defineProperties(globalThis, 
properties);\n  const functions = {\n    dispatchEvent: app._dispatchEvent.bind(app),\
 n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n    try {\n      
functions[name](args);\n    } catch (error) {\n      const value = `${error.toString()}\\n${error.stack}`;\n  
    send({\n        command: "error",\n        value\n      });\n    }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ZoomType = exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = 
exports.Position = exports.Highlight = exports.GlobalConstants = exports.Font = exports.Display = 
exports.Cursor = exports.Border = void 0;\nconst Border = Object.freeze({\n  s: "solid",\n  d: "dashed",\n  
b: "beveled",\n  i: "inset",\n  u: "underline"\n});\nexports.Border = Border;\nconst Cursor = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = 
Object.freeze({\n  visible: 0,\n  hidden: 1,\n  noPrint: 2,\n  noView
 : 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: "Times-Roman",\n  TimesB: 
"Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: "Helvetica",\n  HelvB: 
"Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n  Cour: "Courier",\n  
CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  Symbol: "Symbol",\n  
ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = Object.freeze({\n  n: "none",\n  
i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = Highlight;\nconst Position = 
Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 3,\n  iconTextH: 4,\n  
textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = Object.freeze({\n  
proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = O
 bject.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitHorizontalIn",\n  splitHO: "SplitHorizontalOut",\n 
 splitVI: "SplitVerticalIn",\n  splitVO: "SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  
wipeR: "WipeRight",\n  wipeU: "WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  
none: "NoVary",\n  fitP: "FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  
pref: "Preferred",\n  refW: "ReflowWidth"\n});\ne
 xports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  IDS_GREATER_THAN: "Invalid value: 
must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: must be greater than or equal to % 
s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: must be less than or equal to % 
s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid date / time: please ensure that the 
date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format ",\n  IDS_INVALID_VALUE: "The value 
entered does not match the format of the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: 
"January[1] February[2] March[3] April[4] May[5] " + "June[6] July[7] August[8] September[9] October[10] " + 
"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] 
Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: "** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: 
["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SE
 P: ["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\d{3}(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", 
"011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d
 {0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar _color = __w_pdfjs_require__(5);\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    this.calcOrd
 erIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = data.comb;\n    
this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = data.currentValueIndices;\n  
  this.defaultStyle = data.defaultStyle;\n    this.defaultValue = data.defaultValue;\n    this.doNotScroll = 
data.doNotScroll;\n    this.doNotSpellCheck = data.doNotSpellCheck;\n    this.delay = data.delay;\n    
this.display = data.display;\n    this.doc = data.doc.wrapped;\n    this.editable = data.editable;\n    
this.exportValues = data.exportValues;\n    this.fileSelect = data.fileSelect;\n    this.hidden = 
data.hidden;\n    this.highlight = data.highlight;\n    this.lineWidth = data.lineWidth;\n    this.multiline 
= data.multiline;\n    this.multipleSelection = !!data.multipleSelection;\n    this.name = data.name;\n    
this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.
 rect = data.rect;\n    this.required = data.required;\n    this.richText = data.richText;\n    
this.richValue = data.richValue;\n    this.rotation = data.rotation;\n    this.style = data.style;\n    
this.submitName = data.submitName;\n    this.textFont = data.textFont;\n    this.textSize = data.textSize;\n  
  this.type = data.type;\n    this.userName = data.userName;\n    this._actions = (0, 
_common.createActionsMap)(data.actions);\n    this._browseForFileToSubmit = data.browseForFileToSubmit || 
null;\n    this._buttonCaption = null;\n    this._buttonIcon = null;\n    this._children = null;\n    
this._currentValueIndices = data.currentValueIndices || 0;\n    this._document = data.doc;\n    
this._fieldPath = data.fieldPath;\n    this._fillColor = data.fillColor || ["T"];\n    this._isChoice = 
Array.isArray(data.items);\n    this._items = data.items || [];\n    this._page = data.page || 0;\n    
this._strokeColor = data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || 
 ["G", 0];\n    this._value = data.value || "";\n    this._kidIds = data.kidIds || null;\n    this._fieldType 
= (0, _common.getFieldType)(this._actions);\n    this._siblings = data.siblings || null;\n    
this._globalEval = data.globalEval;\n    this._appObjects = data.appObjects;\n    this.valueAsString = 
data.valueAsString || this._value;\n  }\n\n  get currentValueIndices() {\n    if (!this._isChoice) {\n      
return 0;\n    }\n\n    return this._currentValueIndices;\n  }\n\n  set currentValueIndices(indices) {\n    
if (!this._isChoice) {\n      return;\n    }\n\n    if (!Array.isArray(indices)) {\n      indices = 
[indices];\n    }\n\n    if (!indices.every(i => typeof i === "number" && Number.isInteger(i) && i >= 0 && i 
< this.numItems)) {\n      return;\n    }\n\n    indices.sort();\n\n    if (this.multipleSelection) {\n      
this._currentValueIndices = indices;\n      this._value = [];\n      indices.forEach(i => {\n        
this._value.push(this._items[i].displayValue);\n      })
 ;\n    } else {\n      if (indices.length > 0) {\n        indices = indices.splice(1, indices.length - 1);\n 
       this._currentValueIndices = indices[0];\n        this._value = 
this._items[this._currentValueIndices];\n      }\n    }\n\n    this._send({\n      id: this._id,\n      
indices\n    });\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get bgColor() {\n 
   return this.fillColor;\n  }\n\n  set bgColor(color) {\n    this.fillColor = color;\n  }\n\n  get 
numItems() {\n    if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    return 
this._items.length;\n  }\n\n  set numItems(_) {\n    throw new Error("field.numItems is read-only");\n  }\n\n 
 get strokeColor() {\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n
   }\n\n  get borderColor() {\n    return this.strokeColor;\n  }\n\n  set borderColor(color) {\n    
this.strokeColor = color;\n  }\n\n  get page() {\n    return this._page;\n  }\n\n  set page(_) {\n    throw 
new Error("field.page is read-only");\n  }\n\n  get textColor() {\n    return this._textColor;\n  }\n\n  set 
textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n      this._textColor = color;\n    }\n  
}\n\n  get fgColor() {\n    return this.textColor;\n  }\n\n  set fgColor(color) {\n    this.textColor = 
color;\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "") 
{\n      this._value = "";\n    } else if (typeof value === "string") {\n      switch (this._fieldType) {\n   
     case _common.FieldType.number:\n        case _common.FieldType.percent:\n          value = 
parseFloat(value);\n\n          if (!isNaN(value)) {\n            this._value = value;\n          }\n\n       
   break;\n\n        default:\n          this.
 _value = value;\n      }\n    } else {\n      this._value = value;\n    }\n\n    if (this._isChoice) {\n     
 if (this.multipleSelection) {\n        const values = new Set(value);\n        
this._currentValueIndices.length = 0;\n\n        this._items.forEach(({\n          displayValue\n        }, 
i) => {\n          if (values.has(displayValue)) {\n            this._currentValueIndices.push(i);\n          
}\n        });\n      } else {\n        this._currentValueIndices = this._items.findIndex(({\n          
displayValue\n        }) => value === displayValue);\n      }\n    }\n  }\n\n  get valueAsString() {\n    if 
(this._valueAsString === undefined) {\n      this._valueAsString = this._value ? this._value.toString() : 
"";\n    }\n\n    return this._valueAsString;\n  }\n\n  set valueAsString(val) {\n    this._valueAsString = 
val ? val.toString() : "";\n  }\n\n  browseForFileToSubmit() {\n    if (this._browseForFileToSubmit) {\n      
this._browseForFileToSubmit();\n    }\n  }\n\n  butto
 nGetCaption(nFace = 0) {\n    if (this._buttonCaption) {\n      return this._buttonCaption[nFace];\n    
}\n\n    return "";\n  }\n\n  buttonGetIcon(nFace = 0) {\n    if (this._buttonIcon) {\n      return 
this._buttonIcon[nFace];\n    }\n\n    return null;\n  }\n\n  buttonImportIcon(cPath = null, nPave = 0) 
{}\n\n  buttonSetCaption(cCaption, nFace = 0) {\n    if (!this._buttonCaption) {\n      this._buttonCaption = 
["", "", ""];\n    }\n\n    this._buttonCaption[nFace] = cCaption;\n  }\n\n  buttonSetIcon(oIcon, nFace = 0) 
{\n    if (!this._buttonIcon) {\n      this._buttonIcon = [null, null, null];\n    }\n\n    
this._buttonIcon[nFace] = oIcon;\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {}\n\n  clearItems() {\n    
if (!this._isChoice) {\n      throw new Error("Not a choice widget");\n    }\n\n    this._items = [];\n\n    
this._send({\n      id: this._id,\n      clear: null\n    });\n  }\n\n  deleteItemAt(nIdx = null) {\n    if 
(!this._isChoice) {\n      throw new Error("Not a c
 hoice widget");\n    }\n\n    if (!this.numItems) {\n      return;\n    }\n\n    if (nIdx === null) {\n      
nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\n 
     nIdx = nIdx || 0;\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = this.numItems - 
1;\n    }\n\n    this._items.splice(nIdx, 1);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      
let index = this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        if 
(this._currentValueIndices[index] === nIdx) {\n          this._currentValueIndices.splice(index, 1);\n        
}\n\n        for (const ii = this._currentValueIndices.length; index < ii; index++) {\n          
--this._currentValueIndices[index];\n        }\n      }\n    } else {\n      if (this._currentValueIndices 
=== nIdx) {\n        this._currentValueIndices = this.numItems > 0 ? 0 : -1;\n      } else if 
(this._currentValueIndices > nIdx) {\n        --
 this._currentValueIndices;\n      }\n    }\n\n    this._send({\n      id: this._id,\n      remove: nIdx\n    
});\n  }\n\n  getItemAt(nIdx = -1, bExportValue = false) {\n    if (!this._isChoice) {\n      throw new 
Error("Not a choice widget");\n    }\n\n    if (nIdx < 0 || nIdx >= this.numItems) {\n      nIdx = 
this.numItems - 1;\n    }\n\n    const item = this._items[nIdx];\n    return bExportValue ? item.exportValue 
: item.displayValue;\n  }\n\n  getArray() {\n    if (this._kidIds) {\n      return this._kidIds.map(id => 
this._appObjects[id].wrapped);\n    }\n\n    if (this._children === null) {\n      this._children = 
this._document.obj._getChildren(this._fieldPath);\n    }\n\n    return this._children;\n  }\n\n  getLock() 
{\n    return undefined;\n  }\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  
isDefaultChecked(nWidget) {\n    return false;\n  }\n\n  insertItemAt(cName, cExport = undefined, nIdx = 0) 
{\n    if (!this._isChoice) {\n      throw new Error("Not a choice 
 widget");\n    }\n\n    if (!cName) {\n      return;\n    }\n\n    if (nIdx < 0 || nIdx > this.numItems) {\n 
     nIdx = this.numItems;\n    }\n\n    if (this._items.some(({\n      displayValue\n    }) => displayValue 
=== cName)) {\n      return;\n    }\n\n    if (cExport === undefined) {\n      cExport = cName;\n    }\n\n    
const data = {\n      displayValue: cName,\n      exportValue: cExport\n    };\n\n    
this._items.splice(nIdx, 0, data);\n\n    if (Array.isArray(this._currentValueIndices)) {\n      let index = 
this._currentValueIndices.findIndex(i => i >= nIdx);\n\n      if (index !== -1) {\n        for (const ii = 
this._currentValueIndices.length; index < ii; index++) {\n          ++this._currentValueIndices[index];\n     
   }\n      }\n    } else if (this._currentValueIndices >= nIdx) {\n      ++this._currentValueIndices;\n    
}\n\n    this._send({\n      id: this._id,\n      insert: {\n        index: nIdx,\n        ...data\n      }\n 
   });\n  }\n\n  setAction(cTrigger, cS
 cript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== "string") {\n      return;\n    }\n\n   
 if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = [];\n    }\n\n    
this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: this._id,\n      
focus: true\n    });\n  }\n\n  setItems(oArray) {\n    if (!this._isChoice) {\n      throw new Error("Not a 
choice widget");\n    }\n\n    this._items.length = 0;\n\n    for (const element of oArray) {\n      let 
displayValue, exportValue;\n\n      if (Array.isArray(element)) {\n        displayValue = 
element[0]?.toString() || "";\n        exportValue = element[1]?.toString() || "";\n      } else {\n        
displayValue = exportValue = element?.toString() || "";\n      }\n\n      this._items.push({\n        
displayValue,\n        exportValue\n      });\n    }\n\n    this._currentValueIndices = 0;\n\n    
this._send({\n      id: this._id,\n      items: this._items\n    });\n  }\n\n  se
 tLock() {}\n\n  signatureGetModifications() {}\n\n  signatureGetSeedValue() {}\n\n  signatureInfo() {}\n\n  
signatureSetSeedValue() {}\n\n  signatureSign() {}\n\n  signatureValidate() {}\n\n  _isButton() {\n    return 
false;\n  }\n\n  _runActions(event) {\n    const eventName = event.name;\n\n    if 
(!this._actions.has(eventName)) {\n      return false;\n    }\n\n    const actions = 
this._actions.get(eventName);\n\n    try {\n      for (const action of actions) {\n        
this._globalEval(action);\n      }\n    } catch (error) {\n      event.rc = false;\n      throw error;\n    
}\n\n    return true;\n  }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n  
constructor(otherButtons, data) {\n    super(data);\n    this.exportValues = [this.exportValues];\n    
this._radioIds = [this._id];\n    this._radioActions = [this._actions];\n\n    for (const radioData of 
otherButtons) {\n      this.exportValues.push(radioData.exportValues);\n\n      this._radioIds.push(rad
 ioData.id);\n\n      this._radioActions.push((0, _common.createActionsMap)(radioData.actions));\n\n      if 
(this._value === radioData.exportValues) {\n        this._id = radioData.id;\n      }\n    }\n  }\n\n  get 
value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === null || value === 
undefined) {\n      this._value = "";\n    }\n\n    const i = this.exportValues.indexOf(value);\n\n    if (0 
<= i && i < this._radioIds.length) {\n      this._id = this._radioIds[i];\n      this._value = value;\n    } 
else if (value === "Off" && this._radioIds.length === 2) {\n      const nextI = (1 + 
this._radioIds.indexOf(this._id)) % 2;\n      this._id = this._radioIds[nextI];\n      this._value = 
this.exportValues[nextI];\n    }\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {\n    if (nWidget < 0 || 
nWidget >= this._radioIds.length || !bCheckIt) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = this.exportValues[nWidget];\n\n    t
 his._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n  isBoxChecked(nWidget) {\n    
return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n  }\n\n  
isDefaultChecked(nWidget) {\n    return nWidget >= 0 && nWidget < this.exportValues.length && 
this.defaultValue === this.exportValues[nWidget];\n  }\n\n  _getExportValue(state) {\n    const i = 
this._radioIds.indexOf(this._id);\n\n    return this.exportValues[i];\n  }\n\n  _runActions(event) {\n    
const i = this._radioIds.indexOf(this._id);\n\n    this._actions = this._radioActions[i];\n    return 
super._runActions(event);\n  }\n\n  _isButton() {\n    return true;\n  }\n\n}\n\nexports.RadioButtonField = 
RadioButtonField;\n\nclass CheckboxField extends RadioButtonField {\n  get value() {\n    return 
this._value;\n  }\n\n  set value(value) {\n    if (!value || value === "Off") {\n      this._value = "Off";\n 
   } else {\n      super.value = value;\n    }\n  }\n\n  _getExport
 Value(state) {\n    return state ? super._getExportValue(state) : "Off";\n  }\n\n  isBoxChecked(nWidget) {\n 
   if (this._value === "Off") {\n      return false;\n    }\n\n    return super.isBoxChecked(nWidget);\n  
}\n\n  isDefaultChecked(nWidget) {\n    if (this.defaultValue === "Off") {\n      return this._value === 
"Off";\n    }\n\n    return super.isDefaultChecked(nWidget);\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) 
{\n    if (nWidget < 0 || nWidget >= this._radioIds.length) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n    
this._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n}\n\nexports.CheckboxField = 
CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.createActionsMap = 
createActionsMap;\nexports.getFieldType = getFieldType;\nexports.FieldTy
 pe = void 0;\nconst FieldType = {\n  none: 0,\n  number: 1,\n  percent: 2,\n  date: 3,\n  time: 
4\n};\nexports.FieldType = FieldType;\n\nfunction createActionsMap(actions) {\n  const actionsMap = new 
Map();\n\n  if (actions) {\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n      
actionsMap.set(eventType, actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\nfunction 
getFieldType(actions) {\n  let format = actions.get("Format");\n\n  if (!format) {\n    return 
FieldType.none;\n  }\n\n  format = format[0];\n  format = format.trim();\n\n  if 
(format.startsWith("AFNumber_")) {\n    return FieldType.number;\n  }\n\n  if 
(format.startsWith("AFPercent_")) {\n    return FieldType.percent;\n  }\n\n  if 
(format.startsWith("AFDate_")) {\n    return FieldType.date;\n  }\n\n  if (format.startsWith("AFTime__")) {\n 
   return FieldType.time;\n  }\n\n  return FieldType.none;\n}\n\n/***/ }),\n/* 5 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) =
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Color = void 
0;\n\nvar _scripting_utils = __w_pdfjs_require__(6);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
Color extends _pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n  
  this.black = ["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = 
["RGB", 0, 1, 0];\n    this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    
this.magenta = ["CMYK", 0, 1, 0, 0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 
0.25];\n    this.gray = ["G", 0.5];\n    this.ltGray = ["G", 0.75];\n  }\n\n  static 
_isValidSpace(cColorSpace) {\n    return typeof cColorSpace === "string" && (cColorSpace === "T" || 
cColorSpace === "G" || cColorSpace === "RGB" || cColorSpace === "CMYK");\n  }\n\n  static 
_isValidColor(colorArray) {\n    if (!Array.isArray(colorArray) || colorArray.length === 0) {\n      
 return false;\n    }\n\n    const space = colorArray[0];\n\n    if (!Color._isValidSpace(space)) {\n      
return false;\n    }\n\n    switch (space) {\n      case "T":\n        if (colorArray.length !== 1) {\n       
   return false;\n        }\n\n        break;\n\n      case "G":\n        if (colorArray.length !== 2) {\n    
      return false;\n        }\n\n        break;\n\n      case "RGB":\n        if (colorArray.length !== 4) 
{\n          return false;\n        }\n\n        break;\n\n      case "CMYK":\n        if (colorArray.length 
!== 5) {\n          return false;\n        }\n\n        break;\n\n      default:\n        return false;\n    
}\n\n    return colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n  }\n\n  static 
_getCorrectColor(colorArray) {\n    return Color._isValidColor(colorArray) ? colorArray : ["G", 0];\n  }\n\n  
convert(colorArray, cColorSpace) {\n    if (!Color._isValidSpace(cColorSpace)) {\n      return this.black;\n  
  }\n\n    if (cC
 olorSpace === "T") {\n      return ["T"];\n    }\n\n    colorArray = Color._getCorrectColor(colorArray);\n\n 
   if (colorArray[0] === cColorSpace) {\n      return colorArray;\n    }\n\n    if (colorArray[0] === "T") 
{\n      return this.convert(this.black, cColorSpace);\n    }\n\n    return 
_scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n  }\n\n  
equal(colorArray1, colorArray2) {\n    colorArray1 = Color._getCorrectColor(colorArray1);\n    colorArray2 = 
Color._getCorrectColor(colorArray2);\n\n    if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n      
return colorArray1[0] === "T" && colorArray2[0] === "T";\n    }\n\n    if (colorArray1[0] !== colorArray2[0]) 
{\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\n    }\n\n    return 
colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\n  }\n\n}\n\nexports.Color = Color;\n\n/***/ 
}),\n/* 6 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.definePr
 operty(exports, "__esModule", ({\n  value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction 
makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, 
"0");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return ["G", 1 - Math.min(1, 0.3 * 
c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return ["CMYK", 0, 0, 0, 1 - g];\n  }\n\n  
static G_RGB([g]) {\n    return ["RGB", g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = 
makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return ["G", 0.3 * r 
+ 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const R = makeColorComp(r);\n    const G 
= makeColorComp(g);\n    const B = makeColorComp(b);\n    return `#${R}${G}${B}`;\n  }\n\n  static T_HTML() 
{\n    return "#00000000";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return ["RGB", 1 - Math.min(1, c + 
k), 1 - Math.min(1, m + k), 1 - Math.min(1, y 
 + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return this.RGB_HTML(this.CMYK_RGB(components));\n  
}\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    
const k = Math.min(c, m, y);\n    return ["CMYK", c, m, y, k];\n  }\n\n}\n\nexports.ColorConverters = 
ColorConverters;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.PDFObject = void 
0;\n\nclass PDFObject {\n  constructor(data) {\n    this._expandos = Object.create(null);\n    this._send = 
data.send || null;\n    this._id = data.id || null;\n  }\n\n}\n\nexports.PDFObject = PDFObject;\n\n/***/ 
}),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.AForm = void 0;\n\nvar 
_constants = __w_pdfjs_require__(2);\n\nclass AForm {\n  constructor(document, app, util, c
 olor) {\n    this._document = document;\n    this._app = app;\n    this._util = util;\n    this._color = 
color;\n    this._dateFormats = ["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", 
"yy-mm-dd", "mmm-yy", "mmmm-yy", "mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n    
this._timeFormats = ["HH:MM", "h:MM tt", "HH:MM:ss", "h:MM:ss tt"];\n    this._emailRegex = new 
RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" + 
"(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n  }\n\n  _mkTargetName(event) {\n    return 
event.target ? `[ ${event.target.name} ]` : "";\n  }\n\n  _parseDate(cFormat, cDate) {\n    const ddate = 
Date.parse(cDate);\n\n    if (isNaN(ddate)) {\n      try {\n        return this._util.scand(cFormat, 
cDate);\n      } catch (error) {\n        return null;\n      }\n    } else {\n      return new 
Date(ddate);\n    }\n  }\n\n  AFMergeChange(event = globalThis.event) {\n    
 if (event.willCommit) {\n      return event.value.toString();\n    }\n\n    return 
this._app._eventDispatcher.mergeChange(event);\n  }\n\n  AFParseDateEx(cString, cOrder) {\n    return 
this._parseDate(cOrder, cString);\n  }\n\n  AFExtractNums(str) {\n    if (typeof str === "number") {\n      
return [str];\n    }\n\n    if (!str || typeof str !== "string") {\n      return null;\n    }\n\n    const 
first = str.charAt(0);\n\n    if (first === "." || first === ",") {\n      str = `0${str}`;\n    }\n\n    
const numbers = str.match(/([0-9]+)/g);\n\n    if (numbers.length === 0) {\n      return null;\n    }\n\n    
return numbers;\n  }\n\n  AFMakeNumber(str) {\n    if (typeof str === "number") {\n      return str;\n    
}\n\n    if (typeof str !== "string") {\n      return null;\n    }\n\n    str = str.trim().replace(",", 
".");\n    const number = parseFloat(str);\n\n    if (isNaN(number) || !isFinite(number)) {\n      return 
null;\n    }\n\n    return number;\n  }\n\n  AFMakeArrayFromList(s
 tring) {\n    if (typeof string === "string") {\n      return string.split(/, ?/g);\n    }\n\n    return 
string;\n  }\n\n  AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n    
const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    let value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      event.value = "";\n      return;\n    
}\n\n    const sign = Math.sign(value);\n    const buf = [];\n    let hasParen = false;\n\n    if (sign === 
-1 && bCurrencyPrepend && negStyle === 0) {\n      buf.push("-");\n    }\n\n    if ((negStyle === 2 || 
negStyle === 3) && sign === -1) {\n      buf.push("(");\n      hasParen = true;\n    }\n\n    if 
(bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    buf.push("%,", sepStyle, ".", nDec.toString(), "f");\n\n    if 
(!bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    if (hasPare
 n) {\n      buf.push(")");\n    }\n\n    if (negStyle === 1 || negStyle === 3) {\n      
event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n    }\n\n    if ((negStyle !== 0 
|| bCurrencyPrepend) && sign === -1) {\n      value = -value;\n    }\n\n    const formatStr = buf.join("");\n 
   event.value = this._util.printf(formatStr, value);\n  }\n\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, 
currStyle, strCurrency, bCurrencyPrepend) {\n    const event = globalThis.event;\n    let value = 
this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    }\n\n    value = value.trim();\n    let 
pattern;\n\n    if (sepStyle > 1) {\n      pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : 
/^[+-]?[0-9]*,?[0-9]*$/;\n    } else {\n      pattern = event.willCommit ? 
/^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : /^[+-]?[0-9]*\\.?[0-9]*$/;\n    }\n\n    if (!pattern.test(value)) 
{\n      if (event.willCommit) {\n        const err = `${_constants.GlobalConstan
 ts.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n        this._app.alert(err);\n      }\n\n      
event.rc = false;\n    }\n\n    if (event.willCommit && sepStyle > 1) {\n      event.value = 
parseFloat(value.replace(",", "."));\n    }\n  }\n\n  AFPercent_Format(nDec, sepStyle, percentPrepend = 
false) {\n    if (typeof nDec !== "number") {\n      return;\n    }\n\n    if (typeof sepStyle !== "number") 
{\n      return;\n    }\n\n    if (nDec < 0) {\n      throw new Error("Invalid nDec value in 
AFPercent_Format");\n    }\n\n    const event = globalThis.event;\n\n    if (nDec > 512) {\n      event.value 
= "%";\n      return;\n    }\n\n    nDec = Math.floor(nDec);\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    let value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n    
  event.value = "%";\n      return;\n    }\n\n    const formatStr = `%,${sepStyle}.${nDec}f`;\n    value = 
this._util.printf(formatStr, value * 100);\n\n    if (percentPrepend)
  {\n      event.value = `%${value}`;\n    } else {\n      event.value = `${value}%`;\n    }\n  }\n\n  
AFPercent_Keystroke(nDec, sepStyle) {\n    this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, "", true);\n  }\n\n  
AFDate_FormatEx(cFormat) {\n    const event = globalThis.event;\n    const value = event.value;\n\n    if 
(!value) {\n      return;\n    }\n\n    const date = this._parseDate(cFormat, value);\n\n    if (date !== 
null) {\n      event.value = this._util.printd(cFormat, date);\n    }\n  }\n\n  AFDate_Format(pdf) {\n    if 
(pdf >= 0 && pdf < this._dateFormats.length) {\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\n    }\n  
}\n\n  AFDate_KeystrokeEx(cFormat) {\n    const event = globalThis.event;\n\n    if (!event.willCommit) {\n   
   return;\n    }\n\n    const value = this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    
}\n\n    if (this._parseDate(cFormat, value) === null) {\n      const invalid = 
_constants.GlobalConstants.IDS_INVALID_DATE;\n      const
  invalid2 = _constants.GlobalConstants.IDS_INVALID_DATE2;\n      const err = `${invalid} 
${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n      this._app.alert(err);\n\n      event.rc = 
false;\n    }\n  }\n\n  AFDate_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < this._dateFormats.length) {\n      
this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\n    }\n  }\n\n  AFRange_Validate(bGreaterThan, 
nGreaterThan, bLessThan, nLessThan) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      
return;\n    }\n\n    const value = this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      
return;\n    }\n\n    bGreaterThan = !!bGreaterThan;\n    bLessThan = !!bLessThan;\n\n    if (bGreaterThan) 
{\n      nGreaterThan = this.AFMakeNumber(nGreaterThan);\n\n      if (nGreaterThan === null) {\n        
return;\n      }\n    }\n\n    if (bLessThan) {\n      nLessThan = this.AFMakeNumber(nLessThan);\n\n      if 
(nLessThan === null) {\n        return;\n      }\n    }\n\n    l
 et err = "";\n\n    if (bGreaterThan && bLessThan) {\n      if (value < nGreaterThan || value > nLessThan) 
{\n        err = this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n      
}\n    } else if (bGreaterThan) {\n      if (value < nGreaterThan) {\n        err = 
this._util.printf(_constants.GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\n      }\n    } else if (value 
nLessThan) {\n      err = this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n    
}\n\n    if (err) {\n      this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  
AFSimple(cFunction, nValue1, nValue2) {\n    const value1 = this.AFMakeNumber(nValue1);\n\n    if (value1 === 
null) {\n      throw new Error("Invalid nValue1 in AFSimple");\n    }\n\n    const value2 = 
this.AFMakeNumber(nValue2);\n\n    if (value2 === null) {\n      throw new Error("Invalid nValue2 in 
AFSimple");\n    }\n\n    switch (cFunction) {\n      case "AVG":\n        return (val
 ue1 + value2) / 2;\n\n      case "SUM":\n        return value1 + value2;\n\n      case "PRD":\n        
return value1 * value2;\n\n      case "MIN":\n        return Math.min(value1, value2);\n\n      case "MAX":\n 
       return Math.max(value1, value2);\n    }\n\n    throw new Error("Invalid cFunction in AFSimple");\n  
}\n\n  AFSimple_Calculate(cFunction, cFields) {\n    const actions = {\n      AVG: args => args.reduce((acc, 
value) => acc + value, 0) / args.length,\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\n   
   PRD: args => args.reduce((acc, value) => acc * value, 1),\n      MIN: args => args.reduce((acc, value) => 
Math.min(acc, value), Number.MAX_VALUE),\n      MAX: args => args.reduce((acc, value) => Math.max(acc, 
value), Number.MIN_VALUE)\n    };\n\n    if (!(cFunction in actions)) {\n      throw new TypeError("Invalid 
function in AFSimple_Calculate");\n    }\n\n    const event = globalThis.event;\n    const values = [];\n\n   
 for (const cField of cField
 s) {\n      const field = this._document.getField(cField);\n\n      const number = 
this.AFMakeNumber(field.value);\n\n      if (number !== null) {\n        values.push(number);\n      }\n    
}\n\n    if (values.length === 0) {\n      event.value = cFunction === "PRD" ? 1 : 0;\n      return;\n    
}\n\n    const res = actions[cFunction](values);\n    event.value = Math.round(1e6 * res) / 1e6;\n  }\n\n  
AFSpecial_Format(psf) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    
}\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Format");\n    }\n\n    let formatStr = "";\n\n    switch (psf) {\n      case 0:\n        formatStr 
= "99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        if (this._util.printx("9999999999", event.value).length >= 10) {\n          formatStr = "(999) 
999-9999";\n        } else {\n          formatStr = "9
 99-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    
event.value = this._util.printx(formatStr, event.value);\n  }\n\n  AFSpecial_KeystrokeEx(cMask) {\n    if 
(!cMask) {\n      return;\n    }\n\n    const event = globalThis.event;\n    const value = 
this.AFMergeChange(event);\n    const checkers = new Map([["9", char => char >= "0" && char <= "9"], ["A", 
char => "a" <= char && char <= "z" || "A" <= char && char <= "Z"], ["O", char => "a" <= char && char <= "z" 
|| "A" <= char && char <= "Z" || "0" <= char && char <= "9"], ["X", char => true]]);\n\n    function 
_checkValidity(_value, _cMask) {\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        const mask 
= _cMask.charAt(i);\n\n        const char = _value.charAt(i);\n\n        const checker = 
checkers.get(mask);\n\n        if (checker) {\n          if (!checker(char)) {\n    
         return false;\n          }\n        } else if (mask !== char) {\n          return false;\n        
}\n      }\n\n      return true;\n    }\n\n    if (!value) {\n      return;\n    }\n\n    const err = 
`${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n    if (value.length > cMask.length) {\n   
   this._app.alert(err);\n\n      event.rc = false;\n      return;\n    }\n\n    if (event.willCommit) {\n    
  if (value.length < cMask.length) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      if (!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        
event.rc = false;\n        return;\n      }\n\n      event.value += cMask.substring(value.length);\n      
return;\n    }\n\n    if (value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n   
 }\n\n    if (!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      event.rc = false;\n    
}\n  }\n\n  AFSpecial_Keystroke(ps
 f) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    psf = 
this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n      case 0:\n        formatStr = 
"99999";\n        break;\n\n      case 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 
2:\n        const finalLen = event.value.length + event.change.length + event.selStart - event.selEnd;\n\n    
    if (finalLen >= 8) {\n          formatStr = "(999) 999-9999";\n        } else {\n          formatStr = 
"999-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    
this.AFSpecial_KeystrokeEx(formatStr);\n  }\n\n  AFTime_FormatEx(cFormat) {\n    
this.AFDate_FormatEx(cFormat);\n  }\n\n  AFTime_Format(pdf) {\n    if (pdf >= 0 &&
  pdf < this._timeFormats.length) {\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  }\n\n  
AFTime_KeystrokeEx(cFormat) {\n    this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) {\n    
if (pdf >= 0 && pdf < this._timeFormats.length) {\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n   
 }\n  }\n\n  eMailValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = 
AForm;\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(5);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _
 pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._constants = null;\n    
this._focusRect = true;\n    this._fs = null;\n    this._language = App._getLanguage(data.language);\n    
this._openInPlace = false;\n    this._platform = App._getPlatform(data.platform);\n    this._runtimeHighlight 
= false;\n    this._runtimeHighlightColor = ["T"];\n    this._thermometer = null;\n    this._toolbar = 
false;\n    this._document = data._document;\n    this._proxyHandler = data.proxyHandler;\n    this._objects 
= Object.create(null);\n    this._eventDispatcher = new _event.EventDispatcher(this._document, 
data.calculationOrder, this._objects);\n    this._timeoutIds = new WeakMap();\n\n    if (typeof 
FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = new 
FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = null;\n  
  }\n\n    this._timeoutCallbackIds = new Map();\n    this._timeoutCallbackId = 0;\n    this
 ._globalEval = data.globalEval;\n    this._externalCall = data.externalCall;\n    this._document = 
data._document;\n  }\n\n  _dispatchEvent(pdfEvent) {\n    this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  
_registerTimeoutCallback(cExpr) {\n    const id = this._timeoutCallbackId++;\n\n    
this._timeoutCallbackIds.set(id, cExpr);\n\n    return id;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    
this._timeoutCallbackIds.delete(id);\n  }\n\n  _evalCallback({\n    callbackId,\n    interval\n  }) {\n    
const expr = this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n      this._timeoutIdsRegistry.register(timeout, id);\n    
 }\n\n    return timeout;\n  }\n\n  _unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeout({\n    callbackId,\n    interval\n  }) {\n    
this._unregisterTimeoutCallback(callbackId);\n\n    if (interval) {\n      
this._externalCall("clearInterval", [callbackId]);\n    } else {\n      this._externalCall("clearTimeout", 
[callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if (typeof platform === "string") {\n    
  platform = platform.toLowerCase();\n\n      if (platform.includes("win")) {\n        return "WIN";\n      } 
else if (platform.includes("mac")) {\n        return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  
static _getLanguage(language) {\n    const [main, sub] = language.toLowerCase().split(/[
 -_]/);\n\n    switch (main) {\n      case "zh":\n        if (sub === "cn" || sub === "sg") {\n          
return "CHS";\n        }\n\n        return "CHT";\n\n      case "da":\n        return "DAN";\n\n      case 
"de":\n        return "DEU";\n\n      case "es":\n        return "ESP";\n\n      case "fr":\n        return 
"FRA";\n\n      case "it":\n        return "ITA";\n\n      case "ko":\n        return "KOR";\n\n      case 
"ja":\n        return "JPN";\n\n      case "nl":\n        return "NLD";\n\n      case "no":\n        return 
"NOR";\n\n      case "pt":\n        if (sub === "br") {\n          return "PTB";\n        }\n\n        return 
"ENU";\n\n      case "fi":\n        return "SUO";\n\n      case "SV":\n        return "SVE";\n\n      
default:\n        return "ENU";\n    }\n  }\n\n  get activeDocs() {\n    return [this._document.wrapped];\n  
}\n\n  set activeDocs(_) {\n    throw new Error("app.activeDocs is read-only");\n  }\n\n  get calculate() {\n 
   return this._document.obj.cal
 culate;\n  }\n\n  set calculate(calculate) {\n    this._document.obj.calculate = calculate;\n  }\n\n  get 
constants() {\n    if (!this._constants) {\n      this._constants = Object.freeze({\n        align: 
Object.freeze({\n          left: 0,\n          center: 1,\n          right: 2,\n          top: 3,\n          
bottom: 4\n        })\n      });\n    }\n\n    return this._constants;\n  }\n\n  set constants(_) {\n    
throw new Error("app.constants is read-only");\n  }\n\n  get focusRect() {\n    return this._focusRect;\n  
}\n\n  set focusRect(val) {\n    this._focusRect = val;\n  }\n\n  get formsVersion() {\n    return 
FORMS_VERSION;\n  }\n\n  set formsVersion(_) {\n    throw new Error("app.formsVersion is read-only");\n  
}\n\n  get fromPDFConverters() {\n    return [];\n  }\n\n  set fromPDFConverters(_) {\n    throw new 
Error("app.fromPDFConverters is read-only");\n  }\n\n  get fs() {\n    if (this._fs === null) {\n      
this._fs = new Proxy(new _fullscreen.FullScreen({\n        sen
 d: this._send\n      }), this._proxyHandler);\n    }\n\n    return this._fs;\n  }\n\n  set fs(_) {\n    
throw new Error("app.fs is read-only");\n  }\n\n  get language() {\n    return this._language;\n  }\n\n  set 
language(_) {\n    throw new Error("app.language is read-only");\n  }\n\n  get media() {\n    return 
undefined;\n  }\n\n  set media(_) {\n    throw new Error("app.media is read-only");\n  }\n\n  get monitors() 
{\n    return [];\n  }\n\n  set monitors(_) {\n    throw new Error("app.monitors is read-only");\n  }\n\n  
get numPlugins() {\n    return 0;\n  }\n\n  set numPlugins(_) {\n    throw new Error("app.numPlugins is 
read-only");\n  }\n\n  get openInPlace() {\n    return this._openInPlace;\n  }\n\n  set openInPlace(val) {\n  
  this._openInPlace = val;\n  }\n\n  get platform() {\n    return this._platform;\n  }\n\n  set platform(_) 
{\n    throw new Error("app.platform is read-only");\n  }\n\n  get plugins() {\n    return [];\n  }\n\n  set 
plugins(_) {\n    throw new Error("a
 pp.plugins is read-only");\n  }\n\n  get printColorProfiles() {\n    return [];\n  }\n\n  set 
printColorProfiles(_) {\n    throw new Error("app.printColorProfiles is read-only");\n  }\n\n  get 
printerNames() {\n    return [];\n  }\n\n  set printerNames(_) {\n    throw new Error("app.printerNames is 
read-only");\n  }\n\n  get runtimeHighlight() {\n    return this._runtimeHighlight;\n  }\n\n  set 
runtimeHighlight(val) {\n    this._runtimeHighlight = val;\n  }\n\n  get runtimeHighlightColor() {\n    
return this._runtimeHighlightColor;\n  }\n\n  set runtimeHighlightColor(val) {\n    if 
(_color.Color._isValidColor(val)) {\n      this._runtimeHighlightColor = val;\n    }\n  }\n\n  get 
thermometer() {\n    if (this._thermometer === null) {\n      this._thermometer = new Proxy(new 
_thermometer.Thermometer({\n        send: this._send\n      }), this._proxyHandler);\n    }\n\n    return 
this._thermometer;\n  }\n\n  set thermometer(_) {\n    throw new Error("app.thermometer is read-only");\n  
 }\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  set toolbar(val) {\n    this._toolbar = val;\n  
}\n\n  get toolbarHorizontal() {\n    return this.toolbar;\n  }\n\n  set toolbarHorizontal(value) {\n    
this.toolbar = value;\n  }\n\n  get toolbarVertical() {\n    return this.toolbar;\n  }\n\n  set 
toolbarVertical(value) {\n    this.toolbar = value;\n  }\n\n  get viewerType() {\n    return VIEWER_TYPE;\n  
}\n\n  set viewerType(_) {\n    throw new Error("app.viewerType is read-only");\n  }\n\n  get 
viewerVariation() {\n    return VIEWER_VARIATION;\n  }\n\n  set viewerVariation(_) {\n    throw new 
Error("app.viewerVariation is read-only");\n  }\n\n  get viewerVersion() {\n    return VIEWER_VERSION;\n  
}\n\n  set viewerVersion(_) {\n    throw new Error("app.viewerVersion is read-only");\n  }\n\n  addMenuItem() 
{}\n\n  addSubMenu() {}\n\n  addToolButton() {}\n\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", 
oDoc = null, oCheckbox = null) {\n    if (typeof cMsg === "obje
 ct") {\n      nType = cMsg.nType;\n      cMsg = cMsg.cMsg;\n    }\n\n    cMsg = (cMsg || "").toString();\n   
 nType = typeof nType !== "number" || isNaN(nType) || nType < 0 || nType > 3 ? 0 : nType;\n\n    if (nType >= 
2) {\n      return this._externalCall("confirm", [cMsg]) ? 4 : 3;\n    }\n\n    this._externalCall("alert", 
[cMsg]);\n\n    return 1;\n  }\n\n  beep() {}\n\n  beginPriv() {}\n\n  browseForDoc() {}\n\n  
clearInterval(oInterval) {\n    this._unregisterTimeout(oInterval);\n  }\n\n  clearTimeOut(oTime) {\n    
this._unregisterTimeout(oTime);\n  }\n\n  endPriv() {}\n\n  execDialog() {}\n\n  execMenuItem() {}\n\n  
getNthPlugInName() {}\n\n  getPath() {}\n\n  goBack() {}\n\n  goForward() {}\n\n  hideMenuItem() {}\n\n  
hideToolbarButton() {}\n\n  launchURL() {}\n\n  listMenuItems() {}\n\n  listToolbarButtons() {}\n\n  
loadPolicyFile() {}\n\n  mailGetAddrs() {}\n\n  mailMsg() {}\n\n  newDoc() {}\n\n  newCollection() {}\n\n  
newFDF() {}\n\n  openDoc() {}\n\n  openFDF() {}\n\n  p
 opUpMenu() {}\n\n  popUpMenuEx() {}\n\n  removeToolButton() {}\n\n  response(cQuestion, cTitle = "", 
cDefault = "", bPassword = "", cLabel = "") {\n    if (typeof cQuestion === "object") {\n      cDefault = 
cQuestion.cDefault;\n      cQuestion = cQuestion.cQuestion;\n    }\n\n    cQuestion = (cQuestion || 
"").toString();\n    cDefault = (cDefault || "").toString();\n    return this._externalCall("prompt", 
[cQuestion, cDefault || ""]);\n  }\n\n  setInterval(cExpr, nMilliseconds = 0) {\n    if (typeof cExpr === 
"object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n      cExpr = cExpr.cExpr;\n    }\n\n    if 
(typeof cExpr !== "string") {\n      throw new TypeError("First argument of app.setInterval must be a 
string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw new TypeError("Second argument 
of app.setInterval must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setInterval", [callbackId, n
 Milliseconds]);\n\n    return this._registerTimeout(callbackId, true);\n  }\n\n  setTimeOut(cExpr, 
nMilliseconds = 0) {\n    if (typeof cExpr === "object") {\n      nMilliseconds = cExpr.nMilliseconds || 0;\n 
     cExpr = cExpr.cExpr;\n    }\n\n    if (typeof cExpr !== "string") {\n      throw new TypeError("First 
argument of app.setTimeOut must be a string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      
throw new TypeError("Second argument of app.setTimeOut must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setTimeout", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, false);\n  }\n\n  trustedFunction() {}\n\n  
trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass E
 vent {\n  constructor(data) {\n    this.change = data.change || "";\n    this.changeEx = data.changeEx || 
null;\n    this.commitKey = data.commitKey || 0;\n    this.fieldFull = data.fieldFull || false;\n    
this.keyDown = data.keyDown || false;\n    this.modifier = data.modifier || false;\n    this.name = 
data.name;\n    this.rc = true;\n    this.richChange = data.richChange || [];\n    this.richChangeEx = 
data.richChangeEx || [];\n    this.richValue = data.richValue || [];\n    this.selEnd = data.selEnd || -1;\n  
  this.selStart = data.selStart || -1;\n    this.shift = data.shift || false;\n    this.source = data.source 
|| null;\n    this.target = data.target || null;\n    this.targetName = "";\n    this.type = "Field";\n    
this.value = data.value || "";\n    this.willCommit = data.willCommit || false;\n  }\n\n}\n\nexports.Event = 
Event;\n\nclass EventDispatcher {\n  constructor(document, calculationOrder, objects) {\n    this._document = 
document;\n    this._calculationOrder = ca
 lculationOrder;\n    this._objects = objects;\n    this._document.obj._eventDispatcher = this;\n  }\n\n  
mergeChange(event) {\n    let value = event.value;\n\n    if (typeof value !== "string") {\n      value = 
value.toString();\n    }\n\n    const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : 
"";\n    const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : 
"";\n    return `${prefix}${event.change}${postfix}`;\n  }\n\n  dispatch(baseEvent) {\n    const id = 
baseEvent.id;\n\n    if (!(id in this._objects)) {\n      let event;\n\n      if (id === "doc" || id === 
"page") {\n        event = globalThis.event = new Event(baseEvent);\n        event.source = event.target = 
this._document.wrapped;\n        event.name = baseEvent.name;\n      }\n\n      if (id === "doc") {\n        
this._document.obj._dispatchDocEvent(event.name);\n      } else if (id === "page") {\n        
this._document.obj._dispatchPageEvent(event.name, base
 Event.actions, baseEvent.pageNumber);\n      }\n\n      return;\n    }\n\n    const name = baseEvent.name;\n 
   const source = this._objects[id];\n    const event = globalThis.event = new Event(baseEvent);\n    let 
savedChange;\n\n    if (source.obj._isButton()) {\n      source.obj._id = id;\n      event.value = 
source.obj._getExportValue(event.value);\n\n      if (name === "Action") {\n        source.obj._value = 
event.value;\n      }\n    }\n\n    switch (name) {\n      case "Keystroke":\n        savedChange = {\n       
   value: event.value,\n          change: event.change,\n          selStart: event.selStart,\n          
selEnd: event.selEnd\n        };\n        break;\n\n      case "Blur":\n      case "Focus":\n        
Object.defineProperty(event, "value", {\n          configurable: false,\n          writable: false,\n         
 enumerable: true,\n          value: event.value\n        });\n        break;\n\n      case "Validate":\n     
   this.runValidation(source, event);\n     
    return;\n\n      case "Action":\n        this.runActions(source, source, event, name);\n\n        if 
(this._document.obj.calculate) {\n          this.runCalculate(source, event);\n        }\n\n        return;\n 
   }\n\n    this.runActions(source, source, event, name);\n\n    if (name === "Keystroke") {\n      if 
(event.rc) {\n        if (event.willCommit) {\n          this.runValidation(source, event);\n        } else 
if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== 
savedChange.selEnd) {\n          source.wrapped.value = this.mergeChange(event);\n        }\n      } else if 
(!event.willCommit) {\n        source.obj._send({\n          id: source.obj._id,\n          value: 
savedChange.value,\n          selRange: [savedChange.selStart, savedChange.selEnd]\n        });\n      }\n    
}\n  }\n\n  runValidation(source, event) {\n    const hasRan = this.runActions(source, source, event, 
"Validate");\n\n    if (event.rc) {\n      if (ha
 sRan) {\n        source.wrapped.value = event.value;\n        source.wrapped.valueAsString = event.value;\n  
    } else {\n        source.obj.value = event.value;\n        source.obj.valueAsString = event.value;\n      
}\n\n      if (this._document.obj.calculate) {\n        this.runCalculate(source, event);\n      }\n\n      
event.value = source.obj.value;\n      this.runActions(source, source, event, "Format");\n      
source.wrapped.valueAsString = event.value;\n    }\n  }\n\n  runActions(source, target, event, eventName) {\n 
   event.source = source.wrapped;\n    event.target = target.wrapped;\n    event.name = eventName;\n    
event.targetName = target.obj.name;\n    event.rc = true;\n    return target.obj._runActions(event);\n  }\n\n 
 calculateNow() {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n    const first = 
this._calculationOrder[0];\n    const source = this._objects[first];\n    globalThis.event = new Event({});\n 
   this.runCalculate(source, globalThis.eve
 nt);\n  }\n\n  runCalculate(source, event) {\n    if (!this._calculationOrder) {\n      return;\n    }\n\n   
 for (const targetId of this._calculationOrder) {\n      if (!(targetId in this._objects)) {\n        
continue;\n      }\n\n      if (!this._document.obj.calculate) {\n        continue;\n      }\n\n      
event.value = null;\n      const target = this._objects[targetId];\n      this.runActions(source, target, 
event, "Calculate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n      if (event.value !== null) 
{\n        target.wrapped.value = event.value;\n      }\n\n      event.value = target.obj.value;\n      
this.runActions(target, target, event, "Validate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n 
     event.value = target.obj.value;\n      this.runActions(target, target, event, "Format");\n\n      if 
(event.value !== null) {\n        target.wrapped.valueAsString = event.value;\n      }\n    }\n  
}\n\n}\n\nexports.EventDispatcher = EventDispatcher
 ;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.FullScreen = void 
0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass 
FullScreen extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    
this._backgroundColor = [];\n    this._clickAdvances = true;\n    this._cursor = _constants.Cursor.hidden;\n  
  this._defaultTransition = "";\n    this._escapeExits = true;\n    this._isFullScreen = true;\n    
this._loop = false;\n    this._timeDelay = 3600;\n    this._usePageTiming = false;\n    this._useTimer = 
false;\n  }\n\n  get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(_) 
{}\n\n  get clickAdvances() {\n    return this._clickAdvances;\n  }\n\n  set clickAdvances(_) {}\n\n  get 
cursor() {\n    return this._cursor;\n  }\n\n  set cursor(_) {}\n\n  get default
 Transition() {\n    return this._defaultTransition;\n  }\n\n  set defaultTransition(_) {}\n\n  get 
escapeExits() {\n    return this._escapeExits;\n  }\n\n  set escapeExits(_) {}\n\n  get isFullScreen() {\n    
return this._isFullScreen;\n  }\n\n  set isFullScreen(_) {}\n\n  get loop() {\n    return this._loop;\n  
}\n\n  set loop(_) {}\n\n  get timeDelay() {\n    return this._timeDelay;\n  }\n\n  set timeDelay(_) {}\n\n  
get transitions() {\n    return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", 
"SplitHorizontalIn", "SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", 
"BlindsVertical", "BoxIn", "BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", 
"Random"];\n  }\n\n  set transitions(_) {\n    throw new Error("fullscreen.transitions is read-only");\n  
}\n\n  get usePageTiming() {\n    return this._usePageTiming;\n  }\n\n  set usePageTiming(_) {}\n\n  get 
useTimer() {\n    return this._useTimer;\n  }\n\n  set useTimer(_) {}\
 n\n}\n\nexports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, 
__w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Thermometer 
extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._cancelled = false;\n    
this._duration = 100;\n    this._text = "";\n    this._value = 0;\n  }\n\n  get cancelled() {\n    return 
this._cancelled;\n  }\n\n  set cancelled(_) {\n    throw new Error("thermometer.cancelled is read-only");\n  
}\n\n  get duration() {\n    return this._duration;\n  }\n\n  set duration(val) {\n    this._duration = 
val;\n  }\n\n  get text() {\n    return this._text;\n  }\n\n  set text(val) {\n    this._text = val;\n  }\n\n 
 get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  begin() 
{}\n\n  end() {}\n\n}\n\nexports.Thermometer 
 = Thermometer;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Console = void 
0;\n\nvar _pdf_object = __w_pdfjs_require__(7);\n\nclass Console extends _pdf_object.PDFObject {\n  clear() 
{\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  println(msg) {\n    if (typeof msg 
=== "string") {\n      this._send({\n        command: "println",\n        value: "PDF.js Console:: " + msg\n  
    });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(4);\n\nvar 
_pdf_object = __w_pdfjs_require__(7);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass InfoProxyHandler
  {\n  static get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) 
{\n    throw new Error(`doc.info.${prop} is read-only`);\n  }\n\n}\n\nclass Doc extends _pdf_object.PDFObject 
{\n  constructor(data) {\n    super(data);\n    this._expandos = globalThis;\n    this._baseURL = 
data.baseURL || "";\n    this._calculate = true;\n    this._delay = false;\n    this._dirty = false;\n    
this._disclosed = false;\n    this._media = undefined;\n    this._metadata = data.metadata || "";\n    
this._noautocomplete = undefined;\n    this._nocache = undefined;\n    this._spellDictionaryOrder = [];\n    
this._spellLanguageOrder = [];\n    this._printParams = null;\n    this._fields = new Map();\n    
this._fieldNames = [];\n    this._event = null;\n    this._author = data.Author || "";\n    this._creator = 
data.Creator || "";\n    this._creationDate = this._getDate(data.CreationDate) || null;\n    this._docID = 
data.docID || ["", ""];\n    this._documentFileName 
 = data.filename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = data.Keywords || 
"";\n    this._layout = data.layout || "";\n    this._modDate = this._getDate(data.ModDate) || null;\n    
this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    this._pageNum = data.pageNum || 0;\n    
this._producer = data.Producer || "";\n    this._subject = data.Subject || "";\n    this._title = data.Title 
|| "";\n    this._URL = data.URL || "";\n    this._info = new Proxy({\n      title: this._title,\n      
author: this._author,\n      authors: data.authors || [this._author],\n      subject: this._subject,\n      
keywords: this._keywords,\n      creator: this._creator,\n      producer: this._producer,\n      
creationdate: this._creationDate,\n      moddate: this._modDate,\n      trapped: data.Trapped || "Unknown"\n  
  }, InfoProxyHandler);\n    this._zoomType = _constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n 
   this._actions = (0, _common.createActi
 onsMap)(data.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = new Map();\n  }\n\n 
 _dispatchDocEvent(name) {\n    if (name === "Open") {\n      const dontRun = new Set(["WillClose", 
"WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n      for (const actionName of 
this._actions.keys()) {\n        if (!dontRun.has(actionName)) {\n          this._runActions(actionName);\n   
     }\n      }\n\n      this._runActions("OpenAction");\n    } else {\n      this._runActions(name);\n    
}\n  }\n\n  _dispatchPageEvent(name, actions, pageNumber) {\n    if (name === "PageOpen") {\n      if 
(!this._pageActions.has(pageNumber)) {\n        this._pageActions.set(pageNumber, (0, 
_common.createActionsMap)(actions));\n      }\n\n      this._pageNum = pageNumber - 1;\n    }\n\n    actions 
= this._pageActions.get(pageNumber)?.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _runAc
 tions(name) {\n    const actions = this._actions.get(name);\n\n    if (actions) {\n      for (const action 
of actions) {\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _addField(name, field) {\n    
this._fields.set(name, field);\n\n    this._fieldNames.push(name);\n\n    this._numFields++;\n  }\n\n  
_getDate(date) {\n    if (!date || date.length < 15 || !date.startsWith("D:")) {\n      return date;\n    
}\n\n    date = date.substring(2);\n    const year = date.substring(0, 4);\n    const month = 
date.substring(4, 6);\n    const day = date.substring(6, 8);\n    const hour = date.substring(8, 10);\n    
const minute = date.substring(10, 12);\n    const o = date.charAt(12);\n    let second, offsetPos;\n\n    if 
(o === "Z" || o === "+" || o === "-") {\n      second = "00";\n      offsetPos = 12;\n    } else {\n      
second = date.substring(12, 14);\n      offsetPos = 14;\n    }\n\n    const offset = 
date.substring(offsetPos).replaceAll("\'", "");\n    return new Date(`${yea
 r}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\n  }\n\n  get author() {\n    return 
this._author;\n  }\n\n  set author(_) {\n    throw new Error("doc.author is read-only");\n  }\n\n  get 
baseURL() {\n    return this._baseURL;\n  }\n\n  set baseURL(baseURL) {\n    this._baseURL = baseURL;\n  
}\n\n  get bookmarkRoot() {\n    return undefined;\n  }\n\n  set bookmarkRoot(_) {\n    throw new 
Error("doc.bookmarkRoot is read-only");\n  }\n\n  get calculate() {\n    return this._calculate;\n  }\n\n  
set calculate(calculate) {\n    this._calculate = calculate;\n  }\n\n  get creator() {\n    return 
this._creator;\n  }\n\n  set creator(_) {\n    throw new Error("doc.creator is read-only");\n  }\n\n  get 
dataObjects() {\n    return [];\n  }\n\n  set dataObjects(_) {\n    throw new Error("doc.dataObjects is 
read-only");\n  }\n\n  get delay() {\n    return this._delay;\n  }\n\n  set delay(delay) {\n    this._delay = 
delay;\n  }\n\n  get dirty() {\n    return this._dirty;\n  }\n\n  set
  dirty(dirty) {\n    this._dirty = dirty;\n  }\n\n  get disclosed() {\n    return this._disclosed;\n  }\n\n  
set disclosed(disclosed) {\n    this._disclosed = disclosed;\n  }\n\n  get docID() {\n    return 
this._docID;\n  }\n\n  set docID(_) {\n    throw new Error("doc.docID is read-only");\n  }\n\n  get 
documentFileName() {\n    return this._documentFileName;\n  }\n\n  set documentFileName(_) {\n    throw new 
Error("doc.documentFileName is read-only");\n  }\n\n  get dynamicXFAForm() {\n    return false;\n  }\n\n  set 
dynamicXFAForm(_) {\n    throw new Error("doc.dynamicXFAForm is read-only");\n  }\n\n  get external() {\n    
return true;\n  }\n\n  set external(_) {\n    throw new Error("doc.external is read-only");\n  }\n\n  get 
filesize() {\n    return this._filesize;\n  }\n\n  set filesize(_) {\n    throw new Error("doc.filesize is 
read-only");\n  }\n\n  get hidden() {\n    return false;\n  }\n\n  set hidden(_) {\n    throw new 
Error("doc.hidden is read-only");\n  }\n\n  get hostC
 ontainer() {\n    return undefined;\n  }\n\n  set hostContainer(_) {\n    throw new Error("doc.hostContainer 
is read-only");\n  }\n\n  get icons() {\n    return undefined;\n  }\n\n  set icons(_) {\n    throw new 
Error("doc.icons is read-only");\n  }\n\n  get info() {\n    return this._info;\n  }\n\n  set info(_) {\n    
throw new Error("doc.info is read-only");\n  }\n\n  get innerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set innerAppWindowRect(_) {\n    throw new Error("doc.innerAppWindowRect is read-only");\n  }\n\n  get 
innerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set innerDocWindowRect(_) {\n    throw new 
Error("doc.innerDocWindowRect is read-only");\n  }\n\n  get isModal() {\n    return false;\n  }\n\n  set 
isModal(_) {\n    throw new Error("doc.isModal is read-only");\n  }\n\n  get keywords() {\n    return 
this._keywords;\n  }\n\n  set keywords(_) {\n    throw new Error("doc.keywords is read-only");\n  }\n\n  get 
layout() {\n    return this._layout;\n  
 }\n\n  set layout(value) {\n    if (typeof value !== "string") {\n      return;\n    }\n\n    if (value !== 
"SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== 
"TwoColumnRight" && value !== "TwoPageRight") {\n      value = "SinglePage";\n    }\n\n    this._send({\n     
 command: "layout",\n      value\n    });\n\n    this._layout = value;\n  }\n\n  get media() {\n    return 
this._media;\n  }\n\n  set media(media) {\n    this._media = media;\n  }\n\n  get metadata() {\n    return 
this._metadata;\n  }\n\n  set metadata(metadata) {\n    this._metadata = metadata;\n  }\n\n  get modDate() 
{\n    return this._modDate;\n  }\n\n  set modDate(_) {\n    throw new Error("doc.modDate is read-only");\n  
}\n\n  get mouseX() {\n    return 0;\n  }\n\n  set mouseX(_) {\n    throw new Error("doc.mouseX is 
read-only");\n  }\n\n  get mouseY() {\n    return 0;\n  }\n\n  set mouseY(_) {\n    throw new 
Error("doc.mouseY is read-only");\n  }\n\n  get n
 oautocomplete() {\n    return this._noautocomplete;\n  }\n\n  set noautocomplete(noautocomplete) {\n    
this._noautocomplete = noautocomplete;\n  }\n\n  get nocache() {\n    return this._nocache;\n  }\n\n  set 
nocache(nocache) {\n    this._nocache = nocache;\n  }\n\n  get numFields() {\n    return this._numFields;\n  
}\n\n  set numFields(_) {\n    throw new Error("doc.numFields is read-only");\n  }\n\n  get numPages() {\n    
return this._numPages;\n  }\n\n  set numPages(_) {\n    throw new Error("doc.numPages is read-only");\n  
}\n\n  get numTemplates() {\n    return 0;\n  }\n\n  set numTemplates(_) {\n    throw new 
Error("doc.numTemplates is read-only");\n  }\n\n  get outerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set outerAppWindowRect(_) {\n    throw new Error("doc.outerAppWindowRect is read-only");\n  }\n\n  get 
outerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set outerDocWindowRect(_) {\n    throw new 
Error("doc.outerDocWindowRect is read-only");\n  }\n\n 
  get pageNum() {\n    return this._pageNum;\n  }\n\n  set pageNum(value) {\n    if (typeof value !== 
"number" || value < 0 || value >= this._numPages) {\n      return;\n    }\n\n    this._send({\n      command: 
"page-num",\n      value\n    });\n\n    this._pageNum = value;\n  }\n\n  get pageWindowRect() {\n    return 
[0, 0, 0, 0];\n  }\n\n  set pageWindowRect(_) {\n    throw new Error("doc.pageWindowRect is read-only");\n  
}\n\n  get path() {\n    return "";\n  }\n\n  set path(_) {\n    throw new Error("doc.path is read-only");\n  
}\n\n  get permStatusReady() {\n    return true;\n  }\n\n  set permStatusReady(_) {\n    throw new 
Error("doc.permStatusReady is read-only");\n  }\n\n  get producer() {\n    return this._producer;\n  }\n\n  
set producer(_) {\n    throw new Error("doc.producer is read-only");\n  }\n\n  get requiresFullSave() {\n    
return false;\n  }\n\n  set requiresFullSave(_) {\n    throw new Error("doc.requiresFullSave is 
read-only");\n  }\n\n  get securityHandler() {\
 n    return null;\n  }\n\n  set securityHandler(_) {\n    throw new Error("doc.securityHandler is 
read-only");\n  }\n\n  get selectedAnnots() {\n    return [];\n  }\n\n  set selectedAnnots(_) {\n    throw 
new Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    return [];\n  }\n\n  set 
sounds(_) {\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get spellDictionaryOrder() {\n    
return this._spellDictionaryOrder;\n  }\n\n  set spellDictionaryOrder(spellDictionaryOrder) {\n    
this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n  get spellLanguageOrder() {\n    return 
this._spellLanguageOrder;\n  }\n\n  set spellLanguageOrder(spellLanguageOrder) {\n    
this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get subject() {\n    return this._subject;\n  }\n\n  
set subject(_) {\n    throw new Error("doc.subject is read-only");\n  }\n\n  get templates() {\n    return 
[];\n  }\n\n  set templates(_) {\n    throw new Error("doc.templates is read-only");
 \n  }\n\n  get title() {\n    return this._title;\n  }\n\n  set title(_) {\n    throw new Error("doc.title 
is read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\n\n  set URL(_) {\n    throw new 
Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return undefined;\n  }\n\n  set viewState(_) 
{\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get xfa() {\n    return this._xfa;\n  }\n\n  
set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  get XFAForeground() {\n    return 
false;\n  }\n\n  set XFAForeground(_) {\n    throw new Error("doc.XFAForeground is read-only");\n  }\n\n  get 
zoomType() {\n    return this._zoomType;\n  }\n\n  set zoomType(type) {\n    if (typeof type !== "string") 
{\n      return;\n    }\n\n    switch (type) {\n      case _constants.ZoomType.none:\n        this._send({\n  
        command: "zoom",\n          value: 1\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitP:\n        this._send({\n    
       command: "zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitW:\n        this._send({\n          command: "zoom",\n          value: "page-width"\n  
      });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n        this._send({\n          command: 
"zoom",\n          value: "page-height"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: "auto"\n        
});\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case _constants.ZoomType.refW:\n        
break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = type;\n  }\n\n  get zoom() {\n    
return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== "number" || value < 8.33 || value > 
6400) {\n      return;\n    }\n\n    this._send({\n      command: "zoom",\n      value: value / 100\n    
});\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  add
 Icon() {}\n\n  addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() 
{}\n\n  addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  addWatermarkFromText() {}\n\n  addWeblinks() 
{}\n\n  bringToFront() {}\n\n  calculateNow() {\n    this._eventDispatcher.calculateNow();\n  }\n\n  
closeDoc() {}\n\n  colorConvertPage() {}\n\n  createDataObject() {}\n\n  createTemplate() {}\n\n  
deletePages() {}\n\n  deleteSound() {}\n\n  embedDocAsDataObject() {}\n\n  embedOutputIntent() {}\n\n  
encryptForRecipients() {}\n\n  encryptUsingPolicy() {}\n\n  exportAsFDF() {}\n\n  exportAsFDFStr() {}\n\n  
exportAsText() {}\n\n  exportAsXFDF() {}\n\n  exportAsXFDFStr() {}\n\n  exportDataObject() {}\n\n  
exportXFAData() {}\n\n  extractPages() {}\n\n  flattenPages() {}\n\n  getAnnot() {}\n\n  getAnnots() {}\n\n  
getAnnot3D() {}\n\n  getAnnots3D() {}\n\n  getColorConvertAction() {}\n\n  getDataObject() {}\n\n  
getDataObjectContents() {}\n\n  getField(cName) {\n    if (typeof
  cName === "object") {\n      cName = cName.cName;\n    }\n\n    if (typeof cName !== "string") {\n      
throw new TypeError("Invalid field name: must be a string");\n    }\n\n    const searchedField = 
this._fields.get(cName);\n\n    if (searchedField) {\n      return searchedField;\n    }\n\n    const parts = 
cName.split("#");\n    let childIndex = NaN;\n\n    if (parts.length === 2) {\n      childIndex = 
Math.floor(parseFloat(parts[1]));\n      cName = parts[0];\n    }\n\n    for (const [name, field] of 
this._fields.entries()) {\n      if (name.endsWith(cName)) {\n        if (!isNaN(childIndex)) {\n          
const children = this._getChildren(name);\n\n          if (childIndex < 0 || childIndex >= children.length) 
{\n            childIndex = 0;\n          }\n\n          if (childIndex < children.length) {\n            
this._fields.set(cName, children[childIndex]);\n\n            return children[childIndex];\n          }\n     
   }\n\n        this._fields.set(cName, field);\n\n    
     return field;\n      }\n    }\n\n    return null;\n  }\n\n  _getChildren(fieldName) {\n    const len = 
fieldName.length;\n    const children = [];\n    const pattern = /^\\.[^.]+$/;\n\n    for (const [name, 
field] of this._fields.entries()) {\n      if (name.startsWith(fieldName)) {\n        const finalPart = 
name.slice(len);\n\n        if (finalPart.match(pattern)) {\n          children.push(field);\n        }\n     
 }\n    }\n\n    return children;\n  }\n\n  getIcon() {}\n\n  getLegalWarnings() {}\n\n  getLinks() {}\n\n  
getNthFieldName(nIndex) {\n    if (typeof nIndex === "object") {\n      nIndex = nIndex.nIndex;\n    }\n\n    
if (typeof nIndex !== "number") {\n      throw new TypeError("Invalid field index: must be a number");\n    
}\n\n    if (0 <= nIndex && nIndex < this.numFields) {\n      return this._fieldNames[Math.trunc(nIndex)];\n  
  }\n\n    return null;\n  }\n\n  getNthTemplate() {\n    return null;\n  }\n\n  getOCGs() {}\n\n  
getOCGOrder() {}\n\n  getPageBox() {}
 \n\n  getPageLabel() {}\n\n  getPageNthWord() {}\n\n  getPageNthWordQuads() {}\n\n  getPageNumWords() {}\n\n 
 getPageRotation() {}\n\n  getPageTransition() {}\n\n  getPrintParams() {\n    if (!this._printParams) {\n    
  this._printParams = new _print_params.PrintParams({\n        lastPage: this._numPages - 1\n      });\n    
}\n\n    return this._printParams;\n  }\n\n  getSound() {}\n\n  getTemplate() {}\n\n  getURL() {}\n\n  
gotoNamedDest() {}\n\n  importAnFDF() {}\n\n  importAnXFDF() {}\n\n  importDataObject() {}\n\n  importIcon() 
{}\n\n  importSound() {}\n\n  importTextData() {}\n\n  importXFAData() {}\n\n  insertPages() {}\n\n  
mailDoc() {}\n\n  mailForm() {}\n\n  movePage() {}\n\n  newPage() {}\n\n  openDataObject() {}\n\n  print(bUI 
= true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = 
false, bAnnotations = true, printParams = null) {\n    if (typeof bUI === "object") {\n      nStart = 
bUI.nStart;\n      nEnd = bUI.nEnd;\n     
  bSilent = bUI.bSilent;\n      bShrinkToFit = bUI.bShrinkToFit;\n      bPrintAsImage = bUI.bPrintAsImage;\n  
    bReverse = bUI.bReverse;\n      bAnnotations = bUI.bAnnotations;\n      printParams = bUI.printParams;\n  
    bUI = bUI.bUI;\n    }\n\n    if (printParams) {\n      nStart = printParams.firstPage;\n      nEnd = 
printParams.lastPage;\n    }\n\n    if (typeof nStart === "number") {\n      nStart = Math.max(0, 
Math.trunc(nStart));\n    } else {\n      nStart = 0;\n    }\n\n    if (typeof nEnd === "number") {\n      
nEnd = Math.max(0, Math.trunc(nEnd));\n    } else {\n      nEnd = -1;\n    }\n\n    this._send({\n      
command: "print",\n      start: nStart,\n      end: nEnd\n    });\n  }\n\n  removeDataObject() {}\n\n  
removeField() {}\n\n  removeIcon() {}\n\n  removeLinks() {}\n\n  removeRequirement() {}\n\n  removeScript() 
{}\n\n  removeTemplate() {}\n\n  removeThumbnails() {}\n\n  removeWeblinks() {}\n\n  replacePages() {}\n\n  
resetForm(aFields = null) {\n    if (aFields 
 && !Array.isArray(aFields) && typeof aFields === "object") {\n      aFields = aFields.aFields;\n    }\n\n    
let mustCalculate = false;\n\n    if (aFields) {\n      for (const fieldName of aFields) {\n        if 
(!fieldName) {\n          continue;\n        }\n\n        const field = this.getField(fieldName);\n\n        
if (!field) {\n          continue;\n        }\n\n        field.value = field.defaultValue;\n        
field.valueAsString = field.value;\n        mustCalculate = true;\n      }\n    } else {\n      mustCalculate 
= this._fields.size !== 0;\n\n      for (const field of this._fields.values()) {\n        field.value = 
field.defaultValue;\n        field.valueAsString = field.value;\n      }\n    }\n\n    if (mustCalculate) {\n 
     this.calculateNow();\n    }\n  }\n\n  saveAs() {}\n\n  scroll() {}\n\n  selectPageNthWord() {}\n\n  
setAction() {}\n\n  setDataObjectContents() {}\n\n  setOCGOrder() {}\n\n  setPageAction() {}\n\n  
setPageBoxes() {}\n\n  setPageLabels() {}\n\n  se
 tPageRotations() {}\n\n  setPageTabOrder() {}\n\n  setPageTransitions() {}\n\n  spawnPageFromTemplate() 
{}\n\n  submitForm() {}\n\n  syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n  constructor(data) {\n    this.binaryOk = 
true;\n    this.bitmapDPI = 150;\n    this.booklet = {\n      binding: 0,\n      duplexMode: 0,\n      
subsetFrom: 0,\n      subsetTo: -1\n    };\n    this.colorOverride = 0;\n    this.colorProfile = "";\n    
this.constants = Object.freeze({\n      bookletBindings: Object.freeze({\n        Left: 0,\n        Right: 
1,\n        LeftTall: 2,\n        RightTall: 3\n      }),\n      bookletDuplexMode: Object.freeze({\n        
BothSides: 0,\n        FrontSideOnly: 1,\n        BasicSideOnly: 2\n      }),\n      colorOverrides: 
Object.freeze({\n        auto: 0,\n        gray
 : 1,\n        mono: 2\n      }),\n      fontPolicies: Object.freeze({\n        everyPage: 0,\n        
jobStart: 1,\n        pageRange: 2\n      }),\n      handling: Object.freeze({\n        none: 0,\n        
fit: 1,\n        shrink: 2,\n        tileAll: 3,\n        tileLarge: 4,\n        nUp: 5,\n        booklet: 
6\n      }),\n      interactionLevel: Object.freeze({\n        automatic: 0,\n        full: 1,\n        
silent: 2\n      }),\n      nUpPageOrders: Object.freeze({\n        Horizontal: 0,\n        
HorizontalReversed: 1,\n        Vertical: 2\n      }),\n      printContents: Object.freeze({\n        doc: 
0,\n        docAndComments: 1,\n        formFieldsOnly: 2\n      }),\n      flagValues: Object.freeze({\n     
   applyOverPrint: 1,\n        applySoftProofSettings: 1 << 1,\n        applyWorkingColorSpaces: 1 << 2,\n    
    emitHalftones: 1 << 3,\n        emitPostScriptXObjects: 1 << 4,\n        emitFormsAsPSForms: 1 << 5,\n    
    maxJP2KRes: 1 << 6,\n        setPageSize: 1 <
 < 7,\n        suppressBG: 1 << 8,\n        suppressCenter: 1 << 9,\n        suppressCJKFontSubst: 1 << 10,\n 
       suppressCropClip: 1 << 1,\n        suppressRotate: 1 << 12,\n        suppressTransfer: 1 << 13,\n      
  suppressUCR: 1 << 14,\n        useTrapAnnots: 1 << 15,\n        usePrintersMarks: 1 << 16\n      }),\n      
rasterFlagValues: Object.freeze({\n        textToOutline: 1,\n        strokesToOutline: 1 << 1,\n        
allowComplexClip: 1 << 2,\n        preserveOverprint: 1 << 3\n      }),\n      subsets: Object.freeze({\n     
   all: 0,\n        even: 1,\n        odd: 2\n      }),\n      tileMarks: Object.freeze({\n        none: 0,\n 
       west: 1,\n        east: 2\n      }),\n      usages: Object.freeze({\n        auto: 0,\n        use: 
1,\n        noUse: 2\n      })\n    });\n    this.downloadFarEastFonts = false;\n    this.fileName = "";\n    
this.firstPage = 0;\n    this.flags = 0;\n    this.fontPolicy = 0;\n    this.gradientDPI = 150;\n    
this.interactive = 1;\n  
   this.lastPage = data.lastPage;\n    this.npUpAutoRotate = false;\n    this.npUpNumPagesH = 2;\n    
this.npUpNumPagesV = 2;\n    this.npUpPageBorder = false;\n    this.npUpPageOrder = 0;\n    this.pageHandling 
= 0;\n    this.pageSubset = 0;\n    this.printAsImage = false;\n    this.printContent = 0;\n    
this.printerName = "";\n    this.psLevel = 0;\n    this.rasterFlags = 0;\n    this.reversePages = false;\n    
this.tileLabel = false;\n    this.tileMark = 0;\n    this.tileOverlap = 0;\n    this.tileScale = 1.0;\n    
this.transparencyLevel = 75;\n    this.usePrinterCRD = 0;\n    this.useT1Conversion = 0;\n  
}\n\n}\n\nexports.PrintParams = PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n  constructor() {\n    this.nosend = new 
Set(["delay"]);\n  }\n\n  get(obj, prop) {\n    if (prop in obj._expandos) {\n      const v
 al = obj._expandos[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n      
}\n\n      return val;\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) 
{\n      const val = obj[prop];\n\n      if (typeof val === "function") {\n        return val.bind(obj);\n    
  }\n\n      return val;\n    }\n\n    return undefined;\n  }\n\n  set(obj, prop, value) {\n    if 
(obj._kidIds) {\n      obj._kidIds.forEach(id => {\n        obj._appObjects[id].wrapped[prop] = value;\n      
});\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      const old = 
obj[prop];\n      obj[prop] = value;\n\n      if (!this.nosend.has(prop) && obj._send && obj._id !== null && 
typeof old !== "function") {\n        const data = {\n          id: obj._id\n        };\n        data[prop] = 
obj[prop];\n\n        if (!obj._siblings) {\n          obj._send(data);\n        } else {\n          
data.siblings = obj._siblings;\n\n  
         obj._send(data);\n        }\n      }\n    } else {\n      obj._expandos[prop] = value;\n    }\n\n    
return true;\n  }\n\n  has(obj, prop) {\n    return prop in obj._expandos || typeof prop === "string" && 
!prop.startsWith("_") && prop in obj;\n  }\n\n  getPrototypeOf(obj) {\n    return null;\n  }\n\n  
setPrototypeOf(obj, proto) {\n    return false;\n  }\n\n  isExtensible(obj) {\n    return true;\n  }\n\n  
preventExtensions(obj) {\n    return false;\n  }\n\n  getOwnPropertyDescriptor(obj, prop) {\n    if (prop in 
obj._expandos) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: 
obj._expandos[prop]\n      };\n    }\n\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in 
obj) {\n      return {\n        configurable: true,\n        enumerable: true,\n        value: obj[prop]\n    
  };\n    }\n\n    return undefined;\n  }\n\n  defineProperty(obj, key, descriptor) {\n    
Object.defineProperty(obj._expandos, key, descriptor);\
 n    return true;\n  }\n\n  deleteProperty(obj, prop) {\n    if (prop in obj._expandos) {\n      delete 
obj._expandos[prop];\n    }\n  }\n\n  ownKeys(obj) {\n    const fromExpandos = 
Reflect.ownKeys(obj._expandos);\n    const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith("_"));\n  
  return fromExpandos.concat(fromObj);\n  }\n\n}\n\nexports.ProxyHandler = ProxyHandler;\n\n/***/ }),\n/* 17 
*/\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Util = void 0;\n\nvar _pdf_object = 
__w_pdfjs_require__(7);\n\nclass Util extends _pdf_object.PDFObject {\n  constructor(data) {\n    
super(data);\n    this._scandCache = new Map();\n    this._months = ["January", "February", "March", "April", 
"May", "June", "July", "August", "September", "October", "November", "December"];\n    this._days = 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n    this.MILL
 ISECONDS_IN_DAY = 86400000;\n    this.MILLISECONDS_IN_WEEK = 604800000;\n    this._externalCall = 
data.externalCall;\n  }\n\n  printf(...args) {\n    if (args.length === 0) {\n      throw new Error("Invalid 
number of params in printf");\n    }\n\n    if (typeof args[0] !== "string") {\n      throw new 
TypeError("First argument of printf must be a string");\n    }\n\n    const pattern = /%(,[0-4])?([+ 
0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n    const PLUS = 1;\n    const SPACE = 2;\n    const ZERO = 4;\n    const 
HASH = 8;\n    let i = 0;\n    return args[0].replace(pattern, function (match, nDecSep, cFlags, nWidth, 
nPrecision, cConvChar) {\n      if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== "s" && cConvChar 
!== "x") {\n        const buf = ["%"];\n\n        for (const str of [nDecSep, cFlags, nWidth, nPrecision, 
cConvChar]) {\n          if (str) {\n            buf.push(str);\n          }\n        }\n\n        return 
buf.join("");\n      }\n\n      i++;\n\n      if (i === ar
 gs.length) {\n        throw new Error("Not enough arguments in printf");\n      }\n\n      const arg = 
args[i];\n\n      if (cConvChar === "s") {\n        return arg.toString();\n      }\n\n      let flags = 
0;\n\n      if (cFlags) {\n        for (const flag of cFlags) {\n          switch (flag) {\n            case 
"+":\n              flags |= PLUS;\n              break;\n\n            case " ":\n              flags |= 
SPACE;\n              break;\n\n            case "0":\n              flags |= ZERO;\n              break;\n\n 
           case "#":\n              flags |= HASH;\n              break;\n          }\n        }\n      }\n\n 
     cFlags = flags;\n\n      if (nWidth) {\n        nWidth = parseInt(nWidth);\n      }\n\n      let intPart 
= Math.trunc(arg);\n\n      if (cConvChar === "x") {\n        let hex = 
Math.abs(intPart).toString(16).toUpperCase();\n\n        if (nWidth !== undefined) {\n          hex = 
hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n        }\n\n       
  if (cFlags & HASH) {\n          hex = `0x${hex}`;\n        }\n\n        return hex;\n      }\n\n      if 
(nPrecision) {\n        nPrecision = parseInt(nPrecision.substring(1));\n      }\n\n      nDecSep = nDecSep ? 
nDecSep.substring(1) : "0";\n      const separators = {\n        0: [",", "."],\n        1: ["", "."],\n      
  2: [".", ","],\n        3: ["", ","],\n        4: ["\'", "."]\n      };\n      const [thousandSep, 
decimalSep] = separators[nDecSep];\n      let decPart = "";\n\n      if (cConvChar === "f") {\n        if 
(nPrecision !== undefined) {\n          decPart = Math.abs(arg - intPart).toFixed(nPrecision);\n        } 
else {\n          decPart = Math.abs(arg - intPart).toString();\n        }\n\n        if (decPart.length > 2) 
{\n          decPart = `${decimalSep}${decPart.substring(2)}`;\n        } else if (cFlags & HASH) {\n         
 decPart = ".";\n        } else {\n          decPart = "";\n        }\n      }\n\n      let sign = "";\n\n    
  if (intPart < 0) {\n      
   sign = "-";\n        intPart = -intPart;\n      } else if (cFlags & PLUS) {\n        sign = "+";\n      } 
else if (cFlags & SPACE) {\n        sign = " ";\n      }\n\n      if (thousandSep && intPart >= 1000) {\n     
   const buf = [];\n\n        while (true) {\n          buf.push((intPart % 1000).toString().padStart(3, 
"0"));\n          intPart = Math.trunc(intPart / 1000);\n\n          if (intPart < 1000) {\n            
buf.push(intPart.toString());\n            break;\n          }\n        }\n\n        intPart = 
buf.reverse().join(thousandSep);\n      } else {\n        intPart = intPart.toString();\n      }\n\n      let 
n = `${intPart}${decPart}`;\n\n      if (nWidth !== undefined) {\n        n = n.padStart(nWidth - 
sign.length, cFlags & ZERO ? "0" : " ");\n      }\n\n      return `${sign}${n}`;\n    });\n  }\n\n  
iconStreamFromIcon() {}\n\n  printd(cFormat, oDate) {\n    switch (cFormat) {\n      case 0:\n        return 
this.printd("D:yyyymmddHHMMss", oDate);\n\n      case 1:\n
         return this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n      case 2:\n        return 
this.printd("m/d/yy h:MM:ss tt", oDate);\n    }\n\n    const handlers = {\n      mmmm: data => {\n        
return this._months[data.month];\n      },\n      mmm: data => {\n        return 
this._months[data.month].substring(0, 3);\n      },\n      mm: data => {\n        return (data.month + 
1).toString().padStart(2, "0");\n      },\n      m: data => {\n        return (data.month + 1).toString();\n  
    },\n      dddd: data => {\n        return this._days[data.dayOfWeek];\n      },\n      ddd: data => {\n   
     return this._days[data.dayOfWeek].substring(0, 3);\n      },\n      dd: data => {\n        return 
data.day.toString().padStart(2, "0");\n      },\n      d: data => {\n        return data.day.toString();\n    
  },\n      yyyy: data => {\n        return data.year.toString();\n      },\n      yy: data => {\n        
return (data.year % 100).toString().padStart(2, "0");\n      },\n      HH: da
 ta => {\n        return data.hours.toString().padStart(2, "0");\n      },\n      H: data => {\n        
return data.hours.toString();\n      },\n      hh: data => {\n        return (1 + (data.hours + 11) % 
12).toString().padStart(2, "0");\n      },\n      h: data => {\n        return (1 + (data.hours + 11) % 
12).toString();\n      },\n      MM: data => {\n        return data.minutes.toString().padStart(2, "0");\n    
  },\n      M: data => {\n        return data.minutes.toString();\n      },\n      ss: data => {\n        
return data.seconds.toString().padStart(2, "0");\n      },\n      s: data => {\n        return 
data.seconds.toString();\n      },\n      tt: data => {\n        return data.hours < 12 ? "am" : "pm";\n      
},\n      t: data => {\n        return data.hours < 12 ? "a" : "p";\n      }\n    };\n    const data = {\n    
  year: oDate.getFullYear(),\n      month: oDate.getMonth(),\n      day: oDate.getDate(),\n      dayOfWeek: 
oDate.getDay(),\n      hours: oDate.getHours(),\n
       minutes: oDate.getMinutes(),\n      seconds: oDate.getSeconds()\n    };\n    const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n    return 
cFormat.replace(patterns, function (match, pattern) {\n      if (pattern in handlers) {\n        return 
handlers[pattern](data);\n      }\n\n      return pattern.charCodeAt(1);\n    });\n  }\n\n  printx(cFormat, 
cSource) {\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n    const buf = [];\n 
   let i = 0;\n    const ii = cSource.length;\n    let currCase = handlers[0];\n    let escaped = false;\n\n  
  for (const command of cFormat) {\n      if (escaped) {\n        buf.push(command);\n        escaped = 
false;\n        continue;\n      }\n\n      if (i >= ii) {\n        break;\n      }\n\n      switch (command) 
{\n        case "?":\n          buf.push(currCase(cSource.charAt(i++)));\n          break;\n\n        case 
"X":\n          while (i < ii) {\n            const char = 
 cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= 
char && char <= "9") {\n              buf.push(currCase(char));\n              break;\n            }\n        
  }\n\n          break;\n\n        case "A":\n          while (i < ii) {\n            const char = 
cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char && char <= "Z") {\n         
     buf.push(currCase(char));\n              break;\n            }\n          }\n\n          break;\n\n      
  case "9":\n          while (i < ii) {\n            const char = cSource.charAt(i++);\n\n            if ("0" 
<= char && char <= "9") {\n              buf.push(char);\n              break;\n            }\n          
}\n\n          break;\n\n        case "*":\n          while (i < ii) {\n            
buf.push(currCase(cSource.charAt(i++)));\n          }\n\n          break;\n\n        case "\\\\":\n          
escaped = true;\n          break;\n\n        case ">"
 :\n          currCase = handlers[1];\n          break;\n\n        case "<":\n          currCase = 
handlers[2];\n          break;\n\n        case "=":\n          currCase = handlers[0];\n          break;\n\n  
      default:\n          buf.push(command);\n      }\n    }\n\n    return buf.join("");\n  }\n\n  
scand(cFormat, cDate) {\n    if (cDate === "") {\n      return new Date();\n    }\n\n    switch (cFormat) {\n 
     case 0:\n        return this.scand("D:yyyymmddHHMMss", cDate);\n\n      case 1:\n        return 
this.scand("yyyy.mm.dd HH:MM:ss", cDate);\n\n      case 2:\n        return this.scand("m/d/yy h:MM:ss tt", 
cDate);\n    }\n\n    if (!this._scandCache.has(cFormat)) {\n      const months = this._months;\n      const 
days = this._days;\n      const handlers = {\n        mmmm: {\n          pattern: `(${months.join("|")})`,\n  
        action: (value, data) => {\n            data.month = months.indexOf(value);\n          }\n        
},\n        mmm: {\n          pattern: `(${mont
 hs.map(month => month.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            
data.month = months.findIndex(month => month.substring(0, 3) === value);\n          }\n        },\n        
mm: {\n          pattern: `([0-9]{2})`,\n          action: (value, data) => {\n            data.month = 
parseInt(value) - 1;\n          }\n        },\n        m: {\n          pattern: `([0-9]{1,2})`,\n          
action: (value, data) => {\n            data.month = parseInt(value) - 1;\n          }\n        },\n        
dddd: {\n          pattern: `(${days.join("|")})`,\n          action: (value, data) => {\n            
data.day = days.indexOf(value);\n          }\n        },\n        ddd: {\n          pattern: `(${days.map(day 
=> day.substring(0, 3)).join("|")})`,\n          action: (value, data) => {\n            data.day = 
days.findIndex(day => day.substring(0, 3) === value);\n          }\n        },\n        dd: {\n          
pattern: "([0-9]{2})",\n          action: (value, 
 data) => {\n            data.day = parseInt(value);\n          }\n        },\n        d: {\n          
pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.day = parseInt(value);\n     
     }\n        },\n        yyyy: {\n          pattern: "([0-9]{4})",\n          action: (value, data) => {\n 
           data.year = parseInt(value);\n          }\n        },\n        yy: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.year = 2000 + parseInt(value);\n        
  }\n        },\n        HH: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n      
      data.hours = parseInt(value);\n          }\n        },\n        H: {\n          pattern: 
"([0-9]{1,2})",\n          action: (value, data) => {\n            data.hours = parseInt(value);\n          
}\n        },\n        hh: {\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n        
    data.hours = parseInt(value);\n       
    }\n        },\n        h: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n   
         data.hours = parseInt(value);\n          }\n        },\n        MM: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.minutes = parseInt(value);\n          
}\n        },\n        M: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.minutes = parseInt(value);\n          }\n        },\n        ss: {\n          pattern: 
"([0-9]{2})",\n          action: (value, data) => {\n            data.seconds = parseInt(value);\n          
}\n        },\n        s: {\n          pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n       
     data.seconds = parseInt(value);\n          }\n        },\n        tt: {\n          pattern: 
"([aApP][mM])",\n          action: (value, data) => {\n            const char = value.charAt(0);\n            
data.am = char === "a" || char === "A";\n        
   }\n        },\n        t: {\n          pattern: "([aApP])",\n          action: (value, data) => {\n        
    data.am = value === "a" || value === "A";\n          }\n        }\n      };\n      const escapedFormat = 
cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n      const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n      const actions = [];\n      const re 
= escapedFormat.replace(patterns, function (match, patternElement) {\n        const {\n          pattern,\n   
       action\n        } = handlers[patternElement];\n        actions.push(action);\n        return 
pattern;\n      });\n\n      this._scandCache.set(cFormat, [re, actions]);\n    }\n\n    const [re, actions] 
= this._scandCache.get(cFormat);\n\n    const matches = new RegExp(re, "g").exec(cDate);\n\n    if (!matches 
|| matches.length !== actions.length + 1) {\n      return null;\n    }\n\n    const data = {\n      year: 
0,\n      month: 0,\n      day: 0,\n      hours: 0,\n  
     minutes: 0,\n      seconds: 0,\n      am: null\n    };\n    actions.forEach((action, i) => 
action(matches[i + 1], data));\n\n    if (data.am !== null) {\n      data.hours = data.hours % 12 + (data.am 
? 0 : 12);\n    }\n\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, 
data.seconds);\n  }\n\n  spansToXML() {}\n\n  stringFromStream() {}\n\n  xmlToSpans() {}\n\n}\n\nexports.Util 
= Util;\n\n/***/ })\n/******/ 
\t]);\n/************************************************************************/\n/******/ \t// The module 
cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require 
function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in 
cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== 
undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new 
module (and put it into the cache)\n/
 ******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id 
needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ 
\t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, 
module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the 
module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ 
\t\n/************************************************************************/\nvar __webpack_exports__ = 
{};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, "__esModule", ({\n  
value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n  enumerable: true,\n  get: function () 
{\n    return _initialization.initSandbox;\n  }\n}));\n\nvar _initialization = __w_pdfjs_require__(1)
 ;\n\nconst pdfjsVersion = \'2.10.377\';\nconst pdfjsBuild = \'156762c48\';\n})();\n\n/******/ \treturn 
__webpack_exports__;\n/******/ })()\n;\n});'];
     code.push("delete dump;");
     let success = false;
     let buf = 0;
diff --git a/third-party/pdfjs/build/pdf.worker.js b/third-party/pdfjs/build/pdf.worker.js
index 9f567eeae..f8e32abd7 100644
--- a/third-party/pdfjs/build/pdf.worker.js
+++ b/third-party/pdfjs/build/pdf.worker.js
@@ -50,13 +50,13 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _pdf_manager = __w_pdfjs_require__(7);
 
-var _writer = __w_pdfjs_require__(64);
+var _writer = __w_pdfjs_require__(71);
 
 var _is_node = __w_pdfjs_require__(4);
 
-var _message_handler = __w_pdfjs_require__(89);
+var _message_handler = __w_pdfjs_require__(99);
 
-var _worker_stream = __w_pdfjs_require__(90);
+var _worker_stream = __w_pdfjs_require__(100);
 
 var _core_utils = __w_pdfjs_require__(9);
 
@@ -125,7 +125,7 @@ class WorkerMessageHandler {
     const WorkerTasks = [];
     const verbosity = (0, _util.getVerbosityLevel)();
     const apiVersion = docParams.apiVersion;
-    const workerVersion = '2.9.359';
+    const workerVersion = '2.10.377';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version 
"${workerVersion}".`);
@@ -176,18 +176,20 @@ class WorkerMessageHandler {
         await pdfManager.ensureDoc("checkFirstPage");
       }
 
-      const [numPages, fingerprint, isPureXfa] = await Promise.all([pdfManager.ensureDoc("numPages"), 
pdfManager.ensureDoc("fingerprint"), pdfManager.ensureDoc("isPureXfa")]);
+      const isPureXfa = await pdfManager.ensureDoc("isPureXfa");
 
       if (isPureXfa) {
         const task = new WorkerTask("loadXfaFonts");
         startWorkerTask(task);
-        await pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task));
+        await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => 
finishWorkerTask(task)), pdfManager.loadXfaImages()]);
       }
 
+      const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc("numPages"), 
pdfManager.ensureDoc("fingerprints")]);
+      const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc("htmlForXfa") : null;
       return {
         numPages,
-        fingerprint,
-        isPureXfa
+        fingerprints,
+        htmlForXfa
       };
     }
 
@@ -369,7 +371,10 @@ class WorkerMessageHandler {
         disableFontFace: data.disableFontFace,
         ignoreErrors: data.ignoreErrors,
         isEvalSupported: data.isEvalSupported,
-        fontExtraProperties: data.fontExtraProperties
+        fontExtraProperties: data.fontExtraProperties,
+        useSystemFonts: data.useSystemFonts,
+        cMapUrl: data.cMapUrl,
+        standardFontDataUrl: data.standardFontDataUrl
       };
       getPdfManager(data, evaluatorOptions, data.enableXfa).then(function (newPdfManager) {
         if (terminated) {
@@ -442,13 +447,6 @@ class WorkerMessageHandler {
         return pdfManager.ensure(page, "jsActions");
       });
     });
-    handler.on("GetPageXfa", function wphSetupGetXfa({
-      pageIndex
-    }) {
-      return pdfManager.getPage(pageIndex).then(function (page) {
-        return pdfManager.ensure(page, "xfaData");
-      });
-    });
     handler.on("GetOutline", function wphSetupGetOutline(data) {
       return pdfManager.ensureCatalog("documentOutline");
     });
@@ -491,6 +489,7 @@ class WorkerMessageHandler {
       return pdfManager.ensureDoc("calculationOrderIds");
     });
     handler.on("SaveDocument", function ({
+      isPureXfa,
       numPages,
       annotationStorage,
       filename
@@ -498,25 +497,37 @@ class WorkerMessageHandler {
       pdfManager.requestLoadedStream();
       const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog("acroForm"), 
pdfManager.ensureDoc("xref"), pdfManager.ensureDoc("startXRef")];
 
-      for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {
-        promises.push(pdfManager.getPage(pageIndex).then(function (page) {
-          const task = new WorkerTask(`Save: page ${pageIndex}`);
-          startWorkerTask(task);
-          return page.save(handler, task, annotationStorage).finally(function () {
-            finishWorkerTask(task);
-          });
-        }));
+      if (isPureXfa) {
+        promises.push(pdfManager.serializeXfaData(annotationStorage));
+      } else {
+        for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {
+          promises.push(pdfManager.getPage(pageIndex).then(function (page) {
+            const task = new WorkerTask(`Save: page ${pageIndex}`);
+            return page.save(handler, task, annotationStorage).finally(function () {
+              finishWorkerTask(task);
+            });
+          }));
+        }
       }
 
       return Promise.all(promises).then(function ([stream, acroForm, xref, startXRef, ...refs]) {
         let newRefs = [];
+        let xfaData = null;
 
-        for (const ref of refs) {
-          newRefs = ref.filter(x => x !== null).reduce((a, b) => a.concat(b), newRefs);
-        }
+        if (isPureXfa) {
+          xfaData = refs[0];
 
-        if (newRefs.length === 0) {
-          return stream.bytes;
+          if (!xfaData) {
+            return stream.bytes;
+          }
+        } else {
+          for (const ref of refs) {
+            newRefs = ref.filter(x => x !== null).reduce((a, b) => a.concat(b), newRefs);
+          }
+
+          if (newRefs.length === 0) {
+            return stream.bytes;
+          }
         }
 
         const xfa = acroForm instanceof _primitives.Dict && acroForm.get("XFA") || [];
@@ -564,7 +575,8 @@ class WorkerMessageHandler {
           xrefInfo: newXrefInfo,
           newRefs,
           xref,
-          datasetsRef: xfaDatasets
+          datasetsRef: xfaDatasets,
+          xfaData
         });
       });
     });
@@ -922,6 +934,7 @@ exports.StreamType = StreamType;
 const FontType = {
   UNKNOWN: "UNKNOWN",
   TYPE1: "TYPE1",
+  TYPE1STANDARD: "TYPE1STANDARD",
   TYPE1C: "TYPE1C",
   CIDFONTTYPE0: "CIDFONTTYPE0",
   CIDFONTTYPE0C: "CIDFONTTYPE0C",
@@ -1826,25 +1839,8 @@ class Dict {
     dictArray,
     mergeSubDicts = false
   }) {
-    const mergedDict = new Dict(xref);
-
-    if (!mergeSubDicts) {
-      for (const dict of dictArray) {
-        if (!(dict instanceof Dict)) {
-          continue;
-        }
-
-        for (const [key, value] of Object.entries(dict._map)) {
-          if (mergedDict._map[key] === undefined) {
-            mergedDict._map[key] = value;
-          }
-        }
-      }
-
-      return mergedDict.size > 0 ? mergedDict : Dict.empty;
-    }
-
-    const properties = new Map();
+    const mergedDict = new Dict(xref),
+          properties = new Map();
 
     for (const dict of dictArray) {
       if (!(dict instanceof Dict)) {
@@ -1857,6 +1853,8 @@ class Dict {
         if (property === undefined) {
           property = [];
           properties.set(key, property);
+        } else if (!mergeSubDicts) {
+          continue;
         }
 
         property.push(value);
@@ -2225,6 +2223,14 @@ class BasePdfManager {
     return this.pdfDocument.loadXfaFonts(handler, task);
   }
 
+  loadXfaImages() {
+    return this.pdfDocument.loadXfaImages();
+  }
+
+  serializeXfaData(annotationStorage) {
+    return this.pdfDocument.serializeXfaData(annotationStorage);
+  }
+
   cleanup(manuallyTriggered = false) {
     return this.pdfDocument.cleanup(manuallyTriggered);
   }
@@ -2949,7 +2955,7 @@ exports.readUint16 = readUint16;
 exports.readUint32 = readUint32;
 exports.toRomanNumerals = toRomanNumerals;
 exports.validateCSSFont = validateCSSFont;
-exports.XRefParseException = exports.XRefEntryException = exports.MissingDataException = void 0;
+exports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = 
exports.MissingDataException = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -2998,6 +3004,10 @@ class MissingDataException extends _util.BaseException {
 
 exports.MissingDataException = MissingDataException;
 
+class ParserEOFException extends _util.BaseException {}
+
+exports.ParserEOFException = ParserEOFException;
+
 class XRefEntryException extends _util.BaseException {}
 
 exports.XRefEntryException = XRefEntryException;
@@ -3451,25 +3461,27 @@ var _annotation = __w_pdfjs_require__(12);
 
 var _base_stream = __w_pdfjs_require__(6);
 
-var _crypto = __w_pdfjs_require__(65);
+var _crypto = __w_pdfjs_require__(72);
+
+var _catalog = __w_pdfjs_require__(64);
 
-var _catalog = __w_pdfjs_require__(57);
+var _xfa_fonts = __w_pdfjs_require__(55);
 
 var _parser = __w_pdfjs_require__(17);
 
-var _object_loader = __w_pdfjs_require__(63);
+var _object_loader = __w_pdfjs_require__(70);
 
-var _operator_list = __w_pdfjs_require__(55);
+var _operator_list = __w_pdfjs_require__(62);
 
 var _evaluator = __w_pdfjs_require__(15);
 
 var _decode_stream = __w_pdfjs_require__(19);
 
-var _struct_tree = __w_pdfjs_require__(62);
+var _struct_tree = __w_pdfjs_require__(69);
 
-var _factory = __w_pdfjs_require__(67);
+var _factory = __w_pdfjs_require__(74);
 
-var _xref = __w_pdfjs_require__(88);
+var _xref = __w_pdfjs_require__(98);
 
 const DEFAULT_USER_UNIT = 1.0;
 const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
@@ -3484,6 +3496,7 @@ class Page {
     globalIdFactory,
     fontCache,
     builtInCMapCache,
+    standardFontDataCache,
     globalImageCache,
     nonBlendModesSet,
     xfaFactory
@@ -3495,6 +3508,7 @@ class Page {
     this.ref = ref;
     this.fontCache = fontCache;
     this.builtInCMapCache = builtInCMapCache;
+    this.standardFontDataCache = standardFontDataCache;
     this.globalImageCache = globalImageCache;
     this.nonBlendModesSet = nonBlendModesSet;
     this.evaluatorOptions = pdfManager.evaluatorOptions;
@@ -3547,11 +3561,7 @@ class Page {
 
   _getBoundingBox(name) {
     if (this.xfaData) {
-      const {
-        width,
-        height
-      } = this.xfaData.attributes.style;
-      return [0, 0, parseInt(width), parseInt(height)];
+      return this.xfaData.bbox;
     }
 
     const box = this._getInheritableProperty(name, true);
@@ -3613,7 +3623,7 @@ class Page {
     if (rotate % 90 !== 0) {
       rotate = 0;
     } else if (rotate >= 360) {
-      rotate = rotate % 360;
+      rotate %= 360;
     } else if (rotate < 0) {
       rotate = (rotate % 360 + 360) % 360;
     }
@@ -3637,7 +3647,9 @@ class Page {
 
   get xfaData() {
     if (this.xfaFactory) {
-      return (0, _util.shadow)(this, "xfaData", this.xfaFactory.getPage(this.pageIndex));
+      return (0, _util.shadow)(this, "xfaData", {
+        bbox: this.xfaFactory.getBoundingBox(this.pageIndex)
+      });
     }
 
     return (0, _util.shadow)(this, "xfaData", null);
@@ -3651,6 +3663,7 @@ class Page {
       idFactory: this._localIdFactory,
       fontCache: this.fontCache,
       builtInCMapCache: this.builtInCMapCache,
+      standardFontDataCache: this.standardFontDataCache,
       globalImageCache: this.globalImageCache,
       options: this.evaluatorOptions
     });
@@ -3700,6 +3713,7 @@ class Page {
       idFactory: this._localIdFactory,
       fontCache: this.fontCache,
       builtInCMapCache: this.builtInCMapCache,
+      standardFontDataCache: this.standardFontDataCache,
       globalImageCache: this.globalImageCache,
       options: this.evaluatorOptions
     });
@@ -3728,10 +3742,11 @@ class Page {
         };
       }
 
+      const annotationIntent = intent.startsWith("oplist-") ? intent.split("-")[1] : intent;
       const opListPromises = [];
 
       for (const annotation of annotations) {
-        if (intent === "display" && annotation.mustBeViewed(annotationStorage) || intent === "print" && 
annotation.mustBePrinted(annotationStorage)) {
+        if (annotationIntent === "display" && annotation.mustBeViewed(annotationStorage) || annotationIntent 
=== "print" && annotation.mustBePrinted(annotationStorage)) {
           opListPromises.push(annotation.getOperatorList(partialEvaluator, task, renderInteractiveForms, 
annotationStorage).catch(function (reason) {
             (0, _util.warn)("getOperatorList - ignoring annotation data during " + `"${task.name}" task: 
"${reason}".`);
             return null;
@@ -3774,6 +3789,7 @@ class Page {
         idFactory: this._localIdFactory,
         fontCache: this.fontCache,
         builtInCMapCache: this.builtInCMapCache,
+        standardFontDataCache: this.standardFontDataCache,
         globalImageCache: this.globalImageCache,
         options: this.evaluatorOptions
       });
@@ -4175,7 +4191,40 @@ class PDFDocument {
   }
 
   get isPureXfa() {
-    return this.xfaFactory !== null;
+    return this.xfaFactory && this.xfaFactory.isValid();
+  }
+
+  get htmlForXfa() {
+    if (this.xfaFactory) {
+      return this.xfaFactory.getPages();
+    }
+
+    return null;
+  }
+
+  async loadXfaImages() {
+    const xfaImagesDict = await this.pdfManager.ensureCatalog("xfaImages");
+
+    if (!xfaImagesDict) {
+      return;
+    }
+
+    const keys = xfaImagesDict.getKeys();
+    const objectLoader = new _object_loader.ObjectLoader(xfaImagesDict, keys, this.xref);
+    await objectLoader.load();
+    const xfaImages = new Map();
+
+    for (const key of keys) {
+      const stream = xfaImagesDict.get(key);
+
+      if (!(0, _primitives.isStream)(stream)) {
+        continue;
+      }
+
+      xfaImages.set(key, stream.getBytes());
+    }
+
+    this.xfaFactory.setImages(xfaImages);
   }
 
   async loadXfaFonts(handler, task) {
@@ -4199,17 +4248,28 @@ class PDFDocument {
       return;
     }
 
+    const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions);
+    options.useSystemFonts = false;
     const partialEvaluator = new _evaluator.PartialEvaluator({
       xref: this.xref,
       handler,
       pageIndex: -1,
       idFactory: this._globalIdFactory,
       fontCache: this.catalog.fontCache,
-      builtInCMapCache: this.catalog.builtInCMapCache
+      builtInCMapCache: this.catalog.builtInCMapCache,
+      standardFontDataCache: this.catalog.standardFontDataCache,
+      options
     });
     const operatorList = new _operator_list.OperatorList();
+    const pdfFonts = [];
     const initialState = {
-      font: null,
+      get font() {
+        return pdfFonts[pdfFonts.length - 1];
+      },
+
+      set font(font) {
+        pdfFonts.push(font);
+      },
 
       clone() {
         return this;
@@ -4229,7 +4289,8 @@ class PDFDocument {
         continue;
       }
 
-      const fontFamily = descriptor.get("FontFamily");
+      let fontFamily = descriptor.get("FontFamily");
+      fontFamily = fontFamily.replace(/[ ]+([0-9])/g, "$1");
       const fontWeight = descriptor.get("FontWeight");
       const italicAngle = -descriptor.get("ItalicAngle");
       const cssFontInfo = {
@@ -4249,6 +4310,80 @@ class PDFDocument {
     }
 
     await Promise.all(promises);
+    const missingFonts = this.xfaFactory.setFonts(pdfFonts);
+
+    if (!missingFonts) {
+      return;
+    }
+
+    options.ignoreErrors = true;
+    promises.length = 0;
+    pdfFonts.length = 0;
+    const reallyMissingFonts = new Set();
+
+    for (const missing of missingFonts) {
+      if (!(0, _xfa_fonts.getXfaFontWidths)(`${missing}-Regular`)) {
+        reallyMissingFonts.add(missing);
+      }
+    }
+
+    if (reallyMissingFonts.size) {
+      missingFonts.push("PdfJS-Fallback");
+    }
+
+    for (const missing of missingFonts) {
+      if (reallyMissingFonts.has(missing)) {
+        continue;
+      }
+
+      for (const fontInfo of [{
+        name: "Regular",
+        fontWeight: 400,
+        italicAngle: 0
+      }, {
+        name: "Bold",
+        fontWeight: 700,
+        italicAngle: 0
+      }, {
+        name: "Italic",
+        fontWeight: 400,
+        italicAngle: 12
+      }, {
+        name: "BoldItalic",
+        fontWeight: 700,
+        italicAngle: 12
+      }]) {
+        const name = `${missing}-${fontInfo.name}`;
+        const widths = (0, _xfa_fonts.getXfaFontWidths)(name);
+        const dict = new _primitives.Dict(null);
+        dict.set("BaseFont", _primitives.Name.get(name));
+        dict.set("Type", _primitives.Name.get("Font"));
+        dict.set("Subtype", _primitives.Name.get("TrueType"));
+        dict.set("Encoding", _primitives.Name.get("WinAnsiEncoding"));
+        const descriptor = new _primitives.Dict(null);
+        descriptor.set("Widths", widths);
+        dict.set("FontDescriptor", descriptor);
+        promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, 
operatorList, task, initialState, dict, {
+          fontFamily: missing,
+          fontWeight: fontInfo.fontWeight,
+          italicAngle: fontInfo.italicAngle
+        }).catch(function (reason) {
+          (0, _util.warn)(`loadXfaFonts: "${reason}".`);
+          return null;
+        }));
+      }
+    }
+
+    await Promise.all(promises);
+    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);
+  }
+
+  async serializeXfaData(annotationStorage) {
+    if (this.xfaFactory) {
+      return this.xfaFactory.serializeData(annotationStorage);
+    }
+
+    return null;
   }
 
   get formInfo() {
@@ -4361,24 +4496,36 @@ class PDFDocument {
     return (0, _util.shadow)(this, "documentInfo", docInfo);
   }
 
-  get fingerprint() {
-    let hash;
-    const idArray = this.xref.trailer.get("ID");
+  get fingerprints() {
+    function validate(data) {
+      return typeof data === "string" && data.length > 0 && data !== EMPTY_FINGERPRINT;
+    }
 
-    if (Array.isArray(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== 
EMPTY_FINGERPRINT) {
-      hash = (0, _util.stringToBytes)(idArray[0]);
-    } else {
-      hash = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, 
FINGERPRINT_FIRST_BYTES);
+    function hexString(hash) {
+      const buf = [];
+
+      for (let i = 0, ii = hash.length; i < ii; i++) {
+        const hex = hash[i].toString(16);
+        buf.push(hex.padStart(2, "0"));
+      }
+
+      return buf.join("");
     }
 
-    const fingerprintBuf = [];
+    const idArray = this.xref.trailer.get("ID");
+    let hashOriginal, hashModified;
 
-    for (let i = 0, ii = hash.length; i < ii; i++) {
-      const hex = hash[i].toString(16);
-      fingerprintBuf.push(hex.padStart(2, "0"));
+    if (Array.isArray(idArray) && validate(idArray[0])) {
+      hashOriginal = (0, _util.stringToBytes)(idArray[0]);
+
+      if (idArray[1] !== idArray[0] && validate(idArray[1])) {
+        hashModified = (0, _util.stringToBytes)(idArray[1]);
+      }
+    } else {
+      hashOriginal = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, 
FINGERPRINT_FIRST_BYTES);
     }
 
-    return (0, _util.shadow)(this, "fingerprint", fingerprintBuf.join(""));
+    return (0, _util.shadow)(this, "fingerprints", [hexString(hashOriginal), hashModified ? 
hexString(hashModified) : null]);
   }
 
   _getLinearizationPage(pageIndex) {
@@ -4425,6 +4572,7 @@ class PDFDocument {
         globalIdFactory: this._globalIdFactory,
         fontCache: catalog.fontCache,
         builtInCMapCache: catalog.builtInCMapCache,
+        standardFontDataCache: catalog.standardFontDataCache,
         globalImageCache: catalog.globalImageCache,
         nonBlendModesSet: catalog.nonBlendModesSet,
         xfaFactory: this.xfaFactory
@@ -4442,6 +4590,7 @@ class PDFDocument {
         globalIdFactory: this._globalIdFactory,
         fontCache: catalog.fontCache,
         builtInCMapCache: catalog.builtInCMapCache,
+        standardFontDataCache: catalog.standardFontDataCache,
         globalImageCache: catalog.globalImageCache,
         nonBlendModesSet: catalog.nonBlendModesSet,
         xfaFactory: null
@@ -4590,19 +4739,19 @@ var _default_appearance = __w_pdfjs_require__(13);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _catalog = __w_pdfjs_require__(57);
+var _catalog = __w_pdfjs_require__(64);
 
 var _colorspace = __w_pdfjs_require__(14);
 
-var _file_spec = __w_pdfjs_require__(59);
+var _file_spec = __w_pdfjs_require__(66);
 
-var _object_loader = __w_pdfjs_require__(63);
+var _object_loader = __w_pdfjs_require__(70);
 
-var _operator_list = __w_pdfjs_require__(55);
+var _operator_list = __w_pdfjs_require__(62);
 
 var _stream = __w_pdfjs_require__(10);
 
-var _writer = __w_pdfjs_require__(64);
+var _writer = __w_pdfjs_require__(71);
 
 class AnnotationFactory {
   static create(xref, ref, pdfManager, idFactory, collectFields) {
@@ -5063,7 +5212,7 @@ class Annotation {
     const transform = getTransformMatrix(data.rect, bbox, matrix);
     return resourcesPromise.then(resources => {
       const opList = new _operator_list.OperatorList();
-      opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);
+      opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix]);
       return evaluator.getOperatorList({
         stream: appearance,
         task,
@@ -5510,7 +5659,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 transform = getTransformMatrix(this.data.rect, bbox, matrix);
-      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.rect, transform, matrix]);
+      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, matrix]);
       const stream = new _stream.StringStream(content);
       return evaluator.getOperatorList({
         stream,
@@ -6149,6 +6298,10 @@ class ButtonWidgetAnnotation extends WidgetAnnotation {
       exportValues.push("Off");
     }
 
+    if (!exportValues.includes(this.data.fieldValue)) {
+      this.data.fieldValue = null;
+    }
+
     if (exportValues.length !== 2) {
       return;
     }
@@ -8084,21 +8237,23 @@ var _fonts_utils = __w_pdfjs_require__(38);
 
 var _encodings = __w_pdfjs_require__(37);
 
-var _unicode = __w_pdfjs_require__(40);
-
 var _standard_fonts = __w_pdfjs_require__(41);
 
-var _pattern = __w_pdfjs_require__(48);
+var _unicode = __w_pdfjs_require__(40);
+
+var _pattern = __w_pdfjs_require__(49);
 
 var _to_unicode_map = __w_pdfjs_require__(42);
 
-var _function = __w_pdfjs_require__(49);
+var _function = __w_pdfjs_require__(50);
 
 var _parser = __w_pdfjs_require__(17);
 
-var _image_utils = __w_pdfjs_require__(51);
+var _image_utils = __w_pdfjs_require__(52);
+
+var _stream = __w_pdfjs_require__(10);
 
-var _bidi = __w_pdfjs_require__(52);
+var _bidi = __w_pdfjs_require__(53);
 
 var _colorspace = __w_pdfjs_require__(14);
 
@@ -8108,22 +8263,25 @@ var _glyphlist = __w_pdfjs_require__(39);
 
 var _core_utils = __w_pdfjs_require__(9);
 
-var _metrics = __w_pdfjs_require__(53);
+var _metrics = __w_pdfjs_require__(54);
 
-var _murmurhash = __w_pdfjs_require__(54);
+var _xfa_fonts = __w_pdfjs_require__(55);
 
-var _stream = __w_pdfjs_require__(10);
+var _murmurhash = __w_pdfjs_require__(61);
 
-var _operator_list = __w_pdfjs_require__(55);
+var _operator_list = __w_pdfjs_require__(62);
 
-var _image = __w_pdfjs_require__(56);
+var _image = __w_pdfjs_require__(63);
 
 const DefaultPartialEvaluatorOptions = Object.freeze({
   maxImageSize: -1,
   disableFontFace: false,
   ignoreErrors: false,
   isEvalSupported: true,
-  fontExtraProperties: false
+  fontExtraProperties: false,
+  useSystemFonts: true,
+  cMapUrl: null,
+  standardFontDataUrl: null
 });
 const PatternType = {
   TILING: 1,
@@ -8249,6 +8407,7 @@ class PartialEvaluator {
     idFactory,
     fontCache,
     builtInCMapCache,
+    standardFontDataCache,
     globalImageCache,
     options = null
   }) {
@@ -8258,6 +8417,7 @@ class PartialEvaluator {
     this.idFactory = idFactory;
     this.fontCache = fontCache;
     this.builtInCMapCache = builtInCMapCache;
+    this.standardFontDataCache = standardFontDataCache;
     this.globalImageCache = globalImageCache;
     this.options = options || DefaultPartialEvaluatorOptions;
     this.parsingType3Font = false;
@@ -8272,9 +8432,9 @@ class PartialEvaluator {
     return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
   }
 
-  clone(newOptions = DefaultPartialEvaluatorOptions) {
+  clone(newOptions = null) {
     const newEvaluator = Object.create(this);
-    newEvaluator.options = newOptions;
+    newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);
     return newEvaluator;
   }
 
@@ -8404,27 +8564,25 @@ class PartialEvaluator {
       return cachedData;
     }
 
-    const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
-      name
-    });
-    const reader = readableStream.getReader();
-    const data = await new Promise(function (resolve, reject) {
-      function pump() {
-        reader.read().then(function ({
-          value,
-          done
-        }) {
-          if (done) {
-            return;
-          }
+    let data;
 
-          resolve(value);
-          pump();
-        }, reject);
+    if (this.options.cMapUrl !== null) {
+      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}".`);
       }
 
-      pump();
-    });
+      data = {
+        cMapData: new Uint8Array(await response.arrayBuffer()),
+        compressionType: _util.CMapCompressionType.BINARY
+      };
+    } else {
+      data = await this.handler.sendWithPromise("FetchBuiltInCMap", {
+        name
+      });
+    }
 
     if (data.compressionType !== _util.CMapCompressionType.NONE) {
       this.builtInCMapCache.set(name, data);
@@ -8433,6 +8591,48 @@ class PartialEvaluator {
     return data;
   }
 
+  async fetchStandardFontData(name) {
+    const cachedData = this.standardFontDataCache.get(name);
+
+    if (cachedData) {
+      return new _stream.Stream(cachedData);
+    }
+
+    if (this.options.useSystemFonts && name !== "Symbol" && name !== "ZapfDingbats") {
+      return null;
+    }
+
+    const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(),
+          filename = standardFontNameToFileName[name];
+    let data;
+
+    if (this.options.standardFontDataUrl !== null) {
+      const url = `${this.options.standardFontDataUrl}${filename}`;
+      const response = await fetch(url);
+
+      if (!response.ok) {
+        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${url}" with 
"${response.statusText}".`);
+      } else {
+        data = await response.arrayBuffer();
+      }
+    } else {
+      try {
+        data = await this.handler.sendWithPromise("FetchStandardFontData", {
+          filename
+        });
+      } catch (e) {
+        (0, _util.warn)(`fetchStandardFontData: failed to fetch file "${filename}" with "${e}".`);
+      }
+    }
+
+    if (!data) {
+      return null;
+    }
+
+    this.standardFontDataCache.set(name, data);
+    return new _stream.Stream(data);
+  }
+
   async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
     const dict = xobj.dict;
     const matrix = dict.getArray("Matrix");
@@ -9159,7 +9359,29 @@ class PartialEvaluator {
     });
   }
 
-  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache) {
+  parseShading({
+    keyObj,
+    shading,
+    resources,
+    localColorSpaceCache,
+    localShadingPatternCache,
+    matrix = null
+  }) {
+    let id = localShadingPatternCache.get(keyObj);
+
+    if (!id) {
+      var shadingFill = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
+
+      const patternIR = shadingFill.getIR();
+      id = `pattern_${this.idFactory.createObjId()}`;
+      localShadingPatternCache.set(keyObj, id);
+      this.handler.send("obj", [id, this.pageIndex, "Pattern", patternIR]);
+    }
+
+    return id;
+  }
+
+  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache, localShadingPatternCache) {
     const patternName = args.pop();
 
     if (patternName instanceof _primitives.Name) {
@@ -9175,7 +9397,7 @@ class PartialEvaluator {
         } catch (ex) {}
       }
 
-      let pattern = patterns.get(name);
+      const pattern = patterns.get(name);
 
       if (pattern) {
         const dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
@@ -9187,8 +9409,15 @@ class PartialEvaluator {
         } else if (typeNum === PatternType.SHADING) {
           const shading = dict.get("Shading");
           const matrix = dict.getArray("Matrix");
-          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
-          operatorList.addOp(fn, pattern.getIR());
+          const objId = this.parseShading({
+            keyObj: pattern,
+            shading,
+            matrix,
+            resources,
+            localColorSpaceCache,
+            localShadingPatternCache
+          });
+          operatorList.addOp(fn, ["Shading", objId]);
           return undefined;
         }
 
@@ -9329,6 +9558,7 @@ class PartialEvaluator {
     const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
     const localGStateCache = new _image_utils.LocalGStateCache();
     const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
+    const localShadingPatternCache = new Map();
 
     const xobjs = resources.get("XObject") || _primitives.Dict.empty;
 
@@ -9358,7 +9588,7 @@ class PartialEvaluator {
       task.ensureNotTerminated();
       timeSlotManager.reset();
       const operation = {};
-      let stop, i, ii, cs, name;
+      let stop, i, ii, cs, name, isValidName;
 
       while (!(stop = timeSlotManager.check())) {
         operation.args = null;
@@ -9372,9 +9602,10 @@ class PartialEvaluator {
 
         switch (fn | 0) {
           case _util.OPS.paintXObject:
+            isValidName = args[0] instanceof _primitives.Name;
             name = args[0].name;
 
-            if (name) {
+            if (isValidName) {
               const localImage = localImageCache.getByName(name);
 
               if (localImage) {
@@ -9385,7 +9616,7 @@ class PartialEvaluator {
             }
 
             next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
+              if (!isValidName) {
                 throw new _util.FormatError("XObject must be referred to by name.");
               }
 
@@ -9657,7 +9888,7 @@ class PartialEvaluator {
             cs = stateManager.state.fillColorSpace;
 
             if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
               return;
             }
 
@@ -9669,7 +9900,7 @@ class PartialEvaluator {
             cs = stateManager.state.strokeColorSpace;
 
             if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));
               return;
             }
 
@@ -9690,17 +9921,22 @@ class PartialEvaluator {
               throw new _util.FormatError("No shading object found");
             }
 
-            var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, 
self._pdfFunctionFactory, localColorSpaceCache);
-
-            var patternIR = shadingFill.getIR();
-            args = [patternIR];
+            const patternId = self.parseShading({
+              keyObj: shading,
+              shading,
+              resources,
+              localColorSpaceCache,
+              localShadingPatternCache
+            });
+            args = [patternId];
             fn = _util.OPS.shadingFill;
             break;
 
           case _util.OPS.setGState:
+            isValidName = args[0] instanceof _primitives.Name;
             name = args[0].name;
 
-            if (name) {
+            if (isValidName) {
               const localGStateObj = localGStateCache.getByName(name);
 
               if (localGStateObj) {
@@ -9714,7 +9950,7 @@ class PartialEvaluator {
             }
 
             next(new Promise(function (resolveGState, rejectGState) {
-              if (!name) {
+              if (!isValidName) {
                 throw new _util.FormatError("GState must be referred to by name.");
               }
 
@@ -9903,7 +10139,7 @@ class PartialEvaluator {
       const font = textState.font;
       const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, 
textState.textRise];
 
-      if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, 
_util.FONT_IDENTITY_MATRIX)) {
+      if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, 
_util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {
         const glyphHeight = font.bbox[3] - font.bbox[1];
 
         if (glyphHeight > 0) {
@@ -10019,6 +10255,14 @@ class PartialEvaluator {
 
     function handleSetFont(fontName, fontRef) {
       return self.loadFont(fontName, fontRef, resources).then(function (translated) {
+        if (!translated.font.isType3Font) {
+          return translated;
+        }
+
+        return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () {
+          return translated;
+        });
+      }).then(function (translated) {
         textState.font = translated.font;
         textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;
       });
@@ -10490,14 +10734,15 @@ class PartialEvaluator {
               xobjs = resources.get("XObject") || _primitives.Dict.empty;
             }
 
+            var isValidName = args[0] instanceof _primitives.Name;
             var name = args[0].name;
 
-            if (name && emptyXObjectCache.getByName(name)) {
+            if (isValidName && emptyXObjectCache.getByName(name)) {
               break;
             }
 
             next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
+              if (!isValidName) {
                 throw new _util.FormatError("XObject must be referred to by name.");
               }
 
@@ -10593,14 +10838,15 @@ class PartialEvaluator {
             return;
 
           case _util.OPS.setGState:
+            isValidName = args[0] instanceof _primitives.Name;
             name = args[0].name;
 
-            if (name && emptyGStateCache.getByName(name)) {
+            if (isValidName && emptyGStateCache.getByName(name)) {
               break;
             }
 
             next(new Promise(function (resolveGState, rejectGState) {
-              if (!name) {
+              if (!isValidName) {
                 throw new _util.FormatError("GState must be referred to by name.");
               }
 
@@ -10786,7 +11032,7 @@ class PartialEvaluator {
       if (isSymbolicFont) {
         encoding = _encodings.MacRomanEncoding;
 
-        if (!properties.file) {
+        if (!properties.file || properties.isInternalFont) {
           if (/Symbol/i.test(properties.name)) {
             encoding = _encodings.SymbolSetEncoding;
           } else if (/Dingbats|Wingdings/i.test(properties.name)) {
@@ -10816,7 +11062,7 @@ class PartialEvaluator {
     });
   }
 
-  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {
+  _simpleFontToUnicode(properties, forceGlyphs = false) {
     (0, _util.assert)(!properties.composite, "Must be a simple font.");
     const toUnicode = [];
     const encoding = properties.defaultEncoding.slice();
@@ -10871,7 +11117,7 @@ class PartialEvaluator {
               code = +codeStr;
 
               if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
-                return this._buildSimpleFontToUnicode(properties, true);
+                return this._simpleFontToUnicode(properties, true);
               }
             }
 
@@ -10905,53 +11151,53 @@ class PartialEvaluator {
       toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
     }
 
-    return new _to_unicode_map.ToUnicodeMap(toUnicode);
+    return toUnicode;
   }
 
-  buildToUnicode(properties) {
+  async buildToUnicode(properties) {
     properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
 
     if (properties.hasIncludedToUnicodeMap) {
       if (!properties.composite && properties.hasEncoding) {
-        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
+        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);
       }
 
-      return Promise.resolve(properties.toUnicode);
+      return properties.toUnicode;
     }
 
     if (!properties.composite) {
-      return Promise.resolve(this._buildSimpleFontToUnicode(properties));
+      return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties));
     }
 
     if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof 
_cmap.IdentityCMap) || properties.cidSystemInfo.registry === "Adobe" && (properties.cidSystemInfo.ordering 
=== "GB1" || properties.cidSystemInfo.ordering === "CNS1" || properties.cidSystemInfo.ordering === "Japan1" 
|| properties.cidSystemInfo.ordering === "Korea1"))) {
-      const registry = properties.cidSystemInfo.registry;
-      const ordering = properties.cidSystemInfo.ordering;
+      const {
+        registry,
+        ordering
+      } = properties.cidSystemInfo;
 
-      const ucs2CMapName = _primitives.Name.get(registry + "-" + ordering + "-UCS2");
+      const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`);
 
-      return _cmap.CMapFactory.create({
+      const ucs2CMap = await _cmap.CMapFactory.create({
         encoding: ucs2CMapName,
         fetchBuiltInCMap: this._fetchBuiltInCMapBound,
         useCMap: null
-      }).then(function (ucs2CMap) {
-        const cMap = properties.cMap;
-        const toUnicode = [];
-        cMap.forEach(function (charcode, cid) {
-          if (cid > 0xffff) {
-            throw new _util.FormatError("Max size of CID is 65,535");
-          }
+      });
+      const toUnicode = [];
+      properties.cMap.forEach(function (charcode, cid) {
+        if (cid > 0xffff) {
+          throw new _util.FormatError("Max size of CID is 65,535");
+        }
 
-          const ucs2 = ucs2CMap.lookup(cid);
+        const ucs2 = ucs2CMap.lookup(cid);
 
-          if (ucs2) {
-            toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
-          }
-        });
-        return new _to_unicode_map.ToUnicodeMap(toUnicode);
+        if (ucs2) {
+          toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
+        }
       });
+      return new _to_unicode_map.ToUnicodeMap(toUnicode);
     }
 
-    return Promise.resolve(new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, 
properties.lastChar));
+    return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar);
   }
 
   readToUnicode(cmapObj) {
@@ -11373,15 +11619,28 @@ class PartialEvaluator {
         properties = {
           type,
           name: baseFontName,
+          loadedName: baseDict.loadedName,
           widths: metrics.widths,
           defaultWidth: metrics.defaultWidth,
           flags,
           firstChar,
           lastChar,
           toUnicode,
+          xHeight: 0,
+          capHeight: 0,
+          italicAngle: 0,
           isType3Font
         };
         const widths = dict.get("Widths");
+        const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName);
+        let file = null;
+
+        if (standardFontName) {
+          properties.isStandardFont = true;
+          file = await this.fetchStandardFontData(standardFontName);
+          properties.isInternalFont = !!file;
+        }
+
         return this.extractDataStructures(dict, dict, properties).then(newProperties => {
           if (widths) {
             const glyphWidths = [];
@@ -11396,7 +11655,7 @@ class PartialEvaluator {
             newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
           }
 
-          return new _fonts.Font(baseFontName, null, newProperties);
+          return new _fonts.Font(baseFontName, file, newProperties);
         });
       }
     }
@@ -11444,6 +11703,10 @@ class PartialEvaluator {
       fontFile = new _stream.NullStream();
     }
 
+    let isStandardFont = false;
+    let isInternalFont = false;
+    let glyphScaleFactors = null;
+
     if (fontFile) {
       if (fontFile.dict) {
         const subtypeEntry = fontFile.dict.get("Subtype");
@@ -11456,6 +11719,25 @@ class PartialEvaluator {
         length2 = fontFile.dict.get("Length2");
         length3 = fontFile.dict.get("Length3");
       }
+    } else if (cssFontInfo) {
+      const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name);
+
+      if (standardFontName) {
+        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;
+        cssFontInfo.lineHeight = standardFontName.lineHeight || null;
+        glyphScaleFactors = standardFontName.factors || null;
+        fontFile = await this.fetchStandardFontData(standardFontName.name);
+        isInternalFont = !!fontFile;
+        type = "TrueType";
+      }
+    } else if (!isType3Font) {
+      const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name);
+
+      if (standardFontName) {
+        isStandardFont = true;
+        fontFile = await this.fetchStandardFontData(standardFontName);
+        isInternalFont = !!fontFile;
+      }
     }
 
     properties = {
@@ -11466,6 +11748,8 @@ class PartialEvaluator {
       length1,
       length2,
       length3,
+      isStandardFont,
+      isInternalFont,
       loadedName: baseDict.loadedName,
       composite,
       fixedPitch: false,
@@ -11473,15 +11757,16 @@ class PartialEvaluator {
       firstChar,
       lastChar,
       toUnicode,
-      bbox: descriptor.getArray("FontBBox"),
+      bbox: descriptor.getArray("FontBBox") || dict.getArray("FontBBox"),
       ascent: descriptor.get("Ascent"),
       descent: descriptor.get("Descent"),
-      xHeight: descriptor.get("XHeight"),
-      capHeight: descriptor.get("CapHeight"),
+      xHeight: descriptor.get("XHeight") || 0,
+      capHeight: descriptor.get("CapHeight") || 0,
       flags: descriptor.get("Flags"),
-      italicAngle: descriptor.get("ItalicAngle"),
+      italicAngle: descriptor.get("ItalicAngle") || 0,
       isType3Font,
-      cssFontInfo
+      cssFontInfo,
+      scaleFactors: glyphScaleFactors
     };
 
     if (composite) {
@@ -11595,9 +11880,9 @@ class TranslatedFont {
       throw new Error("Must be a Type3 font.");
     }
 
-    const type3Options = Object.create(evaluator.options);
-    type3Options.ignoreErrors = false;
-    const type3Evaluator = evaluator.clone(type3Options);
+    const type3Evaluator = evaluator.clone({
+      ignoreErrors: false
+    });
     type3Evaluator.parsingType3Font = true;
     const translatedFont = this.font,
           type3Dependencies = this.type3Dependencies;
@@ -11605,6 +11890,7 @@ class TranslatedFont {
     const charProcs = this.dict.get("CharProcs");
     const fontResources = this.dict.get("Resources") || resources;
     const charProcOperatorList = Object.create(null);
+    const isEmptyBBox = !translatedFont.bbox || (0, _util.isArrayEqual)(translatedFont.bbox, [0, 0, 0, 0]);
 
     for (const key of charProcs.getKeys()) {
       loadCharProcsPromise = loadCharProcsPromise.then(() => {
@@ -11617,7 +11903,7 @@ class TranslatedFont {
           operatorList
         }).then(() => {
           if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {
-            this._removeType3ColorOperators(operatorList);
+            this._removeType3ColorOperators(operatorList, isEmptyBBox);
           }
 
           charProcOperatorList[key] = operatorList.getIR();
@@ -11633,13 +11919,31 @@ class TranslatedFont {
       });
     }
 
-    this.type3Loaded = loadCharProcsPromise.then(function () {
+    this.type3Loaded = loadCharProcsPromise.then(() => {
       translatedFont.charProcOperatorList = charProcOperatorList;
+
+      if (this._bbox) {
+        translatedFont.isCharBBox = true;
+        translatedFont.bbox = this._bbox;
+      }
     });
     return this.type3Loaded;
   }
 
-  _removeType3ColorOperators(operatorList) {
+  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {
+    if (isEmptyBBox) {
+      if (!this._bbox) {
+        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];
+      }
+
+      const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2));
+
+      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);
+      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);
+      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);
+      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);
+    }
+
     let i = 1,
         ii = operatorList.length;
 
@@ -12672,7 +12976,7 @@ const BinaryCMapReader = function BinaryCMapReaderClosure() {
 
       while (i >= 0) {
         while (bufferSize < 8 && stack.length > 0) {
-          buffer = stack[--sp] << bufferSize | buffer;
+          buffer |= stack[--sp] << bufferSize;
           bufferSize += 7;
         }
 
@@ -13333,11 +13637,11 @@ class Parser {
           }
 
           if ((0, _primitives.isEOF)(this.buf1)) {
-            if (!this.recoveryMode) {
-              throw new _util.FormatError("End of file inside array");
+            if (this.recoveryMode) {
+              return array;
             }
 
-            return array;
+            throw new _core_utils.ParserEOFException("End of file inside array.");
           }
 
           this.shift();
@@ -13364,11 +13668,11 @@ class Parser {
           }
 
           if ((0, _primitives.isEOF)(this.buf1)) {
-            if (!this.recoveryMode) {
-              throw new _util.FormatError("End of file inside dictionary");
+            if (this.recoveryMode) {
+              return dict;
             }
 
-            return dict;
+            throw new _core_utils.ParserEOFException("End of file inside dictionary.");
           }
 
           if ((0, _primitives.isCmd)(this.buf2, "stream")) {
@@ -14272,6 +14576,8 @@ class Lexer {
 
     if (strBuf.length > 127) {
       (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`);
+    } else if (strBuf.length === 0) {
+      (0, _util.warn)("Name token is empty.");
     }
 
     return _primitives.Name.get(strBuf.join(""));
@@ -14591,7 +14897,7 @@ var _core_utils = __w_pdfjs_require__(9);
 class Ascii85Stream extends _decode_stream.DecodeStream {
   constructor(str, maybeLength) {
     if (maybeLength) {
-      maybeLength = 0.8 * maybeLength;
+      maybeLength *= 0.8;
     }
 
     super(maybeLength);
@@ -14868,7 +15174,7 @@ var _decode_stream = __w_pdfjs_require__(19);
 class AsciiHexStream extends _decode_stream.DecodeStream {
   constructor(str, maybeLength) {
     if (maybeLength) {
-      maybeLength = 0.5 * maybeLength;
+      maybeLength *= 0.5;
     }
 
     super(maybeLength);
@@ -17013,7 +17319,7 @@ function decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight
       patternIndex = 0;
 
       for (j = bitsPerValue - 1; j >= 0; j--) {
-        bit = grayScaleBitPlanes[j][mg][ng] ^ bit;
+        bit ^= grayScaleBitPlanes[j][mg][ng];
         patternIndex |= bit << j;
       }
 
@@ -22289,7 +22595,7 @@ class Transform {
 class IrreversibleTransform extends Transform {
   filter(x, offset, length) {
     const len = length >> 1;
-    offset = offset | 0;
+    offset |= 0;
     let j, n, current, next;
     const alpha = -1.586134342059924;
     const beta = -0.052980118572961;
@@ -22375,7 +22681,7 @@ class IrreversibleTransform extends Transform {
 class ReversibleTransform extends Transform {
   filter(x, offset, length) {
     const len = length >> 1;
-    offset = offset | 0;
+    offset |= 0;
     let j, n;
 
     for (j = offset, n = len + 1; n--; j += 2) {
@@ -22880,15 +23186,17 @@ var _cff_font = __w_pdfjs_require__(43);
 
 var _font_renderer = __w_pdfjs_require__(44);
 
+var _glyf = __w_pdfjs_require__(45);
+
 var _cmap = __w_pdfjs_require__(16);
 
-var _opentype_file_builder = __w_pdfjs_require__(45);
+var _opentype_file_builder = __w_pdfjs_require__(46);
 
 var _core_utils = __w_pdfjs_require__(9);
 
 var _stream = __w_pdfjs_require__(10);
 
-var _type1_font = __w_pdfjs_require__(46);
+var _type1_font = __w_pdfjs_require__(47);
 
 const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
 const PDF_GLYPH_SPACE_UNITS = 1000;
@@ -22915,7 +23223,7 @@ function adjustWidths(properties) {
 }
 
 function adjustToUnicode(properties, builtInEncoding) {
-  if (properties.hasIncludedToUnicodeMap) {
+  if (properties.isInternalFont) {
     return;
   }
 
@@ -22931,8 +23239,14 @@ function adjustToUnicode(properties, builtInEncoding) {
         glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
 
   for (const charCode in builtInEncoding) {
-    if (properties.hasEncoding && properties.differences[charCode] !== undefined) {
-      continue;
+    if (properties.hasIncludedToUnicodeMap) {
+      if (properties.toUnicode.has(charCode)) {
+        continue;
+      }
+    } else {
+      if (properties.hasEncoding && properties.differences[charCode] !== undefined) {
+        continue;
+      }
     }
 
     const glyphName = builtInEncoding[charCode];
@@ -22943,11 +23257,38 @@ function adjustToUnicode(properties, builtInEncoding) {
     }
   }
 
-  properties.toUnicode.amend(toUnicode);
+  if (toUnicode.length > 0) {
+    properties.toUnicode.amend(toUnicode);
+  }
+}
+
+function amendFallbackToUnicode(properties) {
+  if (!properties.fallbackToUnicode) {
+    return;
+  }
+
+  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {
+    return;
+  }
+
+  const toUnicode = [];
+
+  for (const charCode in properties.fallbackToUnicode) {
+    if (properties.toUnicode.has(charCode)) {
+      continue;
+    }
+
+    toUnicode[charCode] = properties.fallbackToUnicode[charCode];
+  }
+
+  if (toUnicode.length > 0) {
+    properties.toUnicode.amend(toUnicode);
+  }
 }
 
 class Glyph {
-  constructor(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
+  constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
+    this.originalCharCode = originalCharCode;
     this.fontChar = fontChar;
     this.unicode = unicode;
     this.accent = accent;
@@ -22958,8 +23299,8 @@ class Glyph {
     this.isInFont = isInFont;
   }
 
-  matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {
-    return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width 
=== width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace 
&& this.isInFont === isInFont;
+  matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont) {
+    return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === 
unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId 
=== operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;
   }
 
 }
@@ -23390,7 +23731,7 @@ function createOS2Table(properties, charstrings, override) {
 
 function createPostTable(properties) {
   const angle = Math.floor(properties.italicAngle * 2 ** 16);
-  return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, 
_util.string32)(properties.fixedPitch) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + 
"\x00\x00\x00\x00";
+  return "\x00\x03\x00\x00" + (0, _util.string32)(angle) + "\x00\x00" + "\x00\x00" + (0, 
_util.string32)(properties.fixedPitch ? 1 : 0) + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" + "\x00\x00\x00\x00" 
+ "\x00\x00\x00\x00";
 }
 
 function createPostscriptName(name) {
@@ -23443,6 +23784,7 @@ function createNameTable(name, proto) {
 class Font {
   constructor(name, file, properties) {
     this.name = name;
+    this.psName = null;
     this.mimetype = null;
     this.disableFontFace = false;
     this.loadedName = properties.loadedName;
@@ -23475,11 +23817,11 @@ class Font {
     this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;
     this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;
     this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;
+    this.lineHeight = this.ascent - this.descent;
     this.fontMatrix = properties.fontMatrix;
     this.bbox = properties.bbox;
     this.defaultEncoding = properties.defaultEncoding;
     this.toUnicode = properties.toUnicode;
-    this.fallbackToUnicode = properties.fallbackToUnicode || new _to_unicode_map.ToUnicodeMap();
     this.toFontChar = [];
 
     if (properties.type === "Type3") {
@@ -23551,8 +23893,9 @@ class Font {
       return;
     }
 
+    amendFallbackToUnicode(properties);
     this.data = data;
-    this.fontType = (0, _fonts_utils.getFontType)(type, subtype);
+    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
     this.fontMatrix = properties.fontMatrix;
     this.widths = properties.widths;
     this.defaultWidth = properties.defaultWidth;
@@ -23587,7 +23930,7 @@ class Font {
     const name = this.name;
     const type = this.type;
     const subtype = this.subtype;
-    let fontName = name.replace(/[,_]/g, "-").replace(/\s/g, "");
+    let fontName = (0, _fonts_utils.normalizeFontName)(name);
     const stdFontMap = (0, _standard_fonts.getStdFontMap)(),
           nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();
     const isStandardFont = !!stdFontMap[fontName];
@@ -23681,8 +24024,9 @@ class Font {
       this.toFontChar = map;
     }
 
+    amendFallbackToUnicode(properties);
     this.loadedName = fontName.split("-")[0];
-    this.fontType = (0, _fonts_utils.getFontType)(type, subtype);
+    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);
   }
 
   checkAndRepair(name, font, properties) {
@@ -23888,7 +24232,20 @@ class Font {
           }
         } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {
           useTable = true;
-          canBreak = true;
+          let correctlySorted = true;
+
+          if (i < numTables - 1) {
+            const nextBytes = file.peekBytes(2),
+                  nextPlatformId = int16(nextBytes[0], nextBytes[1]);
+
+            if (nextPlatformId < platformId) {
+              correctlySorted = false;
+            }
+          }
+
+          if (correctlySorted) {
+            canBreak = true;
+          }
         }
 
         if (useTable) {
@@ -24045,7 +24402,7 @@ class Font {
       };
     }
 
-    function sanitizeMetrics(file, header, metrics, numGlyphs, dupFirstEntry) {
+    function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {
       if (!header) {
         if (metrics) {
           metrics.data = null;
@@ -24065,13 +24422,22 @@ class Font {
       file.pos += 2;
       file.pos += 2;
       file.pos += 2;
-      file.pos += 2;
+      const caretOffset = file.getUint16();
       file.pos += 8;
       file.pos += 2;
       let numOfMetrics = file.getUint16();
 
+      if (caretOffset !== 0) {
+        const macStyle = int16(headTable.data[44], headTable.data[45]);
+
+        if (!(macStyle & 2)) {
+          header.data[22] = 0;
+          header.data[23] = 0;
+        }
+      }
+
       if (numOfMetrics > numGlyphs) {
-        (0, _util.info)("The numOfMetrics (" + numOfMetrics + ") should not be " + "greater than the 
numGlyphs (" + numGlyphs + ")");
+        (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs 
(${numGlyphs}).`);
         numOfMetrics = numGlyphs;
         header.data[34] = (numOfMetrics & 0xff00) >> 8;
         header.data[35] = numOfMetrics & 0x00ff;
@@ -24841,6 +25207,44 @@ class Font {
     font.pos = (font.start || 0) + tables.maxp.offset;
     const version = font.getInt32();
     const numGlyphs = font.getUint16();
+
+    if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) {
+      const {
+        scaleFactors
+      } = properties;
+      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);
+      const glyphs = new _glyf.GlyfTable({
+        glyfTable: tables.glyf.data,
+        isGlyphLocationsLong,
+        locaTable: tables.loca.data,
+        numGlyphs
+      });
+      glyphs.scale(scaleFactors);
+      const {
+        glyf,
+        loca,
+        isLocationLong
+      } = glyphs.write();
+      tables.glyf.data = glyf;
+      tables.loca.data = loca;
+
+      if (isLocationLong !== !!isGlyphLocationsLong) {
+        tables.head.data[50] = 0;
+        tables.head.data[51] = isLocationLong ? 1 : 0;
+      }
+
+      const metrics = tables.hmtx.data;
+
+      for (let i = 0; i < numGlyphs; i++) {
+        const j = 4 * i;
+        const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));
+        metrics[j] = advanceWidth >> 8 & 0xff;
+        metrics[j + 1] = advanceWidth & 0xff;
+        const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));
+        writeSignedInt16(metrics, j + 2, lsb);
+      }
+    }
+
     let numGlyphsOut = numGlyphs + 1;
     let dupFirstEntry = true;
 
@@ -24878,7 +25282,7 @@ class Font {
       delete tables["cvt "];
     }
 
-    sanitizeMetrics(font, tables.hhea, tables.hmtx, numGlyphsOut, dupFirstEntry);
+    sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);
 
     if (!tables.head) {
       throw new _util.FormatError('Required "head" table is not found');
@@ -24911,11 +25315,19 @@ class Font {
       unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),
       yMax: int16(tables.head.data[42], tables.head.data[43]),
       yMin: signedInt16(tables.head.data[38], tables.head.data[39]),
-      ascent: int16(tables.hhea.data[4], tables.hhea.data[5]),
-      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7])
+      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),
+      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),
+      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])
     };
     this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;
     this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;
+    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;
+
+    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {
+      this.lineHeight = this.cssFontInfo.lineHeight;
+    } else {
+      this.lineHeight = this.ascent - this.descent + this.lineGap;
+    }
 
     if (tables.post) {
       readPostScriptTable(tables.post, properties, numGlyphs);
@@ -24969,9 +25381,9 @@ class Font {
         for (let charCode = 0; charCode < 256; charCode++) {
           let glyphName;
 
-          if (this.differences && charCode in this.differences) {
+          if (this.differences[charCode] !== undefined) {
             glyphName = this.differences[charCode];
-          } else if (charCode in baseEncoding && baseEncoding[charCode] !== "") {
+          } else if (baseEncoding[charCode] !== "") {
             glyphName = baseEncoding[charCode];
           } else {
             glyphName = _encodings.StandardEncoding[charCode];
@@ -25083,6 +25495,7 @@ class Font {
     } else {
       const namePrototype = readNameTable(tables.name);
       tables.name.data = createNameTable(name, namePrototype);
+      this.psName = namePrototype[0][6] || null;
     }
 
     const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version);
@@ -25274,13 +25687,13 @@ class Font {
     width = this.widths[widthCode];
     width = (0, _util.isNum)(width) ? width : this.defaultWidth;
     const vmetric = this.vmetrics && this.vmetrics[widthCode];
-    let unicode = this.toUnicode.get(charcode) || this.fallbackToUnicode.get(charcode) || charcode;
+    let unicode = this.toUnicode.get(charcode) || charcode;
 
     if (typeof unicode === "number") {
       unicode = String.fromCharCode(unicode);
     }
 
-    let isInFont = (charcode in this.toFontChar);
+    let isInFont = this.toFontChar[charcode] !== undefined;
     fontCharCode = this.toFontChar[charcode] || charcode;
 
     if (this.missingFile) {
@@ -25321,8 +25734,8 @@ class Font {
 
     let glyph = this._glyphCache[charcode];
 
-    if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont)) {
-      glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);
+    if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, 
operatorListId, isSpace, isInFont)) {
+      glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, 
isInFont);
       this._glyphCache[charcode] = glyph;
     }
 
@@ -26061,6 +26474,9 @@ const CFFParser = function CFFParserClosure() {
         } else if (value === 11) {
           state.stackSize = stackSize;
           return true;
+        } else if (value === 0 && j === data.length) {
+          data[j - 1] = 14;
+          validationCommand = CharstringValidationData[14];
         } else {
           validationCommand = CharstringValidationData[value];
         }
@@ -26080,6 +26496,12 @@ const CFFParser = function CFFParserClosure() {
           if ("min" in validationCommand) {
             if (!state.undefStack && stackSize < validationCommand.min) {
               (0, _util.warn)("Not enough parameters for " + validationCommand.id + "; actual: " + stackSize 
+ ", expected: " + validationCommand.min);
+
+              if (stackSize === 0) {
+                data[j - 1] = 14;
+                return true;
+              }
+
               return false;
             }
           }
@@ -26379,7 +26801,7 @@ const CFFParser = function CFFParserClosure() {
         raw = bytes.subarray(dataStart, dataEnd);
       }
 
-      format = format & 0x7f;
+      format &= 0x7f;
       return new CFFEncoding(predefined, format, encoding, raw);
     }
 
@@ -26942,7 +27364,7 @@ class CFFCompiler {
     if (value >= -107 && value <= 107) {
       code = [value + 139];
     } else if (value >= 108 && value <= 1131) {
-      value = value - 108;
+      value -= 108;
       code = [(value >> 8) + 247, value & 0xff];
     } else if (value >= -1131 && value <= -108) {
       value = -value - 108;
@@ -27384,6 +27806,7 @@ Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
 exports.getFontType = getFontType;
+exports.normalizeFontName = normalizeFontName;
 exports.recoverGlyphName = recoverGlyphName;
 exports.type1FontGlyphMapping = type1FontGlyphMapping;
 exports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0;
@@ -27413,9 +27836,13 @@ exports.FontFlags = FontFlags;
 const MacStandardGlyphOrdering = [".notdef", ".null", "nonmarkingreturn", "space", "exclam", "quotedbl", 
"numbersign", "dollar", "percent", "ampersand", "quotesingle", "parenleft", "parenright", "asterisk", "plus", 
"comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", 
"nine", "colon", "semicolon", "less", "equal", "greater", "question", "at", "A", "B", "C", "D", "E", "F", 
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", 
"bracketleft", "backslash", "bracketright", "asciicircum", "underscore", "grave", "a", "b", "c", "d", "e", 
"f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", 
"braceleft", "bar", "braceright", "asciitilde", "Adieresis", "Aring", "Ccedilla", "Eacute", "Ntilde", 
"Odieresis", "Udieresis", "aacute", "agrave", "acircumflex", "adieresis", "atilde", "aring", "ccedilla", 
"eacute", "egrave", "ecircumflex", "edieresis",
  "iacute", "igrave", "icircumflex", "idieresis", "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", 
"otilde", "uacute", "ugrave", "ucircumflex", "udieresis", "dagger", "degree", "cent", "sterling", "section", 
"bullet", "paragraph", "germandbls", "registered", "copyright", "trademark", "acute", "dieresis", "notequal", 
"AE", "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", "yen", "mu", "partialdiff", 
"summation", "product", "pi", "integral", "ordfeminine", "ordmasculine", "Omega", "ae", "oslash", 
"questiondown", "exclamdown", "logicalnot", "radical", "florin", "approxequal", "Delta", "guillemotleft", 
"guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", "Otilde", "OE", "oe", "endash", 
"emdash", "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", "lozenge", "ydieresis", 
"Ydieresis", "fraction", "currency", "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", 
"periodcentered", "quotesinglbase", "quotedblbase", "perthousand",
  "Acircumflex", "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", 
"Igrave", "Oacute", "Ocircumflex", "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", "dotlessi", 
"circumflex", "tilde", "macron", "breve", "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", "caron", 
"Lslash", "lslash", "Scaron", "scaron", "Zcaron", "zcaron", "brokenbar", "Eth", "eth", "Yacute", "yacute", 
"Thorn", "thorn", "minus", "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", 
"onequarter", "threequarters", "franc", "Gbreve", "gbreve", "Idotaccent", "Scedilla", "scedilla", "Cacute", 
"cacute", "Ccaron", "ccaron", "dcroat"];
 exports.MacStandardGlyphOrdering = MacStandardGlyphOrdering;
 
-function getFontType(type, subtype) {
+function getFontType(type, subtype, isStandardFont = false) {
   switch (type) {
     case "Type1":
+      if (isStandardFont) {
+        return _util.FontType.TYPE1STANDARD;
+      }
+
       return subtype === "Type1C" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;
 
     case "CIDFontType0":
@@ -27465,7 +27892,19 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
   let glyphId, charCode, baseEncoding;
   const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);
 
-  if (properties.baseEncodingName) {
+  if (properties.isInternalFont) {
+    baseEncoding = builtInEncoding;
+
+    for (charCode = 0; charCode < baseEncoding.length; charCode++) {
+      glyphId = glyphNames.indexOf(baseEncoding[charCode]);
+
+      if (glyphId >= 0) {
+        charCodeToGlyphId[charCode] = glyphId;
+      } else {
+        charCodeToGlyphId[charCode] = 0;
+      }
+    }
+  } else if (properties.baseEncodingName) {
     baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);
 
     for (charCode = 0; charCode < baseEncoding.length; charCode++) {
@@ -27526,6 +27965,10 @@ function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {
   return charCodeToGlyphId;
 }
 
+function normalizeFontName(name) {
+  return name.replace(/[,_]/g, "-").replace(/\s/g, "");
+}
+
 /***/ }),
 /* 39 */
 /***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
@@ -39968,11 +40411,28 @@ function reverseIfRtl(chars) {
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = 
exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = exports.getSerifFonts = 
exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = void 0;
+exports.getStandardFontName = getStandardFontName;
+exports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = 
exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = exports.getSerifFonts = 
exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = exports.getFontNameToFileMap = void 0;
 
 var _core_utils = __w_pdfjs_require__(9);
 
+var _fonts_utils = __w_pdfjs_require__(38);
+
 const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
+  t["Times-Roman"] = "Times-Roman";
+  t.Helvetica = "Helvetica";
+  t.Courier = "Courier";
+  t.Symbol = "Symbol";
+  t["Times-Bold"] = "Times-Bold";
+  t["Helvetica-Bold"] = "Helvetica-Bold";
+  t["Courier-Bold"] = "Courier-Bold";
+  t.ZapfDingbats = "ZapfDingbats";
+  t["Times-Italic"] = "Times-Italic";
+  t["Helvetica-Oblique"] = "Helvetica-Oblique";
+  t["Courier-Oblique"] = "Courier-Oblique";
+  t["Times-BoldItalic"] = "Times-BoldItalic";
+  t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique";
+  t["Courier-BoldOblique"] = "Courier-BoldOblique";
   t.ArialNarrow = "Helvetica";
   t["ArialNarrow-Bold"] = "Helvetica-Bold";
   t["ArialNarrow-BoldItalic"] = "Helvetica-BoldOblique";
@@ -39993,7 +40453,6 @@ const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t["Arial-BoldMT"] = "Helvetica-Bold";
   t["Arial-ItalicMT"] = "Helvetica-Oblique";
   t.ArialMT = "Helvetica";
-  t["Courier-Bold"] = "Courier-Bold";
   t["Courier-BoldItalic"] = "Courier-BoldOblique";
   t["Courier-Italic"] = "Courier-Oblique";
   t.CourierNew = "Courier";
@@ -40004,12 +40463,8 @@ const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t["CourierNewPS-BoldMT"] = "Courier-Bold";
   t["CourierNewPS-ItalicMT"] = "Courier-Oblique";
   t.CourierNewPSMT = "Courier";
-  t.Helvetica = "Helvetica";
-  t["Helvetica-Bold"] = "Helvetica-Bold";
   t["Helvetica-BoldItalic"] = "Helvetica-BoldOblique";
-  t["Helvetica-BoldOblique"] = "Helvetica-BoldOblique";
   t["Helvetica-Italic"] = "Helvetica-Oblique";
-  t["Helvetica-Oblique"] = "Helvetica-Oblique";
   t["Symbol-Bold"] = "Symbol";
   t["Symbol-BoldItalic"] = "Symbol";
   t["Symbol-Italic"] = "Symbol";
@@ -40030,6 +40485,27 @@ const getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t["TimesNewRomanPSMT-Italic"] = "Times-Italic";
 });
 exports.getStdFontMap = getStdFontMap;
+const getFontNameToFileMap = (0, _core_utils.getLookupTableFactory)(function (t) {
+  t.Courier = "FoxitFixed.pfb";
+  t["Courier-Bold"] = "FoxitFixedBold.pfb";
+  t["Courier-BoldOblique"] = "FoxitFixedBoldItalic.pfb";
+  t["Courier-Oblique"] = "FoxitFixedItalic.pfb";
+  t.Helvetica = "FoxitSans.pfb";
+  t["Helvetica-Bold"] = "FoxitSansBold.pfb";
+  t["Helvetica-BoldOblique"] = "FoxitSansBoldItalic.pfb";
+  t["Helvetica-Oblique"] = "FoxitSansItalic.pfb";
+  t["Times-Roman"] = "FoxitSerif.pfb";
+  t["Times-Bold"] = "FoxitSerifBold.pfb";
+  t["Times-BoldItalic"] = "FoxitSerifBoldItalic.pfb";
+  t["Times-Italic"] = "FoxitSerifItalic.pfb";
+  t.Symbol = "FoxitSymbol.pfb";
+  t.ZapfDingbats = "FoxitDingbats.pfb";
+  t["LiberationSans-Regular"] = "LiberationSans-Regular.ttf";
+  t["LiberationSans-Bold"] = "LiberationSans-Bold.ttf";
+  t["LiberationSans-Italic"] = "LiberationSans-Italic.ttf";
+  t["LiberationSans-BoldItalic"] = "LiberationSans-BoldItalic.ttf";
+});
+exports.getFontNameToFileMap = getFontNameToFileMap;
 const getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
   t.Calibri = "Helvetica";
   t["Calibri-Bold"] = "Helvetica-Bold";
@@ -40702,6 +41178,12 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)
 });
 exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;
 
+function getStandardFontName(name) {
+  const fontName = (0, _fonts_utils.normalizeFontName)(name);
+  const stdFontMap = getStdFontMap();
+  return stdFontMap[fontName];
+}
+
 /***/ }),
 /* 42 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -40875,7 +41357,12 @@ class CFFFont {
       return charCodeToGlyphId;
     }
 
-    const encoding = cff.encoding ? cff.encoding.encoding : null;
+    let encoding = cff.encoding ? cff.encoding.encoding : null;
+
+    if (properties.isInternalFont) {
+      encoding = properties.defaultEncoding;
+    }
+
     charCodeToGlyphId = (0, _fonts_utils.type1FontGlyphMapping)(properties, encoding, charsets);
     return charCodeToGlyphId;
   }
@@ -41896,6 +42383,662 @@ exports.FontRendererFactory = FontRendererFactory;
 
 /***/ }),
 /* 45 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.GlyfTable = void 0;
+const ON_CURVE_POINT = 1 << 0;
+const X_SHORT_VECTOR = 1 << 1;
+const Y_SHORT_VECTOR = 1 << 2;
+const REPEAT_FLAG = 1 << 3;
+const X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;
+const Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;
+const OVERLAP_SIMPLE = 1 << 6;
+const ARG_1_AND_2_ARE_WORDS = 1 << 0;
+const ARGS_ARE_XY_VALUES = 1 << 1;
+const WE_HAVE_A_SCALE = 1 << 3;
+const MORE_COMPONENTS = 1 << 5;
+const WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
+const WE_HAVE_A_TWO_BY_TWO = 1 << 7;
+const WE_HAVE_INSTRUCTIONS = 1 << 8;
+
+class GlyfTable {
+  constructor({
+    glyfTable,
+    isGlyphLocationsLong,
+    locaTable,
+    numGlyphs
+  }) {
+    this.glyphs = [];
+    const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);
+    const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);
+    const offsetSize = isGlyphLocationsLong ? 4 : 2;
+    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);
+    let pos = 0;
+
+    for (let i = 0; i < numGlyphs; i++) {
+      pos += offsetSize;
+      const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos);
+
+      if (next === prev) {
+        this.glyphs.push(new Glyph({}));
+        continue;
+      }
+
+      const glyph = Glyph.parse(prev, glyf);
+      this.glyphs.push(glyph);
+      prev = next;
+    }
+  }
+
+  getSize() {
+    return this.glyphs.reduce((a, g) => {
+      const size = g.getSize();
+      return a + (size + 3 & ~3);
+    }, 0);
+  }
+
+  write() {
+    const totalSize = this.getSize();
+    const glyfTable = new DataView(new ArrayBuffer(totalSize));
+    const isLocationLong = totalSize > 0x1fffe;
+    const offsetSize = isLocationLong ? 4 : 2;
+    const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));
+
+    if (isLocationLong) {
+      locaTable.setUint32(0, 0);
+    } else {
+      locaTable.setUint16(0, 0);
+    }
+
+    let pos = 0;
+    let locaIndex = 0;
+
+    for (const glyph of this.glyphs) {
+      pos += glyph.write(pos, glyfTable);
+      pos = pos + 3 & ~3;
+      locaIndex += offsetSize;
+
+      if (isLocationLong) {
+        locaTable.setUint32(locaIndex, pos);
+      } else {
+        locaTable.setUint16(locaIndex, pos >> 1);
+      }
+    }
+
+    return {
+      isLocationLong,
+      loca: new Uint8Array(locaTable.buffer),
+      glyf: new Uint8Array(glyfTable.buffer)
+    };
+  }
+
+  scale(factors) {
+    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {
+      this.glyphs[i].scale(factors[i]);
+    }
+  }
+
+}
+
+exports.GlyfTable = GlyfTable;
+
+class Glyph {
+  constructor({
+    header = null,
+    simple = null,
+    composites = null
+  }) {
+    this.header = header;
+    this.simple = simple;
+    this.composites = composites;
+  }
+
+  static parse(pos, glyf) {
+    const [read, header] = GlyphHeader.parse(pos, glyf);
+    pos += read;
+
+    if (header.numberOfContours < 0) {
+      const composites = [];
+
+      while (true) {
+        const [n, composite] = CompositeGlyph.parse(pos, glyf);
+        pos += n;
+        composites.push(composite);
+
+        if (!(composite.flags & MORE_COMPONENTS)) {
+          break;
+        }
+      }
+
+      return new Glyph({
+        header,
+        composites
+      });
+    }
+
+    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);
+    return new Glyph({
+      header,
+      simple
+    });
+  }
+
+  getSize() {
+    if (!this.header) {
+      return 0;
+    }
+
+    const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0);
+    return this.header.getSize() + size;
+  }
+
+  write(pos, buf) {
+    if (!this.header) {
+      return 0;
+    }
+
+    const spos = pos;
+    pos += this.header.write(pos, buf);
+
+    if (this.simple) {
+      pos += this.simple.write(pos, buf);
+    } else {
+      for (const composite of this.composites) {
+        pos += composite.write(pos, buf);
+      }
+    }
+
+    return pos - spos;
+  }
+
+  scale(factor) {
+    if (!this.header) {
+      return;
+    }
+
+    const xMiddle = (this.header.xMin + this.header.xMax) / 2;
+    this.header.scale(xMiddle, factor);
+
+    if (this.simple) {
+      this.simple.scale(xMiddle, factor);
+    } else {
+      for (const composite of this.composites) {
+        composite.scale(xMiddle, factor);
+      }
+    }
+  }
+
+}
+
+class GlyphHeader {
+  constructor({
+    numberOfContours,
+    xMin,
+    yMin,
+    xMax,
+    yMax
+  }) {
+    this.numberOfContours = numberOfContours;
+    this.xMin = xMin;
+    this.yMin = yMin;
+    this.xMax = xMax;
+    this.yMax = yMax;
+  }
+
+  static parse(pos, glyf) {
+    return [10, new GlyphHeader({
+      numberOfContours: glyf.getInt16(pos),
+      xMin: glyf.getInt16(pos + 2),
+      yMin: glyf.getInt16(pos + 4),
+      xMax: glyf.getInt16(pos + 6),
+      yMax: glyf.getInt16(pos + 8)
+    })];
+  }
+
+  getSize() {
+    return 10;
+  }
+
+  write(pos, buf) {
+    buf.setInt16(pos, this.numberOfContours);
+    buf.setInt16(pos + 2, this.xMin);
+    buf.setInt16(pos + 4, this.yMin);
+    buf.setInt16(pos + 6, this.xMax);
+    buf.setInt16(pos + 8, this.yMax);
+    return 10;
+  }
+
+  scale(x, factor) {
+    this.xMin = Math.round(x + (this.xMin - x) * factor);
+    this.xMax = Math.round(x + (this.xMax - x) * factor);
+  }
+
+}
+
+class Contour {
+  constructor({
+    flags,
+    xCoordinates,
+    yCoordinates
+  }) {
+    this.xCoordinates = xCoordinates;
+    this.yCoordinates = yCoordinates;
+    this.flags = flags;
+  }
+
+}
+
+class SimpleGlyph {
+  constructor({
+    contours,
+    instructions
+  }) {
+    this.contours = contours;
+    this.instructions = instructions;
+  }
+
+  static parse(pos, glyf, numberOfContours) {
+    const endPtsOfContours = [];
+
+    for (let i = 0; i < numberOfContours; i++) {
+      const endPt = glyf.getUint16(pos);
+      pos += 2;
+      endPtsOfContours.push(endPt);
+    }
+
+    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;
+    const instructionLength = glyf.getUint16(pos);
+    pos += 2;
+    const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);
+    pos += instructionLength;
+    const flags = [];
+
+    for (let i = 0; i < numberOfPt; pos++, i++) {
+      let flag = glyf.getUint8(pos);
+      flags.push(flag);
+
+      if (flag & REPEAT_FLAG) {
+        const count = glyf.getUint8(++pos);
+        flag ^= REPEAT_FLAG;
+
+        for (let m = 0; m < count; m++) {
+          flags.push(flag);
+        }
+
+        i += count;
+      }
+    }
+
+    const allXCoordinates = [];
+    let xCoordinates = [];
+    let yCoordinates = [];
+    let pointFlags = [];
+    const contours = [];
+    let endPtsOfContoursIndex = 0;
+    let lastCoordinate = 0;
+
+    for (let i = 0; i < numberOfPt; i++) {
+      const flag = flags[i];
+
+      if (flag & X_SHORT_VECTOR) {
+        const x = glyf.getUint8(pos++);
+        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;
+        xCoordinates.push(lastCoordinate);
+      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {
+        xCoordinates.push(lastCoordinate);
+      } else {
+        lastCoordinate += glyf.getInt16(pos);
+        pos += 2;
+        xCoordinates.push(lastCoordinate);
+      }
+
+      if (endPtsOfContours[endPtsOfContoursIndex] === i) {
+        endPtsOfContoursIndex++;
+        allXCoordinates.push(xCoordinates);
+        xCoordinates = [];
+      }
+    }
+
+    lastCoordinate = 0;
+    endPtsOfContoursIndex = 0;
+
+    for (let i = 0; i < numberOfPt; i++) {
+      const flag = flags[i];
+
+      if (flag & Y_SHORT_VECTOR) {
+        const y = glyf.getUint8(pos++);
+        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;
+        yCoordinates.push(lastCoordinate);
+      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {
+        yCoordinates.push(lastCoordinate);
+      } else {
+        lastCoordinate += glyf.getInt16(pos);
+        pos += 2;
+        yCoordinates.push(lastCoordinate);
+      }
+
+      pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);
+
+      if (endPtsOfContours[endPtsOfContoursIndex] === i) {
+        xCoordinates = allXCoordinates[endPtsOfContoursIndex];
+        endPtsOfContoursIndex++;
+        contours.push(new Contour({
+          flags: pointFlags,
+          xCoordinates,
+          yCoordinates
+        }));
+        yCoordinates = [];
+        pointFlags = [];
+      }
+    }
+
+    return new SimpleGlyph({
+      contours,
+      instructions
+    });
+  }
+
+  getSize() {
+    let size = this.contours.length * 2 + 2 + this.instructions.length;
+    let lastX = 0;
+    let lastY = 0;
+
+    for (const contour of this.contours) {
+      size += contour.flags.length;
+
+      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {
+        const x = contour.xCoordinates[i];
+        const y = contour.yCoordinates[i];
+        let abs = Math.abs(x - lastX);
+
+        if (abs > 255) {
+          size += 2;
+        } else if (abs > 0) {
+          size += 1;
+        }
+
+        lastX = x;
+        abs = Math.abs(y - lastY);
+
+        if (abs > 255) {
+          size += 2;
+        } else if (abs > 0) {
+          size += 1;
+        }
+
+        lastY = y;
+      }
+    }
+
+    return size;
+  }
+
+  write(pos, buf) {
+    const spos = pos;
+    const xCoordinates = [];
+    const yCoordinates = [];
+    const flags = [];
+    let lastX = 0;
+    let lastY = 0;
+
+    for (const contour of this.contours) {
+      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {
+        let flag = contour.flags[i];
+        const x = contour.xCoordinates[i];
+        let delta = x - lastX;
+
+        if (delta === 0) {
+          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;
+          xCoordinates.push(0);
+        } else {
+          const abs = Math.abs(delta);
+
+          if (abs <= 255) {
+            flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;
+            xCoordinates.push(abs);
+          } else {
+            xCoordinates.push(delta);
+          }
+        }
+
+        lastX = x;
+        const y = contour.yCoordinates[i];
+        delta = y - lastY;
+
+        if (delta === 0) {
+          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;
+          yCoordinates.push(0);
+        } else {
+          const abs = Math.abs(delta);
+
+          if (abs <= 255) {
+            flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;
+            yCoordinates.push(abs);
+          } else {
+            yCoordinates.push(delta);
+          }
+        }
+
+        lastY = y;
+        flags.push(flag);
+      }
+
+      buf.setUint16(pos, xCoordinates.length - 1);
+      pos += 2;
+    }
+
+    buf.setUint16(pos, this.instructions.length);
+    pos += 2;
+
+    if (this.instructions.length) {
+      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);
+      pos += this.instructions.length;
+    }
+
+    for (const flag of flags) {
+      buf.setUint8(pos++, flag);
+    }
+
+    for (let i = 0, ii = xCoordinates.length; i < ii; i++) {
+      const x = xCoordinates[i];
+      const flag = flags[i];
+
+      if (flag & X_SHORT_VECTOR) {
+        buf.setUint8(pos++, x);
+      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {
+        buf.setInt16(pos, x);
+        pos += 2;
+      }
+    }
+
+    for (let i = 0, ii = yCoordinates.length; i < ii; i++) {
+      const y = yCoordinates[i];
+      const flag = flags[i];
+
+      if (flag & Y_SHORT_VECTOR) {
+        buf.setUint8(pos++, y);
+      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {
+        buf.setInt16(pos, y);
+        pos += 2;
+      }
+    }
+
+    return pos - spos;
+  }
+
+  scale(x, factor) {
+    for (const contour of this.contours) {
+      if (contour.xCoordinates.length === 0) {
+        continue;
+      }
+
+      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {
+        contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);
+      }
+    }
+  }
+
+}
+
+class CompositeGlyph {
+  constructor({
+    flags,
+    glyphIndex,
+    argument1,
+    argument2,
+    transf,
+    instructions
+  }) {
+    this.flags = flags;
+    this.glyphIndex = glyphIndex;
+    this.argument1 = argument1;
+    this.argument2 = argument2;
+    this.transf = transf;
+    this.instructions = instructions;
+  }
+
+  static parse(pos, glyf) {
+    const spos = pos;
+    const transf = [];
+    let flags = glyf.getUint16(pos);
+    const glyphIndex = glyf.getUint16(pos + 2);
+    pos += 4;
+    let argument1, argument2;
+
+    if (flags & ARG_1_AND_2_ARE_WORDS) {
+      if (flags & ARGS_ARE_XY_VALUES) {
+        argument1 = glyf.getInt16(pos);
+        argument2 = glyf.getInt16(pos + 2);
+      } else {
+        argument1 = glyf.getUint16(pos);
+        argument2 = glyf.getUint16(pos + 2);
+      }
+
+      pos += 4;
+      flags ^= ARG_1_AND_2_ARE_WORDS;
+    } else {
+      argument1 = glyf.getUint8(pos);
+      argument2 = glyf.getUint8(pos + 1);
+
+      if (flags & ARGS_ARE_XY_VALUES) {
+        const abs1 = argument1 & 0x7f;
+        argument1 = argument1 & 0x80 ? -abs1 : abs1;
+        const abs2 = argument2 & 0x7f;
+        argument2 = argument2 & 0x80 ? -abs2 : abs2;
+      }
+
+      pos += 2;
+    }
+
+    if (flags & WE_HAVE_A_SCALE) {
+      transf.push(glyf.getUint16(pos));
+      pos += 2;
+    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
+      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));
+      pos += 4;
+    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {
+      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos 
+ 6));
+      pos += 8;
+    }
+
+    let instructions = null;
+
+    if (flags & WE_HAVE_INSTRUCTIONS) {
+      const instructionLength = glyf.getUint16(pos);
+      pos += 2;
+      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);
+      pos += instructionLength;
+    }
+
+    return [pos - spos, new CompositeGlyph({
+      flags,
+      glyphIndex,
+      argument1,
+      argument2,
+      transf,
+      instructions
+    })];
+  }
+
+  getSize() {
+    let size = 2 + 2 + this.transf.length * 2;
+
+    if (this.flags & WE_HAVE_INSTRUCTIONS) {
+      size += 2 + this.instructions.length;
+    }
+
+    size += 2;
+
+    if (this.flags & 2) {
+      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 
127)) {
+        size += 2;
+      }
+    } else {
+      if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {
+        size += 2;
+      }
+    }
+
+    return size;
+  }
+
+  write(pos, buf) {
+    const spos = pos;
+
+    if (this.flags & ARGS_ARE_XY_VALUES) {
+      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 
127)) {
+        this.flags |= ARG_1_AND_2_ARE_WORDS;
+      }
+    } else {
+      if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {
+        this.flags |= ARG_1_AND_2_ARE_WORDS;
+      }
+    }
+
+    buf.setUint16(pos, this.flags);
+    buf.setUint16(pos + 2, this.glyphIndex);
+    pos += 4;
+
+    if (this.flags & ARG_1_AND_2_ARE_WORDS) {
+      if (this.flags & ARGS_ARE_XY_VALUES) {
+        buf.setInt16(pos, this.argument1);
+        buf.setInt16(pos + 2, this.argument2);
+      } else {
+        buf.setUint16(pos, this.argument1);
+        buf.setUint16(pos + 2, this.argument2);
+      }
+
+      pos += 4;
+    } else {
+      buf.setUint8(pos, this.argument1);
+      buf.setUint8(pos + 1, this.argument2);
+      pos += 2;
+    }
+
+    if (this.flags & WE_HAVE_INSTRUCTIONS) {
+      buf.setUint16(pos, this.instructions.length);
+      pos += 2;
+
+      if (this.instructions.length) {
+        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);
+        pos += this.instructions.length;
+      }
+    }
+
+    return pos - spos;
+  }
+
+  scale(x, factor) {}
+
+}
+
+/***/ }),
+/* 46 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -42035,7 +43178,7 @@ class OpenTypeFileBuilder {
 exports.OpenTypeFileBuilder = OpenTypeFileBuilder;
 
 /***/ }),
-/* 46 */
+/* 47 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -42053,7 +43196,7 @@ var _core_utils = __w_pdfjs_require__(9);
 
 var _stream = __w_pdfjs_require__(10);
 
-var _type1_parser = __w_pdfjs_require__(47);
+var _type1_parser = __w_pdfjs_require__(48);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -42400,7 +43543,7 @@ class Type1Font {
 exports.Type1Font = Type1Font;
 
 /***/ }),
-/* 47 */
+/* 48 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -42677,7 +43820,7 @@ const Type1CharString = function Type1CharStringClosure() {
 
           continue;
         } else if (value <= 246) {
-          value = value - 139;
+          value -= 139;
         } else if (value <= 250) {
           value = (value - 247) * 256 + encoded[++i] + 108;
         } else if (value <= 254) {
@@ -43123,7 +44266,7 @@ const Type1Parser = function Type1ParserClosure() {
 exports.Type1Parser = Type1Parser;
 
 /***/ }),
-/* 48 */
+/* 49 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -44068,7 +45211,7 @@ function getTilingPatternIR(operatorList, dict, color) {
 }
 
 /***/ }),
-/* 49 */
+/* 50 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -44083,9 +45226,9 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var _ps_parser = __w_pdfjs_require__(50);
+var _ps_parser = __w_pdfjs_require__(51);
 
-var _image_utils = __w_pdfjs_require__(51);
+var _image_utils = __w_pdfjs_require__(52);
 
 class PDFFunctionFactory {
   constructor({
@@ -44204,506 +45347,410 @@ function toNumberArray(arr) {
   return arr;
 }
 
-const PDFFunction = function PDFFunctionClosure() {
-  const CONSTRUCT_SAMPLED = 0;
-  const CONSTRUCT_INTERPOLATED = 2;
-  const CONSTRUCT_STICHED = 3;
-  const CONSTRUCT_POSTSCRIPT = 4;
-  return {
-    getSampleArray(size, outputSize, bps, stream) {
-      let i, ii;
-      let length = 1;
-
-      for (i = 0, ii = size.length; i < ii; i++) {
-        length *= size[i];
-      }
+class PDFFunction {
+  static getSampleArray(size, outputSize, bps, stream) {
+    let i, ii;
+    let length = 1;
 
-      length *= outputSize;
-      const array = new Array(length);
-      let codeSize = 0;
-      let codeBuf = 0;
-      const sampleMul = 1.0 / (2.0 ** bps - 1);
-      const strBytes = stream.getBytes((length * bps + 7) / 8);
-      let strIdx = 0;
+    for (i = 0, ii = size.length; i < ii; i++) {
+      length *= size[i];
+    }
 
-      for (i = 0; i < length; i++) {
-        while (codeSize < bps) {
-          codeBuf <<= 8;
-          codeBuf |= strBytes[strIdx++];
-          codeSize += 8;
-        }
+    length *= outputSize;
+    const array = new Array(length);
+    let codeSize = 0;
+    let codeBuf = 0;
+    const sampleMul = 1.0 / (2.0 ** bps - 1);
+    const strBytes = stream.getBytes((length * bps + 7) / 8);
+    let strIdx = 0;
 
-        codeSize -= bps;
-        array[i] = (codeBuf >> codeSize) * sampleMul;
-        codeBuf &= (1 << codeSize) - 1;
+    for (i = 0; i < length; i++) {
+      while (codeSize < bps) {
+        codeBuf <<= 8;
+        codeBuf |= strBytes[strIdx++];
+        codeSize += 8;
       }
 
-      return array;
-    },
-
-    getIR({
-      xref,
-      isEvalSupported,
-      fn
-    }) {
-      let dict = fn.dict;
-
-      if (!dict) {
-        dict = fn;
-      }
+      codeSize -= bps;
+      array[i] = (codeBuf >> codeSize) * sampleMul;
+      codeBuf &= (1 << codeSize) - 1;
+    }
 
-      const types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, 
this.constructPostScript];
-      const typeNum = dict.get("FunctionType");
-      const typeFn = types[typeNum];
+    return array;
+  }
 
-      if (!typeFn) {
-        throw new _util.FormatError("Unknown type of function");
-      }
+  static parse({
+    xref,
+    isEvalSupported,
+    fn
+  }) {
+    const dict = fn.dict || fn;
+    const typeNum = dict.get("FunctionType");
 
-      return typeFn.call(this, {
-        xref,
-        isEvalSupported,
-        fn,
-        dict
-      });
-    },
+    switch (typeNum) {
+      case 0:
+        return this.constructSampled({
+          xref,
+          isEvalSupported,
+          fn,
+          dict
+        });
 
-    fromIR({
-      xref,
-      isEvalSupported,
-      IR
-    }) {
-      const type = IR[0];
+      case 1:
+        break;
 
-      switch (type) {
-        case CONSTRUCT_SAMPLED:
-          return this.constructSampledFromIR({
-            xref,
-            isEvalSupported,
-            IR
-          });
+      case 2:
+        return this.constructInterpolated({
+          xref,
+          isEvalSupported,
+          dict
+        });
 
-        case CONSTRUCT_INTERPOLATED:
-          return this.constructInterpolatedFromIR({
-            xref,
-            isEvalSupported,
-            IR
-          });
+      case 3:
+        return this.constructStiched({
+          xref,
+          isEvalSupported,
+          dict
+        });
 
-        case CONSTRUCT_STICHED:
-          return this.constructStichedFromIR({
-            xref,
-            isEvalSupported,
-            IR
-          });
+      case 4:
+        return this.constructPostScript({
+          xref,
+          isEvalSupported,
+          fn,
+          dict
+        });
+    }
 
-        default:
-          return this.constructPostScriptFromIR({
-            xref,
-            isEvalSupported,
-            IR
-          });
-      }
-    },
+    throw new _util.FormatError("Unknown type of function");
+  }
 
-    parse({
-      xref,
-      isEvalSupported,
-      fn
-    }) {
-      const IR = this.getIR({
+  static parseArray({
+    xref,
+    isEvalSupported,
+    fnObj
+  }) {
+    if (!Array.isArray(fnObj)) {
+      return this.parse({
         xref,
         isEvalSupported,
-        fn
+        fn: fnObj
       });
-      return this.fromIR({
+    }
+
+    const fnArray = [];
+
+    for (let j = 0, jj = fnObj.length; j < jj; j++) {
+      fnArray.push(this.parse({
         xref,
         isEvalSupported,
-        IR
-      });
-    },
+        fn: xref.fetchIfRef(fnObj[j])
+      }));
+    }
 
-    parseArray({
-      xref,
-      isEvalSupported,
-      fnObj
-    }) {
-      if (!Array.isArray(fnObj)) {
-        return this.parse({
-          xref,
-          isEvalSupported,
-          fn: fnObj
-        });
+    return function (src, srcOffset, dest, destOffset) {
+      for (let i = 0, ii = fnArray.length; i < ii; i++) {
+        fnArray[i](src, srcOffset, dest, destOffset + i);
       }
+    };
+  }
 
-      const fnArray = [];
+  static constructSampled({
+    xref,
+    isEvalSupported,
+    fn,
+    dict
+  }) {
+    function toMultiArray(arr) {
+      const inputLength = arr.length;
+      const out = [];
+      let index = 0;
 
-      for (let j = 0, jj = fnObj.length; j < jj; j++) {
-        fnArray.push(this.parse({
-          xref,
-          isEvalSupported,
-          fn: xref.fetchIfRef(fnObj[j])
-        }));
+      for (let i = 0; i < inputLength; i += 2) {
+        out[index++] = [arr[i], arr[i + 1]];
       }
 
-      return function (src, srcOffset, dest, destOffset) {
-        for (let i = 0, ii = fnArray.length; i < ii; i++) {
-          fnArray[i](src, srcOffset, dest, destOffset + i);
-        }
-      };
-    },
+      return out;
+    }
 
-    constructSampled({
-      xref,
-      isEvalSupported,
-      fn,
-      dict
-    }) {
-      function toMultiArray(arr) {
-        const inputLength = arr.length;
-        const out = [];
-        let index = 0;
+    function interpolate(x, xmin, xmax, ymin, ymax) {
+      return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));
+    }
 
-        for (let i = 0; i < inputLength; i += 2) {
-          out[index] = [arr[i], arr[i + 1]];
-          ++index;
-        }
+    let domain = toNumberArray(dict.getArray("Domain"));
+    let range = toNumberArray(dict.getArray("Range"));
 
-        return out;
-      }
+    if (!domain || !range) {
+      throw new _util.FormatError("No domain or range");
+    }
 
-      let domain = toNumberArray(dict.getArray("Domain"));
-      let range = toNumberArray(dict.getArray("Range"));
+    const inputSize = domain.length / 2;
+    const outputSize = range.length / 2;
+    domain = toMultiArray(domain);
+    range = toMultiArray(range);
+    const size = toNumberArray(dict.getArray("Size"));
+    const bps = dict.get("BitsPerSample");
+    const order = dict.get("Order") || 1;
 
-      if (!domain || !range) {
-        throw new _util.FormatError("No domain or range");
-      }
+    if (order !== 1) {
+      (0, _util.info)("No support for cubic spline interpolation: " + order);
+    }
 
-      const inputSize = domain.length / 2;
-      const outputSize = range.length / 2;
-      domain = toMultiArray(domain);
-      range = toMultiArray(range);
-      const size = toNumberArray(dict.getArray("Size"));
-      const bps = dict.get("BitsPerSample");
-      const order = dict.get("Order") || 1;
+    let encode = toNumberArray(dict.getArray("Encode"));
 
-      if (order !== 1) {
-        (0, _util.info)("No support for cubic spline interpolation: " + order);
-      }
+    if (!encode) {
+      encode = [];
 
-      let encode = toNumberArray(dict.getArray("Encode"));
+      for (let i = 0; i < inputSize; ++i) {
+        encode.push([0, size[i] - 1]);
+      }
+    } else {
+      encode = toMultiArray(encode);
+    }
 
-      if (!encode) {
-        encode = [];
+    let decode = toNumberArray(dict.getArray("Decode"));
 
-        for (let i = 0; i < inputSize; ++i) {
-          encode.push([0, size[i] - 1]);
-        }
-      } else {
-        encode = toMultiArray(encode);
-      }
+    if (!decode) {
+      decode = range;
+    } else {
+      decode = toMultiArray(decode);
+    }
 
-      let decode = toNumberArray(dict.getArray("Decode"));
+    const samples = this.getSampleArray(size, outputSize, bps, fn);
+    return function constructSampledFn(src, srcOffset, dest, destOffset) {
+      const cubeVertices = 1 << inputSize;
+      const cubeN = new Float64Array(cubeVertices);
+      const cubeVertex = new Uint32Array(cubeVertices);
+      let i, j;
 
-      if (!decode) {
-        decode = range;
-      } else {
-        decode = toMultiArray(decode);
+      for (j = 0; j < cubeVertices; j++) {
+        cubeN[j] = 1;
       }
 
-      const samples = this.getSampleArray(size, outputSize, bps, fn);
-      return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, 2 ** bps - 1, 
range];
-    },
+      let k = outputSize,
+          pos = 1;
 
-    constructSampledFromIR({
-      xref,
-      isEvalSupported,
-      IR
-    }) {
-      function interpolate(x, xmin, xmax, ymin, ymax) {
-        return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));
-      }
-
-      return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) {
-        const m = IR[1];
-        const domain = IR[2];
-        const encode = IR[3];
-        const decode = IR[4];
-        const samples = IR[5];
-        const size = IR[6];
-        const n = IR[7];
-        const range = IR[9];
-        const cubeVertices = 1 << m;
-        const cubeN = new Float64Array(cubeVertices);
-        const cubeVertex = new Uint32Array(cubeVertices);
-        let i, j;
+      for (i = 0; i < inputSize; ++i) {
+        const domain_2i = domain[i][0];
+        const domain_2i_1 = domain[i][1];
+        const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);
+        let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);
+        const size_i = size[i];
+        e = Math.min(Math.max(e, 0), size_i - 1);
+        const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;
+        const n0 = e0 + 1 - e;
+        const n1 = e - e0;
+        const offset0 = e0 * k;
+        const offset1 = offset0 + k;
 
         for (j = 0; j < cubeVertices; j++) {
-          cubeN[j] = 1;
-        }
-
-        let k = n,
-            pos = 1;
-
-        for (i = 0; i < m; ++i) {
-          const domain_2i = domain[i][0];
-          const domain_2i_1 = domain[i][1];
-          const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);
-          let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);
-          const size_i = size[i];
-          e = Math.min(Math.max(e, 0), size_i - 1);
-          const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;
-          const n0 = e0 + 1 - e;
-          const n1 = e - e0;
-          const offset0 = e0 * k;
-          const offset1 = offset0 + k;
-
-          for (j = 0; j < cubeVertices; j++) {
-            if (j & pos) {
-              cubeN[j] *= n1;
-              cubeVertex[j] += offset1;
-            } else {
-              cubeN[j] *= n0;
-              cubeVertex[j] += offset0;
-            }
-          }
-
-          k *= size_i;
-          pos <<= 1;
-        }
-
-        for (j = 0; j < n; ++j) {
-          let rj = 0;
-
-          for (i = 0; i < cubeVertices; i++) {
-            rj += samples[cubeVertex[i] + j] * cubeN[i];
+          if (j & pos) {
+            cubeN[j] *= n1;
+            cubeVertex[j] += offset1;
+          } else {
+            cubeN[j] *= n0;
+            cubeVertex[j] += offset0;
           }
-
-          rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
-          dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
         }
-      };
-    },
-
-    constructInterpolated({
-      xref,
-      isEvalSupported,
-      fn,
-      dict
-    }) {
-      const c0 = toNumberArray(dict.getArray("C0")) || [0];
-      const c1 = toNumberArray(dict.getArray("C1")) || [1];
-      const n = dict.get("N");
-      const length = c0.length;
-      const diff = [];
 
-      for (let i = 0; i < length; ++i) {
-        diff.push(c1[i] - c0[i]);
+        k *= size_i;
+        pos <<= 1;
       }
 
-      return [CONSTRUCT_INTERPOLATED, c0, diff, n];
-    },
+      for (j = 0; j < outputSize; ++j) {
+        let rj = 0;
 
-    constructInterpolatedFromIR({
-      xref,
-      isEvalSupported,
-      IR
-    }) {
-      const c0 = IR[1];
-      const diff = IR[2];
-      const n = IR[3];
-      const length = diff.length;
-      return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) {
-        const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;
-
-        for (let j = 0; j < length; ++j) {
-          dest[destOffset + j] = c0[j] + x * diff[j];
+        for (i = 0; i < cubeVertices; i++) {
+          rj += samples[cubeVertex[i] + j] * cubeN[i];
         }
-      };
-    },
 
-    constructStiched({
-      xref,
-      isEvalSupported,
-      fn,
-      dict
-    }) {
-      const domain = toNumberArray(dict.getArray("Domain"));
-
-      if (!domain) {
-        throw new _util.FormatError("No domain");
+        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);
+        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);
       }
+    };
+  }
 
-      const inputSize = domain.length / 2;
+  static constructInterpolated({
+    xref,
+    isEvalSupported,
+    dict
+  }) {
+    const c0 = toNumberArray(dict.getArray("C0")) || [0];
+    const c1 = toNumberArray(dict.getArray("C1")) || [1];
+    const n = dict.get("N");
+    const diff = [];
 
-      if (inputSize !== 1) {
-        throw new _util.FormatError("Bad domain for stiched function");
-      }
+    for (let i = 0, ii = c0.length; i < ii; ++i) {
+      diff.push(c1[i] - c0[i]);
+    }
 
-      const fnRefs = dict.get("Functions");
-      const fns = [];
+    const length = diff.length;
+    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {
+      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;
 
-      for (let i = 0, ii = fnRefs.length; i < ii; ++i) {
-        fns.push(this.parse({
-          xref,
-          isEvalSupported,
-          fn: xref.fetchIfRef(fnRefs[i])
-        }));
+      for (let j = 0; j < length; ++j) {
+        dest[destOffset + j] = c0[j] + x * diff[j];
       }
+    };
+  }
 
-      const bounds = toNumberArray(dict.getArray("Bounds"));
-      const encode = toNumberArray(dict.getArray("Encode"));
-      return [CONSTRUCT_STICHED, domain, bounds, encode, fns];
-    },
+  static constructStiched({
+    xref,
+    isEvalSupported,
+    dict
+  }) {
+    const domain = toNumberArray(dict.getArray("Domain"));
 
-    constructStichedFromIR({
-      xref,
-      isEvalSupported,
-      IR
-    }) {
-      const domain = IR[1];
-      const bounds = IR[2];
-      const encode = IR[3];
-      const fns = IR[4];
-      const tmpBuf = new Float32Array(1);
-      return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) {
-        const clip = function constructStichedFromIRClip(v, min, max) {
-          if (v > max) {
-            v = max;
-          } else if (v < min) {
-            v = min;
-          }
+    if (!domain) {
+      throw new _util.FormatError("No domain");
+    }
 
-          return v;
-        };
+    const inputSize = domain.length / 2;
 
-        const v = clip(src[srcOffset], domain[0], domain[1]);
-        const length = bounds.length;
-        let i;
+    if (inputSize !== 1) {
+      throw new _util.FormatError("Bad domain for stiched function");
+    }
 
-        for (i = 0; i < length; ++i) {
-          if (v < bounds[i]) {
-            break;
-          }
-        }
+    const fnRefs = dict.get("Functions");
+    const fns = [];
 
-        let dmin = domain[0];
+    for (let i = 0, ii = fnRefs.length; i < ii; ++i) {
+      fns.push(this.parse({
+        xref,
+        isEvalSupported,
+        fn: xref.fetchIfRef(fnRefs[i])
+      }));
+    }
 
-        if (i > 0) {
-          dmin = bounds[i - 1];
+    const bounds = toNumberArray(dict.getArray("Bounds"));
+    const encode = toNumberArray(dict.getArray("Encode"));
+    const tmpBuf = new Float32Array(1);
+    return function constructStichedFn(src, srcOffset, dest, destOffset) {
+      const clip = function constructStichedFromIRClip(v, min, max) {
+        if (v > max) {
+          v = max;
+        } else if (v < min) {
+          v = min;
         }
 
-        let dmax = domain[1];
+        return v;
+      };
 
-        if (i < bounds.length) {
-          dmax = bounds[i];
-        }
+      const v = clip(src[srcOffset], domain[0], domain[1]);
+      const length = bounds.length;
+      let i;
 
-        const rmin = encode[2 * i];
-        const rmax = encode[2 * i + 1];
-        tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
-        fns[i](tmpBuf, 0, dest, destOffset);
-      };
-    },
+      for (i = 0; i < length; ++i) {
+        if (v < bounds[i]) {
+          break;
+        }
+      }
 
-    constructPostScript({
-      xref,
-      isEvalSupported,
-      fn,
-      dict
-    }) {
-      const domain = toNumberArray(dict.getArray("Domain"));
-      const range = toNumberArray(dict.getArray("Range"));
+      let dmin = domain[0];
 
-      if (!domain) {
-        throw new _util.FormatError("No domain.");
+      if (i > 0) {
+        dmin = bounds[i - 1];
       }
 
-      if (!range) {
-        throw new _util.FormatError("No range.");
+      let dmax = domain[1];
+
+      if (i < bounds.length) {
+        dmax = bounds[i];
       }
 
-      const lexer = new _ps_parser.PostScriptLexer(fn);
-      const parser = new _ps_parser.PostScriptParser(lexer);
-      const code = parser.parse();
-      return [CONSTRUCT_POSTSCRIPT, domain, range, code];
-    },
+      const rmin = encode[2 * i];
+      const rmax = encode[2 * i + 1];
+      tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);
+      fns[i](tmpBuf, 0, dest, destOffset);
+    };
+  }
 
-    constructPostScriptFromIR({
-      xref,
-      isEvalSupported,
-      IR
-    }) {
-      const domain = IR[1];
-      const range = IR[2];
-      const code = IR[3];
+  static constructPostScript({
+    xref,
+    isEvalSupported,
+    fn,
+    dict
+  }) {
+    const domain = toNumberArray(dict.getArray("Domain"));
+    const range = toNumberArray(dict.getArray("Range"));
 
-      if (isEvalSupported && _util.IsEvalSupportedCached.value) {
-        const compiled = new PostScriptCompiler().compile(code, domain, range);
+    if (!domain) {
+      throw new _util.FormatError("No domain.");
+    }
 
-        if (compiled) {
-          return new Function("src", "srcOffset", "dest", "destOffset", compiled);
-        }
+    if (!range) {
+      throw new _util.FormatError("No range.");
+    }
+
+    const lexer = new _ps_parser.PostScriptLexer(fn);
+    const parser = new _ps_parser.PostScriptParser(lexer);
+    const code = parser.parse();
+
+    if (isEvalSupported && _util.IsEvalSupportedCached.value) {
+      const compiled = new PostScriptCompiler().compile(code, domain, range);
+
+      if (compiled) {
+        return new Function("src", "srcOffset", "dest", "destOffset", compiled);
       }
+    }
 
-      (0, _util.info)("Unable to compile PS function");
-      const numOutputs = range.length >> 1;
-      const numInputs = domain.length >> 1;
-      const evaluator = new PostScriptEvaluator(code);
-      const cache = Object.create(null);
-      const MAX_CACHE_SIZE = 2048 * 4;
-      let cache_available = MAX_CACHE_SIZE;
-      const tmpBuf = new Float32Array(numInputs);
-      return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) {
-        let i, value;
-        let key = "";
-        const input = tmpBuf;
+    (0, _util.info)("Unable to compile PS function");
+    const numOutputs = range.length >> 1;
+    const numInputs = domain.length >> 1;
+    const evaluator = new PostScriptEvaluator(code);
+    const cache = Object.create(null);
+    const MAX_CACHE_SIZE = 2048 * 4;
+    let cache_available = MAX_CACHE_SIZE;
+    const tmpBuf = new Float32Array(numInputs);
+    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {
+      let i, value;
+      let key = "";
+      const input = tmpBuf;
 
-        for (i = 0; i < numInputs; i++) {
-          value = src[srcOffset + i];
-          input[i] = value;
-          key += value + "_";
-        }
+      for (i = 0; i < numInputs; i++) {
+        value = src[srcOffset + i];
+        input[i] = value;
+        key += value + "_";
+      }
 
-        const cachedValue = cache[key];
+      const cachedValue = cache[key];
 
-        if (cachedValue !== undefined) {
-          dest.set(cachedValue, destOffset);
-          return;
-        }
+      if (cachedValue !== undefined) {
+        dest.set(cachedValue, destOffset);
+        return;
+      }
 
-        const output = new Float32Array(numOutputs);
-        const stack = evaluator.execute(input);
-        const stackIndex = stack.length - numOutputs;
+      const output = new Float32Array(numOutputs);
+      const stack = evaluator.execute(input);
+      const stackIndex = stack.length - numOutputs;
 
-        for (i = 0; i < numOutputs; i++) {
-          value = stack[stackIndex + i];
-          let bound = range[i * 2];
+      for (i = 0; i < numOutputs; i++) {
+        value = stack[stackIndex + i];
+        let bound = range[i * 2];
 
-          if (value < bound) {
-            value = bound;
-          } else {
-            bound = range[i * 2 + 1];
+        if (value < bound) {
+          value = bound;
+        } else {
+          bound = range[i * 2 + 1];
 
-            if (value > bound) {
-              value = bound;
-            }
+          if (value > bound) {
+            value = bound;
           }
-
-          output[i] = value;
         }
 
-        if (cache_available > 0) {
-          cache_available--;
-          cache[key] = output;
-        }
+        output[i] = value;
+      }
 
-        dest.set(output, destOffset);
-      };
-    }
+      if (cache_available > 0) {
+        cache_available--;
+        cache[key] = output;
+      }
 
-  };
-}();
+      dest.set(output, destOffset);
+    };
+  }
+
+}
 
 function isPDFFunction(v) {
   let fnDict;
@@ -44721,75 +45768,73 @@ function isPDFFunction(v) {
   return fnDict.has("FunctionType");
 }
 
-const PostScriptStack = function PostScriptStackClosure() {
-  const MAX_STACK_SIZE = 100;
-
-  class PostScriptStack {
-    constructor(initialStack) {
-      this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
-    }
+class PostScriptStack {
+  static get MAX_STACK_SIZE() {
+    return (0, _util.shadow)(this, "MAX_STACK_SIZE", 100);
+  }
 
-    push(value) {
-      if (this.stack.length >= MAX_STACK_SIZE) {
-        throw new Error("PostScript function stack overflow.");
-      }
+  constructor(initialStack) {
+    this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
+  }
 
-      this.stack.push(value);
+  push(value) {
+    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {
+      throw new Error("PostScript function stack overflow.");
     }
 
-    pop() {
-      if (this.stack.length <= 0) {
-        throw new Error("PostScript function stack underflow.");
-      }
+    this.stack.push(value);
+  }
 
-      return this.stack.pop();
+  pop() {
+    if (this.stack.length <= 0) {
+      throw new Error("PostScript function stack underflow.");
     }
 
-    copy(n) {
-      if (this.stack.length + n >= MAX_STACK_SIZE) {
-        throw new Error("PostScript function stack overflow.");
-      }
-
-      const stack = this.stack;
+    return this.stack.pop();
+  }
 
-      for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
-        stack.push(stack[i]);
-      }
+  copy(n) {
+    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {
+      throw new Error("PostScript function stack overflow.");
     }
 
-    index(n) {
-      this.push(this.stack[this.stack.length - n - 1]);
+    const stack = this.stack;
+
+    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
+      stack.push(stack[i]);
     }
+  }
 
-    roll(n, p) {
-      const stack = this.stack;
-      const l = stack.length - n;
-      const r = stack.length - 1;
-      const c = l + (p - Math.floor(p / n) * n);
+  index(n) {
+    this.push(this.stack[this.stack.length - n - 1]);
+  }
 
-      for (let i = l, j = r; i < j; i++, j--) {
-        const t = stack[i];
-        stack[i] = stack[j];
-        stack[j] = t;
-      }
+  roll(n, p) {
+    const stack = this.stack;
+    const l = stack.length - n;
+    const r = stack.length - 1;
+    const c = l + (p - Math.floor(p / n) * n);
 
-      for (let i = l, j = c - 1; i < j; i++, j--) {
-        const t = stack[i];
-        stack[i] = stack[j];
-        stack[j] = t;
-      }
+    for (let i = l, j = r; i < j; i++, j--) {
+      const t = stack[i];
+      stack[i] = stack[j];
+      stack[j] = t;
+    }
 
-      for (let i = c, j = r; i < j; i++, j--) {
-        const t = stack[i];
-        stack[i] = stack[j];
-        stack[j] = t;
-      }
+    for (let i = l, j = c - 1; i < j; i++, j--) {
+      const t = stack[i];
+      stack[i] = stack[j];
+      stack[j] = t;
     }
 
+    for (let i = c, j = r; i < j; i++, j--) {
+      const t = stack[i];
+      stack[i] = stack[j];
+      stack[j] = t;
+    }
   }
 
-  return PostScriptStack;
-}();
+}
 
 class PostScriptEvaluator {
   constructor(operators) {
@@ -45501,7 +46546,7 @@ const PostScriptCompiler = function PostScriptCompilerClosure() {
 exports.PostScriptCompiler = PostScriptCompiler;
 
 /***/ }),
-/* 50 */
+/* 51 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -45606,45 +46651,43 @@ const PostScriptTokenTypes = {
   IFELSE: 5
 };
 
-const PostScriptToken = function PostScriptTokenClosure() {
-  const opCache = Object.create(null);
-
-  class PostScriptToken {
-    constructor(type, value) {
-      this.type = type;
-      this.value = value;
-    }
+class PostScriptToken {
+  static get opCache() {
+    return (0, _util.shadow)(this, "opCache", Object.create(null));
+  }
 
-    static getOperator(op) {
-      const opValue = opCache[op];
+  constructor(type, value) {
+    this.type = type;
+    this.value = value;
+  }
 
-      if (opValue) {
-        return opValue;
-      }
+  static getOperator(op) {
+    const opValue = PostScriptToken.opCache[op];
 
-      return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
+    if (opValue) {
+      return opValue;
     }
 
-    static get LBRACE() {
-      return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{"));
-    }
+    return PostScriptToken.opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);
+  }
 
-    static get RBRACE() {
-      return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}"));
-    }
+  static get LBRACE() {
+    return (0, _util.shadow)(this, "LBRACE", new PostScriptToken(PostScriptTokenTypes.LBRACE, "{"));
+  }
 
-    static get IF() {
-      return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF"));
-    }
+  static get RBRACE() {
+    return (0, _util.shadow)(this, "RBRACE", new PostScriptToken(PostScriptTokenTypes.RBRACE, "}"));
+  }
 
-    static get IFELSE() {
-      return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE"));
-    }
+  static get IF() {
+    return (0, _util.shadow)(this, "IF", new PostScriptToken(PostScriptTokenTypes.IF, "IF"));
+  }
 
+  static get IFELSE() {
+    return (0, _util.shadow)(this, "IFELSE", new PostScriptToken(PostScriptTokenTypes.IFELSE, "IFELSE"));
   }
 
-  return PostScriptToken;
-}();
+}
 
 class PostScriptLexer {
   constructor(stream) {
@@ -45754,7 +46797,7 @@ class PostScriptLexer {
 exports.PostScriptLexer = PostScriptLexer;
 
 /***/ }),
-/* 51 */
+/* 52 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -45804,7 +46847,7 @@ class BaseLocalCache {
 
 class LocalImageCache extends BaseLocalCache {
   set(name, ref = null, data) {
-    if (!name) {
+    if (typeof name !== "string") {
       throw new Error('LocalImageCache.set - expected "name" argument.');
     }
 
@@ -45833,7 +46876,7 @@ exports.LocalImageCache = LocalImageCache;
 
 class LocalColorSpaceCache extends BaseLocalCache {
   set(name = null, ref = null, data) {
-    if (!name && !ref) {
+    if (typeof name !== "string" && !ref) {
       throw new Error('LocalColorSpaceCache.set - expected "name" and/or "ref" argument.');
     }
 
@@ -45842,7 +46885,7 @@ class LocalColorSpaceCache extends BaseLocalCache {
         return;
       }
 
-      if (name) {
+      if (name !== null) {
         this._nameRefMap.set(name, ref);
       }
 
@@ -45891,7 +46934,7 @@ exports.LocalFunctionCache = LocalFunctionCache;
 
 class LocalGStateCache extends BaseLocalCache {
   set(name, ref = null, data) {
-    if (!name) {
+    if (typeof name !== "string") {
       throw new Error('LocalGStateCache.set - expected "name" argument.');
     }
 
@@ -45920,7 +46963,7 @@ exports.LocalGStateCache = LocalGStateCache;
 
 class LocalTilingPatternCache extends BaseLocalCache {
   set(name, ref = null, data) {
-    if (!name) {
+    if (typeof name !== "string") {
       throw new Error('LocalTilingPatternCache.set - expected "name" argument.');
     }
 
@@ -46080,7 +47123,7 @@ class GlobalImageCache {
 exports.GlobalImageCache = GlobalImageCache;
 
 /***/ }),
-/* 52 */
+/* 53 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -46391,7 +47434,7 @@ function bidi(str, startLevel, vertical) {
 }
 
 /***/ }),
-/* 53 */
+/* 54 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -49344,7 +50387,300 @@ const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
 exports.getMetrics = getMetrics;
 
 /***/ }),
-/* 54 */
+/* 55 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getXfaFontName = getXfaFontName;
+exports.getXfaFontWidths = getXfaFontWidths;
+
+var _calibri_factors = __w_pdfjs_require__(56);
+
+var _helvetica_factors = __w_pdfjs_require__(57);
+
+var _liberationsans_widths = __w_pdfjs_require__(58);
+
+var _myriadpro_factors = __w_pdfjs_require__(59);
+
+var _segoeui_factors = __w_pdfjs_require__(60);
+
+var _core_utils = __w_pdfjs_require__(9);
+
+var _fonts_utils = __w_pdfjs_require__(38);
+
+const getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {
+  t["MyriadPro-Regular"] = t["PdfJS-Fallback-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _myriadpro_factors.MyriadProRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    lineHeight: _myriadpro_factors.MyriadProRegularLineHeight
+  };
+  t["MyriadPro-Bold"] = t["PdfJS-Fallback-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _myriadpro_factors.MyriadProBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    lineHeight: _myriadpro_factors.MyriadProBoldLineHeight
+  };
+  t["MyriadPro-It"] = t["MyriadPro-Italic"] = t["PdfJS-Fallback-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _myriadpro_factors.MyriadProItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    lineHeight: _myriadpro_factors.MyriadProItalicLineHeight
+  };
+  t["MyriadPro-BoldIt"] = t["MyriadPro-BoldItalic"] = t["PdfJS-Fallback-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _myriadpro_factors.MyriadProBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    lineHeight: _myriadpro_factors.MyriadProBoldItalicLineHeight
+  };
+  t.ArialMT = t.Arial = t["Arial-Regular"] = {
+    name: "LiberationSans-Regular",
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths
+  };
+  t["Arial-BoldMT"] = t["Arial-Bold"] = {
+    name: "LiberationSans-Bold",
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths
+  };
+  t["Arial-ItalicMT"] = t["Arial-Italic"] = {
+    name: "LiberationSans-Italic",
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths
+  };
+  t["Arial-BoldItalicMT"] = t["Arial-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths
+  };
+  t["Calibri-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _calibri_factors.CalibriRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    lineHeight: _calibri_factors.CalibriRegularLineHeight
+  };
+  t["Calibri-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _calibri_factors.CalibriBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    lineHeight: _calibri_factors.CalibriBoldLineHeight
+  };
+  t["Calibri-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _calibri_factors.CalibriItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    lineHeight: _calibri_factors.CalibriItalicLineHeight
+  };
+  t["Calibri-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _calibri_factors.CalibriBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    lineHeight: _calibri_factors.CalibriBoldItalicLineHeight
+  };
+  t["Segoeui-Regular"] = {
+    name: "LiberationSans-Regular",
+    factors: _segoeui_factors.SegoeuiRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    lineHeight: _segoeui_factors.SegoeuiRegularLineHeight
+  };
+  t["Segoeui-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _segoeui_factors.SegoeuiBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    lineHeight: _segoeui_factors.SegoeuiBoldLineHeight
+  };
+  t["Segoeui-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _segoeui_factors.SegoeuiItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    lineHeight: _segoeui_factors.SegoeuiItalicLineHeight
+  };
+  t["Segoeui-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _segoeui_factors.SegoeuiBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    lineHeight: _segoeui_factors.SegoeuiBoldItalicLineHeight
+  };
+  t["Helvetica-Regular"] = t.Helvetica = {
+    name: "LiberationSans-Regular",
+    factors: _helvetica_factors.HelveticaRegularFactors,
+    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,
+    lineHeight: _helvetica_factors.HelveticaRegularLineHeight
+  };
+  t["Helvetica-Bold"] = {
+    name: "LiberationSans-Bold",
+    factors: _helvetica_factors.HelveticaBoldFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,
+    lineHeight: _helvetica_factors.HelveticaBoldLineHeight
+  };
+  t["Helvetica-Italic"] = {
+    name: "LiberationSans-Italic",
+    factors: _helvetica_factors.HelveticaItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,
+    lineHeight: _helvetica_factors.HelveticaItalicLineHeight
+  };
+  t["Helvetica-BoldItalic"] = {
+    name: "LiberationSans-BoldItalic",
+    factors: _helvetica_factors.HelveticaBoldItalicFactors,
+    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,
+    lineHeight: _helvetica_factors.HelveticaBoldItalicLineHeight
+  };
+});
+
+function getXfaFontName(name) {
+  const fontName = (0, _fonts_utils.normalizeFontName)(name);
+  const fontMap = getXFAFontMap();
+  return fontMap[fontName];
+}
+
+function getXfaFontWidths(name) {
+  const info = getXfaFontName(name);
+
+  if (!info) {
+    return null;
+  }
+
+  const {
+    baseWidths,
+    factors
+  } = info;
+
+  if (!factors) {
+    return baseWidths;
+  }
+
+  return baseWidths.map((w, i) => w * factors[i]);
+}
+
+/***/ }),
+/* 56 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.CalibriRegularLineHeight = exports.CalibriRegularFactors = exports.CalibriItalicLineHeight = 
exports.CalibriItalicFactors = exports.CalibriBoldLineHeight = exports.CalibriBoldItalicLineHeight = 
exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0;
+const CalibriBoldFactors = [1.3877, 1, 0.83908, 0.77539, 0.77539, 0.83908, 0.83908, 0.83908, 0.83908, 
0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.7762, 0.7762, 0.73293, 0.73293, 
0.73293, 0.73293, 0.73293, 0.73293, 0.82577, 0.87289, 0.87289, 0.88506, 0.80367, 0.73133, 0.73133, 0.73133, 
0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.88656, 0.73133, 0.73133, 0.57184, 0.87356, 0.6965, 
0.88506, 0.91133, 0.7514, 0.81921, 0.68156, 0.81921, 0.81921, 1, 0.81921, 0.87356, 1, 0.99862, 0.99862, 1, 
0.91075, 0.87356, 0.95958, 0.76229, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 
0.95958, 0.95958, 0.56289, 0.95958, 0.59526, 0.59526, 0.75727, 0.75727, 1, 0.69225, 0.69225, 0.89019, 
0.70424, 1, 0.91926, 0.70823, 1.04924, 1.04924, 0.9121, 0.9121, 0.9121, 1, 0.9121, 0.9121, 0.86943, 0.87402, 
0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.84896, 0.81235, 0.86943, 0.82001, 0.87508, 
0.87508, 0.86943, 0.79795, 0.9762, 0.873
 56, 0.99819, 0.88198, 0.77958, 0.77958, 0.77958, 1, 0.79795, 0.70864, 0.70572, 0.70572, 0.70572, 0.70572, 1, 
1, 1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.70864, 0.70864, 0.70864, 0.70864, 1, 0.78275, 0.81055, 0.81055, 0.81055, 0.81055, 1, 0.86943, 0.79795, 
0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.77892, 0.56029, 
0.90399, 0.90399, 0.88653, 0.96017, 0.96017, 0.96017, 0.96017, 0.96017, 0.82577, 0.7648, 0.77892, 0.77892, 
0.77892, 0.77892, 0.77892, 0.78257, 0.78257, 0.78257, 0.78257, 0.78257, 0.88762, 0.88762, 0.88762, 0.88762, 
0.90323, 1, 0.88762, 0.8715, 0.8715, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 0.88762, 0
 .96108, 0.96108, 0.88762, 0.97566, 0.80352, 0.88762, 0.90747, 0.88762, 0.88762, 1.31006, 1.81055, 0.90527, 
0.90527, 1.81055, 1.53711, 0.94434, 0.85284, 0.85284, 1.2798, 0.92138, 0.88762, 0.8785, 1.54657, 1.69808, 
0.8936, 1, 0.88331, 0.88331, 0.97507, 0.97507, 1.15543, 1, 1.7801, 1.42259, 0.75241, 0.75241, 1.20528, 1, 1, 
0.75241, 0.75241, 0.75241, 0.75241, 0.91056, 0.89552, 0.78287, 0.91027, 1.20528, 1, 1, 0.82845, 0.92794, 1, 
1, 1.13254, 0.89552, 1, 0.8785, 0.89552, 0.89552, 0.83016, 0.93125, 0.85592, 0.87842, 1, 1.24487, 1, 1.06303, 
0.90747, 1, 1, 0.91133, 0.70674, 0.88401, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 0.90518, 
0.90518, 0.91133, 1, 0.71143, 0.90518, 0.90527, 0.89552, 0.8785, 0.90518, 0.96399, 1.01407, 0.85284, 0.85356, 
1.23108, 0.89049, 0.89049, 0.8785, 0.97801, 0.97171, 0.97801, 0.95015, 1, 1, 1, 0.91133, 0.88525, 1, 0.56892, 
0.91133, 1, 0.83406, 0.77618, 0.84021, 0.77618, 0.77618, 1, 0.77618, 0.90807, 0.90176, 1, 0.85284, 0.90747, 
0.96839, 0.96839, 1.0337
 2, 1.03372, 0.8785, 0.89608, 0.8785, 1, 1.44947, 1.45894, 1, 0.88401, 0.88401, 0.88401, 0.88401, 0.88401, 
0.88401, 0.90167, 0.88401, 1.17534, 1.37077, 0.8941, 0.8941, 0.9716, 1, 1, 1, 0.88401, 1.02988, 1.02988, 
1.02988, 1.02988, 0.88401, 0.91916, 0.91916, 0.86304, 0.86077, 1, 0.86304, 0.88401, 0.88401, 0.87445, 
0.79468, 1, 0.88175, 0.85284, 0.90747, 1, 0.91133, 0.85284, 0.9297, 1.08004, 0.94903, 1, 0.91488, 0.70645, 1, 
1, 0.85284, 1, 0.92099, 0.85284, 1, 1, 0.8785, 0.8785, 0.87802, 0.8785, 1, 0.91133, 1, 0.90747, 0.8785, 
0.84723, 0.89552, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.89291, 0.94721, 0.8801, 0.8801, 0.8801, 0.84971, 
0.84971, 0.8801, 0.8801, 0.91133, 0.83489, 0.82845, 0.78864, 0.99862, 1.12401, 1.19118, 0.69825, 0.89049, 
0.89049, 0.8801, 0.8785, 1.07463, 0.93548, 0.93548, 1.08696, 0.81988, 0.96134, 1.06152, 0.84107, 0.97747, 
0.75638, 0.85284, 0.90747, 0.95018, 0.97926, 0.8785, 0.75859, 0.75859, 0.92482, 0.87012, 0.87012, 0.87012, 
0.92794, 0.92794, 0.92794, 0.92794, 0.9815
 2, 0.91343, 0.91343, 0.90747, 0.91343, 1, 0.68787, 0.85284, 0.85714, 0.98387, 1, 0.7173, 0.7173, 0.7173, 
0.7173, 0.7173, 1, 1, 0.89552, 0.91133, 0.81499, 1, 1, 0.79586, 0.78216, 0.91133, 1.54657, 1, 1, 0.91133, 
0.77192, 1, 1.04106, 0.87965, 1.06452, 0.75841, 1, 1.00813, 0.8785, 0.91133, 0.88525, 0.84133, 1.33431, 1, 
0.95161, 0.72021, 1, 1, 1, 1, 0.91133, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 0.8785, 
0.89552, 0.90363, 1, 1, 1.01466, 1.0088, 1, 0.75806, 0.81055, 1.04106, 1, 0.82845, 0.73133, 0.90264, 0.90518, 
0.90548, 1, 1, 1.4956, 0.93835, 1, 1, 2.2807, 1, 1, 1, 0.90727, 0.90727, 0.8785, 1, 0.94211, 0.94211, 
0.94211, 0.94211, 0.8785, 0.8785, 0.85075, 0.95794, 0.95794, 0.95794, 0.95794, 0.95794, 0.82616, 0.86513, 
0.85162, 0.85162, 0.85162, 0.85162, 0.91133, 0.85162, 0.79492, 0.79492, 0.79492, 0.79492, 0.91133, 0.79109];
+exports.CalibriBoldFactors = CalibriBoldFactors;
+const CalibriBoldLineHeight = 1.2207;
+exports.CalibriBoldLineHeight = CalibriBoldLineHeight;
+const CalibriBoldItalicFactors = [1.3877, 1, 0.83908, 0.77539, 0.77539, 0.83908, 0.83908, 0.83908, 0.83908, 
0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.7762, 0.7762, 0.71805, 0.71805, 
0.71805, 0.71805, 0.71805, 0.71805, 0.82577, 0.87289, 0.87289, 0.88506, 0.86036, 0.73133, 0.73133, 0.73133, 
0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.73133, 0.88116, 0.73133, 0.73133, 0.57118, 0.87356, 0.6965, 
0.88506, 0.91133, 0.7514, 0.81921, 0.67174, 0.81921, 0.81921, 1, 0.81921, 0.87356, 1, 0.99862, 0.99862, 1, 
0.91075, 0.87356, 0.95958, 0.76467, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 0.95958, 
0.95958, 0.95958, 0.56347, 0.95958, 0.59526, 0.59526, 0.75727, 0.75727, 1, 0.69225, 0.69225, 0.89019, 
0.70424, 1, 0.91926, 0.70823, 1.04924, 1.04924, 0.90872, 0.90872, 0.90872, 1, 0.90872, 0.90872, 0.85938, 
0.87402, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.87179, 0.80346, 0.85938, 0.79179, 
0.87068, 0.87068, 0.85938, 0.79795, 0.
 97447, 0.87891, 0.97466, 0.87068, 0.77958, 0.77958, 0.77958, 1, 0.79795, 0.69766, 0.70572, 0.70572, 0.70572, 
0.70572, 1, 1, 1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 0.69766, 0.69766, 0.69766, 0.69766, 1, 0.7957, 0.81055, 0.81055, 0.81055, 0.81055, 1, 0.86441, 
0.79795, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.77892, 
0.55853, 0.90399, 0.90399, 0.88653, 0.96068, 0.96068, 0.96068, 0.96068, 0.96068, 0.82577, 0.74889, 0.77892, 
0.77892, 0.77892, 0.77892, 0.77892, 0.78257, 0.78257, 0.78257, 0.78257, 0.78257, 0.94908, 0.94908, 0.94908, 
0.94908, 0.90323, 1, 0.94908, 0.85887, 0.85887, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1,
  1, 0.94908, 0.94252, 0.94252, 0.94908, 0.97566, 0.80352, 0.94908, 0.90747, 0.94908, 0.94908, 1.3107, 
1.81055, 0.90616, 0.90527, 1.81055, 1.53711, 0.94434, 0.85284, 0.85284, 1.2798, 0.92138, 0.94908, 0.86411, 
1.529, 1.69808, 0.87411, 1, 0.88331, 0.88331, 0.97507, 0.97507, 1.15543, 1, 1.7801, 1.42259, 0.74012, 
0.74012, 1.20528, 1, 1, 0.74012, 0.74012, 0.74012, 0.74012, 0.91056, 0.89552, 0.78022, 0.91027, 1.20528, 1, 
1, 0.82845, 0.92794, 1, 1, 1.13254, 0.89552, 1, 0.86411, 0.89552, 0.89552, 0.79538, 0.92726, 0.85592, 0.8728, 
1, 1.24487, 1, 1.48387, 0.90747, 1, 1, 0.91133, 0.70088, 0.88401, 0.88323, 0.88323, 0.88323, 0.88323, 
0.88323, 0.88323, 0.88323, 0.88323, 0.91133, 1, 0.71094, 0.88323, 0.90527, 0.89552, 0.86331, 0.88323, 
0.95612, 0.95612, 0.85284, 0.85356, 1.23108, 0.8753, 0.8753, 0.8785, 0.97801, 0.97171, 0.97801, 0.95015, 1, 
1, 1, 0.91133, 0.88525, 1, 0.56892, 0.91133, 1, 0.83406, 0.86411, 0.84021, 0.86411, 0.86411, 1, 0.86411, 
0.90807, 0.90176, 1, 0.85284, 0.90747, 0.96839, 0.9
 6839, 1.03372, 1.03372, 0.86331, 0.8777, 0.86331, 1, 1.44947, 1.45894, 1, 0.88401, 0.88401, 0.88401, 
0.88401, 0.88401, 0.88401, 0.90167, 0.88401, 1.17534, 1.37077, 0.8941, 0.8941, 0.9716, 1, 1, 1, 0.88401, 
1.02988, 1.02988, 1.02988, 1.02988, 0.88401, 0.91916, 0.91916, 0.86304, 0.84814, 1, 0.86304, 0.88401, 
0.88401, 0.87445, 0.77312, 1, 0.88175, 0.85284, 0.90747, 1, 0.91133, 0.85284, 0.9297, 1.08004, 0.94903, 1, 
0.9039, 0.70645, 1, 1, 0.85284, 1, 0.91822, 0.85284, 1, 1, 0.86331, 0.86331, 0.86906, 0.86331, 1, 0.91133, 1, 
0.90747, 0.86331, 0.84723, 0.89552, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86549, 0.94721, 0.86331, 
0.86331, 0.86331, 0.86015, 0.86015, 0.86331, 0.86331, 0.91133, 0.83489, 0.82845, 0.78864, 0.99862, 1.19129, 
1.19118, 0.69825, 0.89049, 0.89049, 0.86331, 0.86411, 1.07463, 0.93548, 0.93548, 1.08696, 0.81988, 0.96134, 
1.06152, 0.83326, 0.99375, 0.81344, 0.85284, 0.90747, 0.95018, 0.95452, 0.86411, 0.75859, 0.75859, 0.92482, 
0.87012, 0.87012, 0.87012, 0.92794, 0.89
 807, 0.92794, 0.92794, 0.98152, 0.90464, 0.90464, 0.90747, 0.90464, 1, 0.68787, 0.85284, 0.87581, 0.98387, 
1, 0.70852, 0.70852, 0.70852, 0.70852, 0.70852, 1, 1, 0.89552, 0.91133, 0.81499, 1, 1, 0.82046, 0.76422, 
0.91133, 1.56239, 1, 1, 0.91133, 0.77192, 1, 1.04106, 0.96057, 1.06452, 0.75841, 1, 1.02189, 0.86411, 
0.91133, 0.88525, 0.84133, 1.33431, 1, 0.95161, 0.72021, 1, 1, 1, 1, 0.91133, 0.86331, 0.86331, 0.86331, 
0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.89552, 0.90363, 1, 1, 1.01466, 1.0088, 1, 0.75806, 0.81055, 
1.04106, 1, 0.82845, 0.73133, 0.90631, 0.88323, 0.85174, 1, 1, 1.4956, 0.92972, 1, 1, 2.2807, 1, 1, 1, 
0.90727, 0.90727, 0.86331, 1, 0.92733, 0.92733, 0.92733, 0.92733, 0.86331, 0.86331, 0.84372, 0.95794, 
0.95794, 0.95794, 0.95794, 0.95794, 0.82616, 0.85668, 0.84548, 0.84548, 0.84548, 0.84548, 0.91133, 0.84548, 
0.79492, 0.79492, 0.79492, 0.79492, 0.91133, 0.74081];
+exports.CalibriBoldItalicFactors = CalibriBoldItalicFactors;
+const CalibriBoldItalicLineHeight = 1.2207;
+exports.CalibriBoldItalicLineHeight = CalibriBoldItalicLineHeight;
+const CalibriItalicFactors = [1.3877, 1, 0.8675, 0.76318, 0.76318, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 
0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.81552, 0.81552, 0.72346, 0.72346, 0.72346, 0.72346, 
0.72346, 0.72346, 0.77818, 0.85193, 0.85193, 0.86477, 0.84134, 0.73206, 0.73206, 0.73206, 0.73206, 0.73206, 
0.73206, 0.73206, 0.73206, 0.73206, 0.86698, 0.73206, 0.73206, 0.6192, 0.86275, 0.7363, 0.86477, 0.91133, 
0.7522, 0.81105, 0.7286, 0.81105, 0.81105, 1, 0.81105, 0.86275, 1, 0.99862, 0.99862, 1, 0.90872, 0.86275, 
0.90685, 0.77896, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 
0.64824, 0.90685, 0.6377, 0.6377, 0.77892, 0.77892, 1, 0.75593, 0.75593, 0.85871, 0.76032, 1, 0.98156, 
0.77261, 1.02638, 1.02638, 0.89249, 0.89249, 0.89249, 1, 0.89249, 0.89249, 0.84118, 0.8667, 0.84118, 0.84118, 
0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.87291, 0.85696, 0.84118, 0.82411, 0.84557, 0.84557, 0.84118, 
0.77452, 0.90782, 0.85984, 0.90
 3, 0.85374, 0.75186, 0.75186, 0.75186, 1, 0.77452, 0.67789, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 
1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.67789, 0.67789, 0.67789, 0.67789, 1, 0.76466, 0.79776, 0.79776, 0.79776, 0.79776, 1, 0.84369, 0.77452, 
0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.7306, 0.56321, 
0.88844, 0.88844, 0.85066, 0.94309, 0.94309, 0.94309, 0.94309, 0.94309, 0.77818, 0.75828, 0.7306, 0.7306, 
0.7306, 0.7306, 0.7306, 0.76659, 0.76659, 0.76659, 0.76659, 0.76659, 0.9245, 0.9245, 0.9245, 0.9245, 0.87683, 
1, 0.9245, 0.84843, 0.84843, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.9245, 0.99058, 0.99058, 0.9
 245, 1.02269, 0.90861, 0.9245, 0.90747, 0.9245, 0.9245, 1.28809, 1.81055, 0.90572, 0.90749, 1.81055, 
1.55469, 0.94434, 1.06139, 0.85284, 1.2798, 0.88071, 0.9245, 0.9245, 1.38313, 1.77256, 0.92393, 1, 0.94152, 
0.94152, 1.10369, 1.10369, 1.1437, 1, 1.91729, 1.42259, 0.83203, 0.83203, 1.18622, 1, 1, 0.83203, 0.83203, 
0.83203, 0.83203, 0.92229, 0.89552, 0.78086, 0.91027, 1.18622, 1, 1, 0.96309, 0.89807, 1, 1, 1.13254, 
0.89552, 1, 0.9245, 0.89552, 0.89552, 0.8875, 0.99034, 0.84737, 0.942, 1, 1.17889, 1, 1.48387, 0.90747, 1, 1, 
0.91133, 0.67009, 0.82601, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.85865, 0.91133, 
1, 0.68994, 0.85865, 0.90527, 0.89552, 0.9245, 0.85865, 1.03667, 1.03667, 0.85284, 0.85284, 1.23108, 0.94635, 
0.94635, 0.94469, 1.17223, 1.11523, 0.97801, 1.09842, 1, 1, 1, 0.91133, 0.84426, 1, 0.54873, 0.91133, 1, 
0.82616, 0.9245, 0.8916, 0.9245, 0.9245, 1, 0.9245, 0.86331, 0.8739, 1, 0.85284, 0.90747, 0.92098, 0.92098, 
1.0176, 1.0176, 0.9245, 0.93591, 0.924
 5, 1, 1.44947, 1.40909, 1, 1.03297, 0.82601, 0.82601, 0.82601, 0.82601, 0.82601, 1.05611, 0.82601, 1.19658, 
1.33512, 0.8941, 0.8941, 0.97622, 1, 1, 1, 1.03297, 1.23516, 1.23516, 1.23516, 1.23516, 0.82601, 1.07692, 
1.07692, 0.90918, 0.90918, 1, 0.90918, 1.03297, 1.03297, 0.94048, 0.9375, 1, 0.93407, 0.85284, 0.90747, 1, 
0.91133, 0.85284, 1.09231, 1.0336, 1.11429, 1, 0.94959, 0.71353, 1, 1, 0.85284, 1, 0.98217, 0.85284, 1, 1, 
0.9245, 0.9245, 0.92534, 0.9245, 1, 0.91133, 1, 0.90747, 0.9245, 0.89746, 0.89552, 0.92274, 0.92274, 0.92274, 
0.92274, 0.92274, 0.86291, 0.93695, 0.92274, 0.92274, 0.92274, 0.89404, 0.89404, 0.92274, 0.92274, 0.91133, 
0.79801, 0.80504, 0.76288, 0.99862, 1.16359, 1.15642, 0.69825, 0.86651, 0.86651, 0.92274, 0.9245, 1.09091, 
0.91056, 0.91056, 1.07806, 0.80395, 0.90861, 1.03809, 0.83437, 1.00225, 0.82507, 0.85284, 0.90747, 0.97094, 
0.97248, 0.9245, 0.83319, 0.75859, 1.1293, 1.2566, 1.2566, 1.2566, 1.12308, 1.12308, 1.12308, 1.12308, 
1.15601, 1.02933, 1.02933, 0.9074
 7, 1.02933, 1, 0.68787, 0.85284, 0.88832, 0.96334, 1, 0.77832, 0.77832, 0.77832, 0.77832, 0.77832, 1, 1, 
0.89552, 0.91133, 0.774, 1, 1, 0.88178, 0.84438, 0.91133, 1.39543, 1, 1, 0.91133, 0.7589, 1, 1.20562, 
1.03525, 1.23023, 0.97655, 1, 1.0297, 0.9245, 0.91133, 0.84426, 0.80972, 1.35191, 1, 0.95161, 0.70508, 1, 1, 
1, 1, 0.91133, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.89552, 0.90186, 1, 1, 
1.0088, 1.0044, 1, 0.739, 0.79776, 1.20562, 1, 0.96309, 0.73206, 0.89693, 0.85865, 0.90933, 1, 1, 1.4956, 
0.97858, 1, 1, 2.01462, 1, 1, 1, 1.05859, 1.05859, 0.9245, 1, 0.9849, 0.9849, 0.9849, 0.9849, 0.9245, 0.9245, 
0.8916, 0.98986, 0.98986, 0.98986, 0.98986, 0.98986, 0.86621, 0.84153, 0.89453, 0.89453, 0.89453, 0.89453, 
0.91133, 0.89453, 0.79004, 0.79004, 0.79004, 0.79004, 0.91133, 0.75026];
+exports.CalibriItalicFactors = CalibriItalicFactors;
+const CalibriItalicLineHeight = 1.2207;
+exports.CalibriItalicLineHeight = CalibriItalicLineHeight;
+const CalibriRegularFactors = [1.3877, 1, 0.8675, 0.76318, 0.76318, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 
0.8675, 0.86686, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.81552, 0.81552, 0.73834, 0.73834, 0.73834, 
0.73834, 0.73834, 0.73834, 0.77818, 0.85193, 0.85193, 0.86477, 0.84503, 0.73206, 0.73206, 0.73206, 0.73206, 
0.73206, 0.73206, 0.73206, 0.73206, 0.73206, 0.86901, 0.73206, 0.73206, 0.62267, 0.86275, 0.74359, 0.86477, 
0.91133, 0.7522, 0.81105, 0.75443, 0.81105, 0.81105, 1, 0.81105, 0.86275, 1, 0.99862, 0.99862, 1, 0.90872, 
0.86275, 0.90685, 0.77741, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 0.90685, 
0.90685, 0.65649, 0.90685, 0.6377, 0.6377, 0.77892, 0.77892, 1, 0.75593, 0.75593, 0.85746, 0.76032, 1, 
0.98156, 0.77261, 1.02638, 1.02638, 0.89385, 0.89385, 0.89385, 1, 0.89385, 0.89385, 0.85122, 0.8667, 0.85122, 
0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.88831, 0.88254, 0.85122, 0.85498, 0.85311, 0.85311, 
0.85122, 0.77452, 0.95165, 0.86275,
  0.89772, 0.86503, 0.75186, 0.75186, 0.75186, 1, 0.77452, 0.68887, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 
1, 1, 1, 0.70572, 0.8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.68887, 0.68887, 0.68887, 0.68887, 1, 0.74171, 0.79776, 0.79776, 0.79776, 0.79776, 1, 0.85122, 0.77452, 
0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.7306, 0.56963, 
0.88844, 0.88844, 0.85066, 0.94258, 0.94258, 0.94258, 0.94258, 0.94258, 0.77818, 0.75657, 0.7306, 0.7306, 
0.7306, 0.7306, 0.7306, 0.76659, 0.76659, 0.76659, 0.76659, 0.76659, 0.86128, 0.86128, 0.86128, 0.86128, 
0.87683, 0.86128, 0.8693, 0.8693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 0.86128, 0.98142, 0.98
 142, 0.86128, 1.02269, 0.90861, 0.86128, 0.90747, 0.86128, 0.86128, 1.28809, 1.81055, 0.90527, 0.90527, 
1.81055, 1.55469, 0.94434, 1.06139, 0.85284, 1.2798, 0.88071, 0.86128, 0.94469, 1.39016, 1.77256, 0.9236, 1, 
0.94152, 0.94152, 1.10369, 1.10369, 1.1437, 1.91729, 1.42259, 0.8457, 0.8457, 1.18622, 0.8457, 0.8457, 
0.8457, 0.8457, 0.92229, 0.89552, 0.81209, 0.91027, 1.18622, 1, 0.96309, 0.89807, 1.13254, 0.89552, 0.94469, 
0.89552, 0.89552, 0.92454, 0.9921, 0.84737, 0.94035, 1, 1.17889, 1.48387, 0.90747, 1, 1, 0.91133, 0.67742, 
0.82601, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.89464, 0.91133, 0.69043, 0.89464, 
0.90527, 0.89552, 0.94469, 0.89464, 1.02191, 1.02191, 0.85284, 0.85356, 1.23108, 0.96576, 0.96576, 0.94469, 
1.17223, 1.11523, 0.97801, 1.09842, 1, 1, 1, 0.91133, 0.84426, 0.54873, 0.91133, 0.82616, 0.84636, 0.89258, 
0.84636, 0.84636, 1, 0.84636, 0.86331, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.8739, 0.85284, 0.90747, 0.92098, 
0.92098, 1.0176, 1.0176, 0.94469, 
 0.95786, 0.94469, 1, 1.44947, 1.40909, 1.03297, 0.82601, 0.82601, 0.82601, 0.82601, 0.82601, 1.05611, 
0.82601, 1.19658, 1.33512, 0.8941, 0.8941, 0.97622, 1, 1, 1, 1.03297, 1.23516, 1.23516, 1.23516, 1.23516, 
0.82601, 1.07692, 1.07692, 0.90918, 0.90918, 1, 0.90918, 1.03297, 1.03297, 0.92578, 0.90452, 1, 1.11842, 
0.85284, 0.90747, 1, 0.91133, 0.85284, 1.09231, 1.0336, 1.11429, 1, 0.95897, 0.71353, 1, 1, 0.85284, 1, 
0.95424, 0.85284, 1, 1, 0.94469, 0.94469, 0.95877, 0.94469, 1, 0.91133, 1, 0.90747, 0.94469, 0.89746, 
0.89552, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90016, 0.93695, 0.9482, 0.9482, 0.9482, 0.89181, 0.89181, 
0.9482, 0.9482, 0.91133, 0.79801, 0.80504, 0.76288, 0.99862, 1.08707, 1.15642, 0.69825, 0.86651, 0.86651, 
0.9482, 0.94469, 1.09091, 0.91056, 0.91056, 1.07806, 0.80395, 0.90861, 1.03809, 0.84286, 1.00452, 0.80113, 
0.85284, 0.90747, 0.97094, 0.99247, 0.94469, 0.83319, 0.75859, 1.1293, 1.2566, 1.2566, 1.2566, 1.12308, 
1.12308, 1.12308, 1.12308, 1.15601, 1.04692, 1.04692
 , 0.90747, 1.04692, 1, 0.68787, 0.85284, 0.89442, 0.96334, 1, 0.78223, 0.78223, 0.78223, 0.78223, 0.78223, 
1, 1, 0.89552, 0.91133, 0.774, 1, 0.86155, 0.85208, 0.91133, 1.39016, 1, 1, 0.91133, 0.7589, 1, 1.20562, 
0.98022, 1.23023, 0.92188, 1, 0.9561, 0.94469, 0.91133, 0.84426, 0.80972, 1.35191, 0.95161, 0.70508, 1, 1, 1, 
1, 0.91133, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.94469, 0.89552, 0.90186, 1, 1, 
1.0088, 1.0044, 1, 0.739, 0.79776, 1.20562, 1, 0.96309, 0.73206, 0.88844, 0.89464, 0.96766, 1, 1, 1.4956, 
1.07185, 0.99413, 0.96334, 1.08065, 0.99331, 1, 1, 2.01462, 1, 1, 1, 1, 1.05859, 1.05859, 0.94469, 1, 
0.99018, 0.99018, 0.99018, 0.99018, 0.94469, 0.94469, 0.90332, 0.98986, 0.98986, 0.98986, 0.98986, 0.98986, 
0.86621, 0.83969, 0.90527, 0.90527, 0.90527, 0.90527, 0.91133, 0.90527, 0.79004, 0.79004, 0.79004, 0.79004, 
0.91133, 0.78848];
+exports.CalibriRegularFactors = CalibriRegularFactors;
+const CalibriRegularLineHeight = 1.2207;
+exports.CalibriRegularLineHeight = CalibriRegularLineHeight;
+
+/***/ }),
+/* 57 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.HelveticaRegularLineHeight = exports.HelveticaRegularFactors = exports.HelveticaItalicLineHeight = 
exports.HelveticaItalicFactors = exports.HelveticaBoldLineHeight = exports.HelveticaBoldItalicLineHeight = 
exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0;
+const HelveticaBoldFactors = [0.76116, 1, 0.99977, 1, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.85148, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 0.99997, 0.99977, 1.00026, 0.99977, 
0.99973, 1.00026, 1.00022, 0.99988, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 
1, 0.99977, 0.99977, 1.0006, 1.00042, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00078, 1.0006, 0.99973, 0.99973, 0.99977, 0.99977, 0.99977, 1.00026, 1.00026, 1.00001, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 
1, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 1.00013, 1.00022, 1.00036, 1.00022, 
1.00022, 1.00022, 1.00001, 1.00024,
  0.99977, 0.9999, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99984, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00022, 1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 
1.00001, 0.99973, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 1.00069, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 
1.00001, 1.00008, 1.00021, 0.999
 26, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 
0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 
1.00038, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99989, 
0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 
0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 
0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 1.0005, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 
0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 0.99973, 1.00035, 1, 0.99999, 1, 0.99971, 1.00047, 
1.00023, 0.99973, 1.00041, 1.00041, 0.99973, 0.99977, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1, 1, 1, 
1, 1, 1.00003, 1.00003, 0.99959, 0.9999, 0.99973, 1.00026, 1.0006, 1.00077, 0.99942, 1.41144, 0.99959, 
0.99959, 0.99998, 0.99998, 0.999
 98, 1, 1.00077, 0.99972, 0.99973, 0.99973, 0.99998, 1, 1, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 
0.99973, 1.00055, 0.99999, 0.99998, 1, 0.99962, 0.99998, 1.0006, 1, 1, 1.00025, 0.99973, 1, 1.00026, 0.99973, 
0.99973, 1.03374, 1.00026, 1.00024, 0.99927, 0.9995, 0.99998, 1, 1.00034, 1.06409, 1.36625, 1.41144, 0.99973, 
0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 
0.99973, 1, 0.99973, 1.00026, 0.99973, 1.00082, 0.99962, 1.00003, 0.99915, 0.99984, 1.00026, 1.00026, 
1.00026, 0.99998, 0.99999, 0.99998, 0.99998, 1, 0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 0.99973, 
0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99998, 1, 1.00003, 
1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 1.00026, 1.00026, 1.00026, 1.00042, 0.99999, 0.99998, 1, 1.0006, 
1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 0.99561, 
0.99999, 0.99999, 0.99977, 1.0006, 1.0006, 
 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.00069, 0.99973, 0.99973, 1.0006, 1.0006, 0.99973, 
1.03828, 1.0006, 0.99999, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 1.0006, 0.99972, 1.0006, 1.40579, 
0.99982, 0.60299, 1, 1, 1.00003, 1.00106, 0.99867, 1.00003, 1, 1, 1.00026, 1.00026, 0.9993, 1.00026, 1.00026, 
0.99973, 1, 1.00031, 1.00026, 0.99973, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00016, 
0.99998, 1.00026, 1.00026, 1.00026, 1.00032, 1.00032, 1.00026, 1.00026, 0.99973, 1.00002, 1.00002, 1.00002, 
1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99998, 0.99998, 0.99972, 
0.99982, 1.0006, 1, 1.00023, 0.99954, 1.00049, 1.00003, 1.06409, 1.20985, 0.99945, 1.00026, 1.00026, 1.00026, 
0.99974, 1, 1, 1, 1.0006, 1.0006, 1.0006, 1.0006, 1.00087, 0.99959, 0.99959, 1.00031, 0.99959, 0.99959, 
1.00025, 1.00003, 1.00056, 0.99998, 1.41144, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99999, 
0.99973, 0.99973, 1.00002, 0.99998, 1.4
 0579, 0.99988, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 0.99998, 0.99935, 0.99998, 0.8121, 
0.99998, 1.00087, 1.00026, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 1.00026, 1.00026, 
1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99955, 
1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 0.99998, 0.99998, 1, 1.00001, 0.99561, 0.99973, 1.00041, 1, 1, 0.99998, 
1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1.00026, 1.41144, 0.99995, 0.99995, 0.99995, 0.99995, 1.00026, 
1.00026, 0.99973, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99973, 0.9993, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1, 1, 1, 1, 0.99973, 0.99902];
+exports.HelveticaBoldFactors = HelveticaBoldFactors;
+const HelveticaBoldLineHeight = 1.2;
+exports.HelveticaBoldLineHeight = HelveticaBoldLineHeight;
+const HelveticaBoldItalicFactors = [0.76116, 1, 0.99977, 1, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91155, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 1, 0.99977, 1.00026, 0.99977, 0.99973, 
1.00026, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 1, 
0.99977, 0.99977, 1.0006, 0.99971, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 0.99969, 1.0006, 0.99973, 0.99973, 0.99977, 0.99977, 0.99977, 1.00026, 1.00026, 1.00001, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 
1, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 0.9998, 1.00022, 0.99972, 1.00022, 
1.00022, 1.00022, 1.00001, 0.99968, 
 1.00032, 1.00047, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99944, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00022, 1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 
1.00001, 0.99981, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 0.99966, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 
1.00001, 1.00001, 0.99973, 1.000
 66, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 
0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99966, 
1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99964, 
0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 
0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 
0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 1.00044, 1.00026, 0.99949, 
1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.99973, 0.99967, 1, 1.00026, 
1, 0.99971, 0.99978, 1, 0.99973, 0.99981, 0.99981, 0.99973, 0.99977, 1, 0.99973, 1.00031, 0.99973, 0.99973, 
1.00049, 1, 1.00098, 1, 1, 1, 1, 1.00003, 1.00003, 0.99959, 0.9999, 0.99973, 1.00026, 1.0006, 1.00077, 
1.00064, 1.41144, 0.99959, 0.99959, 0.99998,
  0.99998, 0.99998, 1, 1.00077, 0.99972, 0.99973, 0.99973, 0.99998, 1, 1, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99998, 0.99973, 1.00063, 0.99999, 0.99998, 1, 0.99962, 0.99998, 1.0006, 1, 1, 1.00025, 0.99973, 1, 1.00026, 
0.99973, 0.99973, 1.0044, 1.00026, 1.00024, 0.99942, 0.9995, 0.99998, 1, 0.99998, 1.06409, 1.36625, 1.41144, 
0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99998, 1, 0.99973, 1, 0.99973, 1.00026, 0.99973, 1.00101, 1.00101, 1.00003, 0.99915, 0.99984, 1.00026, 
1.00026, 1.00026, 0.99998, 0.99999, 0.99998, 0.99998, 1, 0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 
0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99998, 1, 
1.00003, 1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 1.00026, 1.00026, 1.00026, 1.00042, 0.99999, 0.99998, 
1, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 
0.99561, 0.99999, 0.99999, 0.99977, 1.
 0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 1.00014, 0.99973, 0.99973, 1.0006, 
1.0006, 0.99973, 1.01011, 1.0006, 0.99999, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 1.0006, 0.99972, 
1.0006, 1.40579, 0.99982, 0.60299, 1, 1, 1.00003, 1.00106, 1.01322, 1.00003, 1, 1, 1.00026, 1.00026, 0.9993, 
1.00026, 1.00026, 0.99973, 1, 1.00031, 1.00026, 0.99973, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 
1.00026, 1.00016, 0.99998, 1.00026, 1.00026, 1.00026, 0.99943, 0.99943, 1.00026, 1.00026, 0.99973, 1.00002, 
1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99998, 
0.99998, 0.99972, 0.99982, 1.0006, 1, 1, 1.00055, 1.00012, 1.00003, 1.06409, 1.20985, 1.00007, 1.00026, 
1.00026, 1.00026, 0.99974, 1, 1, 1, 1.0006, 1.0006, 1.0006, 1.0006, 1.00087, 0.99959, 0.99959, 1.00031, 
0.99959, 0.99959, 1.00025, 1.00003, 0.99923, 0.99998, 1.41144, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99999, 0.99973, 0.99973, 1.00002, 0.99
 998, 1.40579, 1.00064, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 0.99998, 1.00076, 0.99998, 
0.8121, 0.99998, 1.00069, 1.00026, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 1.00026, 
1.00026, 1.00026, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 
0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 0.99998, 0.99998, 1, 1.00001, 0.99967, 0.99973, 0.98685, 1, 1, 
0.99998, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1.00026, 1.41144, 0.99948, 0.99948, 0.99948, 0.99948, 
1.00026, 1.00026, 0.99973, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 0.99973, 1.00065, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 1, 1, 1, 1, 0.99973, 1.00061];
+exports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors;
+const HelveticaBoldItalicLineHeight = 1.35;
+exports.HelveticaBoldItalicLineHeight = HelveticaBoldItalicLineHeight;
+const HelveticaItalicFactors = [0.76116, 1, 1.00001, 1, 1, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91221, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 1.00054, 0.99977, 0.99977, 0.99977, 
0.99973, 1.00026, 1.00022, 0.99945, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 
1, 0.99977, 0.99977, 1.0006, 0.99946, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00084, 1.0006, 1, 1, 1.00001, 1.00001, 1.00001, 0.99973, 0.99973, 1.00001, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 1, 
1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 1.00013, 1.00022, 1.00007, 1.00022, 
1.00022, 1.00022, 1.00001, 1.0001, 1.00054, 1
 .00052, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00065, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00022, 
1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 
0.99973, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 0.99933, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99998, 1, 0.99973, 0.99982, 0.99982, 1, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 
1.00001, 1.00001, 1.00038, 0.99954
 , 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 
1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99962, 
1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99975, 0.99973, 
1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 
1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 
0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99895, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 
0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 1, 1.00051, 1, 0.99973, 1, 1.00423, 0.99925, 0.99999, 0.99973, 
0.99945, 0.99945, 0.99973, 1.00001, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1.00049, 1.00245, 1, 1, 1, 
0.99949, 1.00003, 0.99959, 0.99987, 0.99973, 0.99973, 1.0006, 1.0009, 0.99949, 1.41144, 1.00005, 1.00005, 
1.0006, 1.0006, 0.99998, 1,
  1.0009, 0.99972, 1, 1, 0.99998, 1, 1, 1, 1, 1, 1, 0.99998, 0.99973, 1.00019, 0.99999, 0.99998, 1, 0.99962, 
1.0006, 1.0006, 1, 1, 1.00025, 0.99973, 1, 0.99973, 0.99973, 0.99973, 1.0288, 0.99973, 1.00024, 1.0006, 
0.9995, 0.99998, 1, 0.99998, 1.06409, 1.36625, 1.41144, 0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 0.99973, 1, 0.99973, 0.99973, 0.99973, 
0.99897, 0.99897, 1.00003, 1.00003, 0.99984, 0.99968, 0.99968, 0.99973, 1.0006, 1, 0.99998, 1.0006, 1, 
0.99999, 1, 0.99973, 1.00002, 0.99998, 0.99973, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 
0.99973, 0.99973, 1.00026, 0.99998, 1, 1.00003, 1.00031, 0.99973, 0.99973, 0.99998, 0.99998, 0.99973, 
0.99973, 0.99973, 1.00042, 0.99999, 0.99998, 1, 0.99924, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00034, 
1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 1.00035, 0.99999, 0.99999, 0.99977, 0.99924, 0.99924, 0.99924, 
0.99924, 0.99924, 1.0006, 0.99924, 0.99924, 1, 1
 , 1, 1, 0.99924, 0.99924, 0.99962, 1.06311, 0.99924, 1.00024, 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 
0.99924, 0.95317, 0.99924, 1.40579, 0.99999, 0.60299, 1, 1, 1.00003, 1.00267, 1.01487, 1.00003, 1, 1, 
0.99973, 0.99973, 1.00041, 0.99973, 0.99973, 0.99973, 1, 1.00031, 0.99973, 1, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 1.00016, 0.99998, 0.99973, 0.99973, 0.99973, 1.00025, 1.00025, 0.99973, 0.99973, 
0.99973, 1.00002, 1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 1, 1.00026, 1.00026, 0.99973, 0.99973, 0.9998, 
0.99998, 0.99998, 0.96329, 0.99982, 1.0006, 1, 1.00023, 0.99947, 1.00012, 1.00003, 1.06409, 1.20985, 1.00063, 
0.99973, 0.99973, 1.00026, 1.00006, 0.99998, 0.99998, 0.99998, 0.99924, 0.99924, 0.99924, 0.99924, 1.00043, 
0.99998, 0.99998, 0.8254, 0.99998, 0.99998, 1.00025, 1.00003, 1.00043, 0.99998, 1.41144, 1, 1, 1, 1, 1, 1, 
0.99999, 0.99973, 0.99973, 1.00002, 0.99998, 1.40579, 0.99995, 1, 0.99973, 1.0006, 1, 0.99953, 0.99973, 
1.39713, 1.00054, 1.0006, 0.99994, 1
 .0006, 0.89547, 1.0006, 0.99911, 0.99973, 0.99973, 1.00002, 1.00002, 0.99998, 1, 0.99998, 1, 1.00026, 
1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 1.0006, 0.99998, 1, 1.00001, 0.99954, 0.99973, 
0.98332, 1, 1, 0.99998, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 0.99973, 1.41144, 1.00036, 1.00036, 
1.00036, 1.00036, 0.99973, 0.99973, 1, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 1.0005, 1, 1, 1, 1, 
0.99973, 1, 1, 1, 1, 1, 0.99973, 0.99918];
+exports.HelveticaItalicFactors = HelveticaItalicFactors;
+const HelveticaItalicLineHeight = 1.35;
+exports.HelveticaItalicLineHeight = HelveticaItalicLineHeight;
+const HelveticaRegularFactors = [0.76116, 1, 1.00001, 1, 1, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 0.99928, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 0.99977, 1.00001, 0.99977, 0.99977, 0.99977, 0.91621, 1.00001, 1.00001, 1.00001, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.9998, 1.00001, 1.00001, 0.99977, 0.99977, 1.00013, 0.99977, 
0.99973, 1.00026, 1.00022, 1.0004, 1.00022, 1.00022, 1.00022, 1.00022, 0.99977, 0.99999, 0.99861, 0.99861, 1, 
0.99977, 0.99977, 1.0006, 1.00019, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 
1.0006, 1.00055, 1.0006, 1, 1, 1.00001, 1.00001, 1.00001, 0.99973, 0.99973, 1.00005, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99999, 0.99999, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00022, 1, 
1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1, 0.99941, 1.00022, 0.99947, 1.00022, 
1.00022, 1.00022, 1.00001, 1.00019, 0.99977, 
 0.99946, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 0.99973, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00022, 
1.00001, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 
0.99945, 0.99977, 0.99977, 1.00001, 1.00016, 1.00016, 1.00016, 1.00016, 1.00016, 1.00001, 1.00015, 1.00001, 
1.00001, 1.00001, 1.00001, 1.00001, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99998, 0.99973, 0.99982, 0.99982, 1, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 
0.99928, 0.99963, 0.99999, 1.00035,
  1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 
1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 1.00047, 
1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.9996, 0.99973, 
1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 
1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 
1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99968, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 
1.00062, 0.99973, 1.00114, 1, 1.00035, 1, 0.99955, 1, 0.99971, 0.99925, 1.00023, 0.99973, 0.99978, 0.99978, 
0.99973, 1.00001, 1, 0.99973, 1.00031, 0.99973, 0.99973, 1, 1, 1, 1, 1, 1, 1, 0.99949, 1.00003, 0.99959, 
0.99987, 0.99973, 0.99973, 1.0006, 1.0009, 0.99966, 1.41144, 1.00005, 1.00005, 1.0006, 1.0006, 0.99998, 
1.0009, 0.99972, 1, 1, 0.99998, 1, 1
 , 1, 1, 0.99998, 0.99973, 1.00019, 0.99999, 0.99998, 0.99962, 1.0006, 1.0006, 1.00025, 0.99973, 0.99973, 
0.99973, 0.99973, 1.04596, 0.99973, 1.00024, 1.00065, 0.9995, 0.99998, 0.99998, 1.06409, 1.36625, 1.41144, 
0.99973, 0.99998, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1, 
0.99973, 1, 0.99973, 0.99973, 0.99973, 1.00045, 1.00045, 1.00003, 0.99915, 0.99984, 0.99973, 0.99973, 
0.99973, 1.0006, 1, 0.99998, 1.0006, 1, 0.99999, 1, 0.99973, 1.00002, 0.99973, 0.99973, 0.99973, 0.99973, 1, 
0.99973, 0.99973, 0.99973, 0.99973, 1.00026, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 1.00003, 1.00031, 
0.99973, 0.99973, 0.99998, 0.99998, 0.99973, 0.99973, 0.99973, 1.00042, 0.99999, 0.99998, 0.99924, 1.0006, 
1.0006, 1.0006, 1.0006, 1.0006, 1.00034, 1.0006, 1.00015, 1.00027, 0.99999, 0.99999, 1.00035, 0.99999, 
0.99999, 0.99977, 0.99924, 0.99924, 0.99924, 0.99924, 0.99924, 1.0006, 0.99924, 0.99924, 1, 1, 1, 1, 0.99924, 
0.99924, 1, 1.02572, 0.99924, 1.00005, 
 1.00003, 1.00031, 1.41144, 0.99973, 1.00003, 0.99924, 0.95317, 0.99924, 1.40579, 0.99999, 0.60299, 1, 1, 
1.00003, 1.00267, 0.96499, 1.00003, 1, 1, 0.99973, 0.99973, 0.99999, 0.99973, 0.99973, 0.99973, 1, 1.00031, 
0.99973, 1, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.00016, 0.99998, 0.99973, 0.99973, 
0.99973, 1.00031, 1.00031, 0.99973, 0.99973, 0.99973, 1.00002, 1.00002, 1.00002, 1.40483, 0.99968, 0.99936, 
1, 1.00026, 1.00026, 0.99973, 0.99973, 0.9998, 0.99998, 0.99998, 0.96329, 0.99982, 1.0006, 1, 1.00023, 
0.99933, 1.00008, 1.00003, 1.06409, 1.20985, 1.00015, 0.99973, 0.99973, 1.00026, 1.00006, 0.99998, 0.99998, 
0.99998, 0.99924, 0.99924, 0.99924, 0.99924, 1.00043, 0.99998, 0.99998, 0.8254, 0.99998, 0.99998, 1.00025, 
1.00003, 1.00027, 0.99998, 1.41144, 1, 1, 1, 1, 1, 1, 0.99999, 0.99973, 0.99973, 1.00002, 1.40579, 0.9997, 1, 
0.99973, 1.0006, 1, 0.99953, 0.99973, 1.39713, 1.00054, 1.0006, 0.99995, 1.0006, 0.84533, 1.0006, 0.99973, 
0.99973, 0.99973, 1.00002, 1.00002, 0.9
 9998, 0.99998, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 
0.99973, 0.99973, 0.99973, 0.99973, 0.99955, 1.0006, 0.99998, 1, 1, 1, 1, 1.00026, 1.0006, 0.99998, 1, 
1.00001, 0.99561, 0.99973, 1.00073, 1, 1, 0.99998, 1, 1, 1, 1, 1, 0.99991, 1, 1.66475, 1.0006, 1, 1, 1, 1, 1, 
0.99973, 1.41144, 1.00023, 1.00023, 1.00023, 1.00023, 0.99973, 0.99973, 1, 0.99977, 0.99977, 0.99977, 
0.99977, 0.99977, 1, 1.00055, 1, 1, 1, 1, 0.99973, 1, 1, 1, 1, 1, 0.99973, 1.00019];
+exports.HelveticaRegularFactors = HelveticaRegularFactors;
+const HelveticaRegularLineHeight = 1.2;
+exports.HelveticaRegularLineHeight = HelveticaRegularLineHeight;
+
+/***/ }),
+/* 58 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.LiberationSansRegularWidths = exports.LiberationSansItalicWidths = exports.LiberationSansBoldWidths 
= exports.LiberationSansBoldItalicWidths = void 0;
+const LiberationSansBoldWidths = [365, 0, 722, 1000, 1000, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 
722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 719, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 723, 667, 667, 853, 722, 906, 722, 556, 611, 778, 601, 778, 778, 778, 778, 722, 604, 354, 354, 604, 
722, 722, 278, 785, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 474, 278, 556, 556, 722, 722, 722, 611, 
611, 667, 611, 611, 611, 611, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 778, 
778, 778, 802, 838, 778, 825, 778, 778, 778, 667, 821, 722, 809, 778, 722, 722, 722, 722, 667, 667, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 600, 
611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 927, 722, 722, 667, 
944, 944, 94
 4, 944, 944, 667, 644, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 333, 556, 
889, 889, 1000, 722, 719, 722, 567, 712, 667, 669, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 
722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 487, 885, 567, 711, 667, 278, 
276, 556, 1094, 1062, 875, 610, 622, 556, 618, 615, 417, 635, 556, 556, 709, 497, 615, 615, 500, 635, 740, 
604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 447, 611, 417, 
552, 556, 278, 281, 278, 969, 906, 611, 500, 556, 719, 778, 604, 611, 885, 489, 1115, 556, 615, 615, 556, 
722, 333, 556, 549, 556, 556, 1000, 500, 1000, 1000, 500, 500, 500, 584, 584, 389, 975, 556, 611, 278, 280, 
610, 708, 389, 389, 333, 333, 333, 333, 280, 350, 556, 556, 333, 333, 222, 556, 556, 556, 556, 333, 556, 576, 
604, 333, 333, 656, 333, 278, 333, 222, 737, 556, 333, 611, 556, 556, 719, 611, 400, 606, 510, 333, 333, 465, 
549, 729, 708, 556, 333,
  278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 611, 556, 475, 451, 584, 583, 
600, 611, 611, 611, 333, 604, 333, 333, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 611, 556, 611, 
611, 611, 611, 611, 333, 333, 584, 549, 556, 556, 333, 333, 611, 611, 611, 594, 604, 333, 333, 278, 278, 278, 
278, 278, 278, 556, 278, 713, 274, 604, 604, 722, 604, 604, 1052, 278, 278, 278, 278, 278, 278, 278, 278, 
556, 558, 556, 556, 278, 278, 556, 385, 278, 479, 584, 549, 708, 556, 584, 278, 494, 278, 708, 889, 552, 750, 
333, 584, 240, 612, 584, 500, 750, 611, 611, 708, 611, 611, 556, 333, 549, 611, 556, 556, 611, 611, 611, 611, 
611, 944, 333, 611, 611, 611, 845, 845, 611, 611, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 611, 611, 
556, 333, 333, 494, 889, 278, 1000, 1094, 715, 766, 584, 549, 823, 753, 611, 611, 611, 474, 500, 500, 500, 
278, 278, 278, 278, 238, 389, 389, 549, 389, 389, 737, 584, 619, 333, 708, 556, 556, 556, 556, 556, 556, 479, 
556, 556, 834, 333, 
 708, 684, 520, 556, 278, 1021, 531, 556, 713, 917, 333, 446, 333, 479, 333, 541, 611, 556, 834, 834, 333, 
333, 333, 1000, 990, 990, 990, 990, 556, 611, 611, 611, 611, 611, 611, 611, 611, 556, 552, 278, 333, 333, 
333, 576, 333, 611, 333, 333, 333, 667, 722, 556, 615, 333, 333, 333, 396, 768, 612, 167, 278, 750, 333, 611, 
611, 611, 708, 582, 582, 582, 582, 611, 611, 556, 778, 778, 778, 778, 778, 556, 445, 556, 556, 556, 556, 556, 
556, 500, 500, 500, 500, 556, 460];
+exports.LiberationSansBoldWidths = LiberationSansBoldWidths;
+const LiberationSansBoldItalicWidths = [365, 0, 722, 1000, 1000, 722, 722, 722, 722, 722, 722, 722, 722, 
722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 671, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 723, 667, 667, 854, 722, 906, 722, 556, 611, 778, 610, 778, 778, 778, 778, 722, 604, 354, 
354, 604, 722, 722, 278, 782, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 473, 278, 556, 556, 722, 722, 
722, 611, 611, 667, 611, 611, 611, 611, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 
778, 778, 778, 778, 781, 847, 778, 844, 778, 778, 778, 667, 822, 718, 829, 778, 722, 722, 722, 722, 667, 667, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 
667, 590, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 930, 722, 
722, 667, 944, 9
 44, 944, 944, 944, 667, 657, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 333, 
556, 889, 889, 1000, 722, 708, 722, 614, 722, 667, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 
667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 575, 886, 614, 719, 667, 
278, 278, 556, 1094, 1042, 854, 622, 677, 556, 619, 604, 534, 618, 556, 556, 736, 510, 611, 611, 507, 622, 
740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 467, 611, 
469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 556, 719, 778, 611, 611, 885, 516, 1146, 556, 620, 620, 
556, 722, 333, 556, 549, 556, 556, 1000, 500, 999, 1000, 500, 500, 500, 584, 584, 389, 975, 556, 611, 278, 
280, 621, 708, 389, 389, 333, 333, 333, 333, 280, 350, 556, 556, 333, 333, 222, 556, 556, 556, 556, 333, 556, 
578, 604, 333, 333, 656, 333, 278, 333, 222, 737, 556, 333, 611, 556, 556, 740, 611, 400, 610, 510, 333, 333, 
333, 549, 729, 708, 556, 
 333, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 611, 556, 479, 479, 584, 
583, 600, 611, 611, 611, 333, 604, 333, 333, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 611, 556, 
611, 611, 611, 611, 611, 333, 333, 584, 549, 556, 556, 333, 333, 611, 611, 611, 594, 604, 333, 333, 278, 278, 
278, 278, 278, 278, 556, 278, 713, 274, 604, 604, 722, 604, 604, 1052, 278, 278, 278, 278, 278, 278, 278, 
278, 556, 566, 556, 556, 278, 278, 556, 396, 278, 479, 584, 549, 708, 556, 584, 278, 494, 278, 708, 889, 552, 
750, 333, 584, 240, 603, 584, 500, 750, 611, 611, 708, 611, 611, 556, 333, 549, 611, 556, 556, 611, 611, 611, 
611, 611, 944, 333, 611, 611, 611, 834, 834, 611, 611, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 611, 
611, 556, 333, 333, 494, 889, 278, 1000, 1104, 704, 712, 584, 549, 823, 773, 611, 611, 611, 474, 500, 500, 
500, 278, 278, 278, 278, 238, 389, 389, 549, 389, 389, 737, 584, 605, 333, 708, 556, 556, 556, 556, 556, 556, 
479, 556, 556, 834, 3
 33, 708, 664, 532, 556, 278, 1021, 531, 556, 713, 917, 333, 409, 333, 479, 333, 558, 611, 556, 834, 834, 
333, 333, 333, 1000, 990, 990, 990, 990, 556, 611, 611, 611, 611, 611, 611, 611, 611, 556, 552, 278, 333, 
333, 333, 576, 333, 611, 333, 333, 333, 667, 719, 556, 619, 333, 333, 333, 396, 768, 612, 167, 278, 750, 333, 
611, 611, 611, 708, 591, 591, 591, 591, 611, 611, 556, 778, 778, 778, 778, 778, 556, 450, 556, 556, 556, 556, 
556, 556, 500, 500, 500, 500, 556, 492];
+exports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths;
+const LiberationSansItalicWidths = [365, 0, 667, 1000, 1000, 667, 667, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 667, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 671, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 723, 667, 667, 789, 722, 846, 722, 556, 611, 778, 570, 778, 778, 778, 778, 722, 604, 354, 354, 
604, 722, 722, 278, 733, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 389, 278, 500, 500, 667, 667, 667, 
556, 556, 667, 556, 556, 556, 556, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 
778, 778, 778, 761, 775, 778, 794, 778, 778, 778, 667, 837, 725, 831, 778, 722, 722, 722, 722, 667, 667, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 
600, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 865, 722, 722, 
667, 944, 944, 
 944, 944, 944, 667, 648, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 294, 
556, 889, 889, 1000, 667, 651, 667, 544, 704, 667, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 
667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 492, 843, 544, 708, 667, 
278, 278, 500, 1066, 982, 844, 589, 639, 556, 562, 522, 493, 553, 556, 556, 688, 465, 556, 556, 472, 564, 
686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 339, 556, 
378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 500, 724, 778, 556, 556, 885, 323, 1083, 556, 570, 570, 
556, 667, 278, 556, 549, 556, 556, 1000, 500, 1000, 998, 500, 500, 500, 469, 584, 389, 1015, 556, 556, 278, 
260, 571, 708, 334, 334, 278, 278, 333, 285, 260, 350, 500, 500, 333, 324, 222, 500, 500, 500, 500, 333, 556, 
546, 604, 333, 324, 656, 278, 278, 333, 222, 737, 556, 333, 556, 556, 556, 625, 556, 400, 556, 510, 333, 316, 
333, 549, 729, 708, 556, 333, 
 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 1000, 556, 1000, 556, 556, 556, 439, 439, 584, 584, 
600, 555, 555, 556, 278, 500, 333, 278, 750, 604, 1000, 556, 834, 333, 556, 556, 333, 556, 556, 500, 556, 
556, 556, 556, 611, 333, 294, 584, 549, 556, 556, 333, 333, 556, 556, 556, 594, 604, 333, 398, 222, 278, 278, 
278, 278, 278, 444, 278, 713, 274, 604, 604, 719, 604, 604, 1052, 222, 222, 222, 222, 222, 278, 222, 222, 
500, 500, 500, 500, 222, 222, 492, 281, 222, 400, 584, 549, 708, 556, 584, 222, 494, 222, 708, 833, 552, 750, 
333, 584, 188, 548, 584, 500, 750, 556, 556, 615, 556, 556, 556, 333, 549, 556, 500, 556, 556, 556, 556, 556, 
556, 944, 333, 556, 556, 556, 779, 779, 556, 556, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 556, 556, 
537, 333, 333, 494, 889, 278, 1000, 1094, 652, 670, 584, 549, 823, 728, 556, 556, 611, 355, 333, 333, 333, 
222, 222, 222, 222, 191, 333, 333, 549, 333, 333, 737, 584, 573, 333, 708, 500, 500, 500, 500, 500, 500, 354, 
556, 556, 834, 333, 7
 08, 603, 486, 556, 278, 1021, 531, 556, 713, 917, 278, 374, 278, 354, 278, 542, 556, 556, 834, 834, 333, 
328, 333, 1000, 990, 990, 990, 990, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 552, 278, 333, 333, 
333, 576, 333, 611, 278, 333, 278, 667, 715, 556, 565, 333, 333, 333, 365, 768, 612, 167, 278, 750, 333, 500, 
500, 556, 708, 550, 550, 550, 550, 556, 556, 500, 722, 722, 722, 722, 722, 500, 447, 500, 500, 500, 500, 556, 
500, 500, 500, 500, 500, 556, 463];
+exports.LiberationSansItalicWidths = LiberationSansItalicWidths;
+const LiberationSansRegularWidths = [365, 0, 667, 1000, 1000, 667, 667, 667, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 667, 667, 722, 722, 722, 722, 722, 722, 667, 722, 722, 722, 668, 667, 667, 667, 667, 667, 667, 
667, 667, 667, 723, 667, 667, 784, 722, 838, 722, 556, 611, 778, 551, 778, 778, 778, 778, 722, 604, 354, 354, 
604, 722, 722, 278, 735, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 384, 278, 500, 500, 667, 667, 667, 
556, 556, 668, 556, 556, 556, 556, 833, 833, 722, 722, 722, 722, 722, 722, 778, 1000, 778, 778, 778, 778, 
778, 778, 778, 748, 752, 778, 774, 778, 778, 778, 667, 798, 722, 835, 778, 722, 722, 722, 722, 667, 667, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 
708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 667, 667, 667, 667, 667, 
618, 611, 611, 611, 611, 611, 778, 667, 722, 722, 722, 722, 722, 722, 722, 722, 722, 667, 667, 855, 722, 722, 
667, 944, 944,
  944, 944, 944, 667, 650, 667, 667, 667, 667, 667, 611, 611, 611, 611, 611, 556, 556, 556, 556, 333, 556, 
889, 889, 1000, 667, 656, 667, 542, 677, 667, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 
722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 489, 865, 542, 719, 667, 278, 
278, 500, 1057, 1010, 854, 583, 635, 556, 573, 531, 365, 583, 556, 556, 669, 458, 559, 559, 438, 583, 688, 
552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 411, 556, 365, 
510, 500, 222, 278, 222, 906, 812, 556, 438, 500, 719, 778, 552, 556, 885, 323, 1073, 556, 578, 578, 556, 
667, 278, 556, 549, 556, 556, 1000, 500, 1000, 1000, 500, 500, 500, 469, 584, 389, 1015, 556, 556, 278, 260, 
575, 708, 334, 334, 278, 278, 333, 260, 350, 500, 500, 333, 500, 500, 500, 500, 333, 556, 525, 604, 333, 656, 
278, 278, 737, 556, 556, 556, 556, 615, 556, 400, 557, 510, 333, 333, 549, 729, 708, 556, 333, 278, 556, 556, 
556, 556, 556, 556, 556, 55
 6, 556, 1000, 556, 1000, 556, 556, 556, 446, 446, 584, 583, 600, 556, 556, 556, 278, 500, 333, 278, 750, 
604, 1000, 556, 834, 556, 556, 556, 556, 500, 556, 556, 556, 556, 611, 333, 222, 222, 294, 294, 324, 324, 
316, 328, 398, 285, 333, 584, 549, 556, 556, 333, 333, 556, 556, 556, 594, 604, 333, 222, 278, 278, 278, 278, 
278, 444, 278, 713, 274, 604, 604, 719, 604, 604, 1052, 222, 222, 222, 222, 222, 278, 222, 222, 500, 500, 
500, 500, 222, 222, 500, 292, 222, 334, 584, 549, 708, 556, 584, 222, 494, 222, 708, 833, 552, 750, 333, 584, 
188, 576, 584, 500, 750, 556, 556, 604, 556, 556, 556, 333, 549, 556, 500, 556, 556, 556, 556, 556, 556, 944, 
333, 556, 556, 556, 781, 781, 556, 556, 556, 834, 834, 834, 354, 370, 365, 979, 611, 611, 556, 556, 537, 333, 
333, 494, 889, 278, 1000, 1094, 648, 690, 584, 549, 823, 713, 556, 556, 611, 355, 333, 333, 333, 222, 222, 
222, 222, 191, 333, 333, 549, 333, 333, 737, 584, 569, 333, 708, 500, 500, 500, 500, 500, 500, 354, 556, 556, 
834, 708, 617, 482, 556
 , 278, 1021, 531, 556, 713, 917, 278, 395, 278, 375, 278, 556, 556, 556, 834, 834, 333, 333, 1000, 990, 990, 
990, 990, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 552, 278, 333, 333, 333, 576, 333, 611, 278, 333, 
278, 667, 722, 556, 559, 333, 333, 333, 333, 333, 333, 333, 365, 768, 612, 167, 278, 750, 333, 333, 500, 500, 
556, 708, 547, 547, 547, 547, 556, 556, 500, 722, 722, 722, 722, 722, 500, 448, 500, 500, 500, 500, 556, 500, 
500, 500, 500, 500, 556, 441];
+exports.LiberationSansRegularWidths = LiberationSansRegularWidths;
+
+/***/ }),
+/* 59 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.MyriadProRegularLineHeight = exports.MyriadProRegularFactors = exports.MyriadProItalicLineHeight = 
exports.MyriadProItalicFactors = exports.MyriadProBoldLineHeight = exports.MyriadProBoldItalicLineHeight = 
exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0;
+const MyriadProBoldFactors = [1.36898, 1, 0.90838, 0.868, 0.868, 0.90838, 0.90838, 0.90838, 0.90838, 
0.90838, 0.90838, 0.91945, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.83637, 0.83637, 0.82391, 0.82391, 
0.82391, 0.82391, 0.82391, 0.82391, 0.91905, 0.96376, 0.96376, 0.97484, 0.90157, 0.80061, 0.80061, 0.80061, 
0.80061, 0.80061, 0.80061, 0.80061, 0.80061, 0.80061, 0.95417, 0.80061, 0.80061, 0.75261, 0.95407, 0.87992, 
0.97484, 0.99793, 0.86275, 0.8768, 0.8019, 0.8768, 0.8768, 1, 0.8768, 0.95407, 1, 1, 1, 1, 0.97069, 0.95407, 
1.0258, 0.887, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 1.0258, 0.82976, 
1.0258, 0.73901, 0.73901, 0.85022, 0.85022, 1, 0.83655, 0.83655, 0.97153, 0.83655, 1, 0.83655, 0.84638, 
1.0156, 1.0156, 0.95546, 0.95546, 0.95546, 1, 0.95546, 0.95546, 0.92179, 0.936, 0.92179, 0.92179, 0.92179, 
0.92179, 0.92179, 0.92179, 0.92179, 0.92796, 0.97268, 0.92179, 0.96034, 0.92179, 0.92179, 0.92179, 0.87107, 
0.95638, 0.92361, 0.91709, 0.92179, 0.82
 114, 0.82114, 0.82114, 1, 0.87107, 0.8096, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.8096, 0.8096, 1, 0.8096, 1, 0.96318, 0.89713, 
0.89713, 0.89713, 0.89713, 1, 0.92436, 0.86958, 0.94438, 0.94438, 0.94438, 0.94438, 0.94438, 0.94438, 
0.94438, 0.94438, 0.94438, 0.93704, 0.93704, 0.83689, 0.94438, 0.94438, 0.95353, 0.94083, 0.94083, 0.94083, 
0.94083, 0.94083, 0.91905, 0.89192, 0.90406, 0.90406, 0.90406, 0.90406, 0.90406, 0.9446, 0.9446, 0.9446, 
0.9446, 0.9446, 0.94938, 0.94938, 0.94938, 0.94938, 0.90088, 1, 0.94938, 0.9031, 0.9031, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94938, 0.94836, 0.94836, 0.94938, 0.93884, 
0.83181, 0.94938, 1.08595, 0.94938, 0
 .94938, 1, 1, 1, 1, 1, 1, 1, 1.02058, 1.02058, 1.16661, 0.78966, 0.94938, 0.97898, 1.18777, 1.01149, 
0.96174, 1, 0.80687, 0.80687, 0.94292, 0.94292, 0.90088, 1, 1.01149, 0.96544, 0.81093, 0.81093, 0.90088, 1, 
1, 0.81093, 0.81093, 0.81093, 0.81093, 0.90088, 0.99793, 0.87548, 1, 0.90088, 1, 1, 0.78076, 0.93582, 1, 1, 
0.91882, 0.99793, 1, 0.97571, 0.94219, 0.94219, 0.84313, 0.97571, 0.89022, 0.9498, 1, 0.90088, 1, 0.9358, 
1.08595, 1, 1, 0.99793, 0.90088, 0.98621, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 
0.94938, 0.99793, 1, 1, 0.94938, 1, 0.89903, 0.95933, 0.94938, 0.98607, 1.0373, 1.02058, 1, 1.36145, 0.95933, 
0.95933, 0.93969, 0.80479, 1, 0.80479, 1.024, 1, 1, 1, 0.99793, 1, 1, 0.99793, 0.99793, 1, 1, 0.9577, 
0.92601, 0.9577, 0.9577, 1, 0.9577, 0.98225, 0.90088, 1, 1.02058, 1.08595, 0.8361, 0.8361, 0.81079, 0.81079, 
0.95933, 0.95933, 0.95933, 1, 1, 0.90088, 1, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 1.01591, 
0.98621, 1.05486, 1.30692, 1, 1, 1, 1, 1
 , 1, 0.98621, 1.0078, 1.0078, 1.0078, 1.0078, 0.98621, 1.0474, 1.0474, 0.97455, 0.98275, 1, 0.97455, 
0.98981, 0.98981, 0.9314, 0.73977, 1, 0.73903, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.16161, 1.033, 1, 0.9672, 
0.54324, 1, 1, 1.02058, 1, 0.95617, 1.02058, 1, 1, 0.95933, 0.95933, 0.8271, 0.95933, 1, 0.99793, 1, 1.08595, 
0.95933, 0.91701, 0.98894, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 0.91964, 0.90088, 0.9446, 0.9446, 0.9446, 
0.86774, 0.86774, 0.9446, 0.9446, 0.99793, 1, 0.99642, 0.99642, 1, 1.0213, 1.05686, 1, 0.9446, 0.9446, 
0.9446, 0.97898, 0.97455, 0.94292, 0.94292, 1.17173, 0.9897, 0.93582, 1.285, 1, 0.99394, 0.78367, 1.02058, 
1.08595, 0.80535, 0.96361, 0.97407, 0.72851, 0.72851, 0.83734, 0.918, 0.908, 0.908, 0.93582, 1, 0.93582, 
0.93582, 0.86209, 0.97646, 0.97646, 1.0732, 0.97646, 1, 0.62295, 1, 0.9553, 0.90088, 1, 0.78036, 0.78036, 
0.78036, 1, 0.78036, 1, 1, 1.00872, 0.99793, 1, 1, 1, 0.86832, 1, 0.99793, 1.19137, 1, 1, 0.99793, 0.76169, 
1, 1.10208, 1.0128, 1.10208, 0.77452, 
 1, 1.05453, 0.97898, 0.99793, 1, 0.99642, 0.90088, 1, 0.90989, 0.65, 1, 1, 1, 1, 0.99793, 0.95442, 0.95442, 
0.95442, 0.95442, 0.95442, 0.95442, 0.95442, 0.95442, 0.89903, 1, 0.72706, 0.96694, 1, 1, 1, 1, 0.89713, 
1.10208, 0.90088, 0.78076, 1, 1, 1, 1, 0.96694, 1, 1, 1, 1, 1, 0.74854, 0.93582, 1, 1, 1, 1, 0.95442, 1, 
0.95871, 0.95871, 0.95871, 0.95871, 0.95442, 0.95442, 0.95298, 0.97579, 0.97579, 0.97579, 0.97579, 0.97579, 
0.9332, 1.05993, 0.94039, 0.94039, 0.94039, 0.94039, 0.99793, 0.94039, 0.938, 0.938, 0.938, 0.938, 0.99793, 
0.95776];
+exports.MyriadProBoldFactors = MyriadProBoldFactors;
+const MyriadProBoldLineHeight = 1.2;
+exports.MyriadProBoldLineHeight = MyriadProBoldLineHeight;
+const MyriadProBoldItalicFactors = [1.36898, 1, 0.85576, 0.845, 0.845, 0.85576, 0.85576, 0.85576, 0.85576, 
0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.80591, 0.80591, 0.80729, 0.80729, 
0.80729, 0.80729, 0.80729, 0.80729, 0.85308, 0.94299, 0.94299, 0.95961, 0.94729, 0.77512, 0.77512, 0.77512, 
0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.92098, 0.77512, 0.77512, 0.66862, 0.92222, 0.7927, 
0.95961, 0.97276, 0.83655, 0.86523, 0.7805, 0.86523, 0.86523, 1, 0.86523, 0.92222, 1, 1, 1, 1, 0.92222, 
0.92222, 0.98621, 0.86036, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 0.98621, 
0.98621, 0.69323, 0.98621, 0.71743, 0.71743, 0.81698, 0.81698, 1, 0.79726, 0.79726, 0.92655, 0.79726, 1, 
0.79726, 0.81691, 0.98558, 0.98558, 0.92222, 0.92222, 0.92222, 1, 0.92222, 0.92222, 0.90637, 0.909, 0.90637, 
0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 0.92346, 0.89711, 0.90637, 0.88127, 0.90251, 0.90251, 
0.90637, 0.83809, 0.93157, 0.9097
 6, 0.83392, 0.90637, 0.80729, 0.80729, 0.80729, 1, 0.83809, 0.76463, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.76463, 0.76463, 1, 
0.76463, 1, 0.94523, 0.86275, 0.86275, 0.86275, 0.86275, 1, 0.90637, 0.83659, 0.90699, 0.90699, 0.90699, 
0.90699, 0.90699, 0.90699, 0.90699, 0.90699, 0.90699, 0.83509, 0.83509, 0.72459, 0.90699, 0.90699, 0.91605, 
0.9154, 0.9154, 0.9154, 0.9154, 0.9154, 0.85308, 0.85359, 0.85458, 0.85458, 0.85458, 0.85458, 0.85458, 
0.90531, 0.90531, 0.90531, 0.90531, 0.90531, 0.99613, 0.99613, 0.99613, 0.99613, 1.18616, 1, 0.99613, 
0.85811, 0.85811, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.99613, 0.92886, 0.92886, 0.99613, 0.92222, 0.8017
 8, 0.99613, 1.08595, 0.99613, 0.99613, 1, 1, 1, 1, 1, 1, 1, 1.02058, 1.02058, 1.16148, 0.76813, 0.99613, 
0.91677, 1.21296, 0.8578, 0.90557, 1, 0.80687, 0.80687, 0.94292, 0.94292, 1.18616, 1, 0.8578, 0.95973, 
0.78216, 0.78216, 1.18616, 1, 1, 0.78216, 0.78216, 0.78216, 0.78216, 1.18616, 0.97276, 0.81539, 1, 1.18616, 
1, 1, 0.78076, 0.93582, 1, 1, 0.91339, 0.97276, 1, 0.91677, 0.9332, 0.9332, 0.76783, 0.91677, 0.89022, 
0.90276, 1, 1.18616, 1, 1.30628, 1.08595, 1, 1, 0.97276, 1.18616, 0.95381, 0.90083, 0.90083, 0.90083, 
0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.97276, 1, 1, 0.90083, 1, 0.89903, 0.92168, 0.90083, 0.91324, 
0.91324, 1.02058, 1, 1.36145, 0.92168, 0.92168, 0.9135, 0.80779, 1, 0.80779, 0.98796, 1, 1, 1, 0.97276, 1, 1, 
0.97276, 0.97276, 1, 1, 0.9135, 0.86847, 0.9135, 0.9135, 1, 0.9135, 0.94951, 1.18616, 1, 1.02058, 1.08595, 
0.82891, 0.82711, 0.80479, 0.80178, 0.92168, 0.92168, 0.92168, 1, 1, 1.18616, 1, 0.95381, 0.95381, 0.95381, 
0.95381, 0.95381, 0.95381, 0.97096, 0.95381
 , 1.05486, 1.23026, 1, 1, 1, 1, 1, 1, 0.95381, 0.95381, 0.95381, 0.95381, 0.95381, 0.95381, 0.98981, 
0.98981, 0.95298, 0.9224, 1, 0.95298, 0.95381, 0.95381, 0.85408, 0.6894, 1, 0.74321, 1.02058, 1.08595, 1, 1, 
1.02058, 1, 1.20006, 1.0006, 1, 0.93459, 0.71526, 1, 1, 1.02058, 1, 0.92699, 1.02058, 1, 1, 0.92168, 0.92168, 
0.79464, 0.92168, 1, 0.97276, 1, 1.08595, 0.92168, 0.86847, 0.97276, 0.91513, 0.91513, 0.91513, 0.91513, 
0.91513, 0.87514, 1.18616, 0.91513, 0.91513, 0.91513, 0.85923, 0.85923, 0.91513, 0.91513, 0.97276, 1, 
0.99043, 0.99043, 1, 1.08074, 1.04864, 1, 0.91677, 0.91677, 0.91513, 0.92004, 0.96736, 0.94292, 0.94292, 
1.14542, 0.97733, 0.93582, 1.26, 1, 0.97355, 0.80487, 1.02058, 1.08595, 0.79199, 0.89398, 0.91677, 0.71541, 
0.71541, 0.81625, 0.896, 0.896, 0.896, 0.91782, 1, 0.91782, 0.91782, 0.83266, 0.95077, 0.95077, 1.03493, 
0.95077, 1, 0.55509, 1, 0.93481, 1.18616, 1, 0.748, 0.748, 0.748, 1, 0.748, 1, 1, 0.99973, 0.97276, 1, 1, 1, 
0.88159, 1, 0.97276, 1.17337, 1, 1, 0.97276
 , 0.78694, 1, 1.04502, 1.05214, 1.04502, 0.72651, 1, 0.99531, 0.92332, 0.97276, 1, 0.99043, 1.18616, 1, 
1.00899, 0.698, 1, 1, 1, 1, 0.97276, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 
0.89903, 1, 0.66227, 0.96694, 1, 1, 1, 1, 0.86275, 1.04502, 1.18616, 0.78076, 1, 1, 1, 1, 0.96694, 1, 1, 1, 
1, 1, 0.85633, 0.93582, 1, 1, 1, 1, 0.91677, 1, 0.90646, 0.90646, 0.90646, 0.90646, 0.91677, 0.91677, 
0.92061, 0.94236, 0.94236, 0.94236, 0.94236, 0.94236, 0.89544, 1.0051, 0.89364, 0.89364, 0.89364, 0.89364, 
0.97276, 0.89364, 0.9, 0.9, 0.9, 0.9, 0.97276, 0.86842];
+exports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors;
+const MyriadProBoldItalicLineHeight = 1.2;
+exports.MyriadProBoldItalicLineHeight = MyriadProBoldItalicLineHeight;
+const MyriadProItalicFactors = [1.36898, 1, 0.85158, 0.773, 0.773, 0.85158, 0.85158, 0.85158, 0.85158, 
0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.77812, 0.77812, 0.76852, 0.76852, 
0.76852, 0.76852, 0.76852, 0.76852, 0.78112, 0.89591, 0.89591, 0.90561, 0.88836, 0.70466, 0.70466, 0.70466, 
0.70466, 0.70466, 0.70466, 0.70466, 0.70466, 0.70466, 0.87396, 0.70466, 0.70466, 0.62264, 0.86822, 0.7646, 
0.90561, 0.88465, 0.76125, 0.80094, 0.76449, 0.80094, 0.80094, 1, 0.80094, 0.86822, 1, 1, 1, 1, 0.86822, 
0.86822, 0.83864, 0.81402, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 0.83864, 
0.83864, 0.65351, 0.83864, 0.728, 0.728, 0.77212, 0.77212, 1, 0.79475, 0.79475, 0.85308, 0.79475, 1, 0.79475, 
0.80553, 0.93637, 0.93637, 0.87514, 0.87514, 0.87514, 1, 0.87514, 0.87514, 0.8588, 0.867, 0.8588, 0.8588, 
0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 0.89386, 0.89947, 0.8588, 0.86026, 0.85751, 0.85751, 0.8588, 0.76013, 
0.82565, 0.85701, 0.77899, 0.858
 8, 0.72421, 0.72421, 0.72421, 1, 0.76013, 0.69866, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.69866, 0.69866, 1, 0.69866, 1, 0.89058, 
0.77598, 0.77598, 0.77598, 0.77598, 1, 0.8588, 0.76013, 0.85991, 0.85991, 0.85991, 0.85991, 0.85991, 0.85991, 
0.85991, 0.85991, 0.85991, 0.8156, 0.8156, 0.69461, 0.85991, 0.85991, 0.80811, 0.87832, 0.87832, 0.87832, 
0.87832, 0.87832, 0.78112, 0.82352, 0.77512, 0.77512, 0.77512, 0.77512, 0.77512, 0.8562, 0.8562, 0.8562, 
0.8562, 0.8562, 0.93859, 0.93859, 0.93859, 0.93859, 1.15012, 1, 0.93859, 0.8075, 0.8075, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93859, 0.9486, 0.9486, 0.93859, 0.88307, 
0.77025, 0.93859, 1.08595, 0.93
 859, 0.93859, 1, 1, 1, 1, 1, 1, 1, 1.27014, 1.02058, 1.06383, 0.70926, 0.93859, 0.94399, 1.18417, 0.83537, 
0.93298, 1, 0.85034, 0.85034, 1.0222, 1.0222, 1.15012, 1, 0.83537, 0.79121, 0.846, 0.846, 1.15012, 1, 1, 
0.846, 0.846, 0.846, 0.846, 1.15012, 0.88465, 0.77487, 1, 1.15012, 1, 1, 0.75945, 0.75945, 1, 1, 0.9161, 
0.88465, 1, 0.94399, 0.86847, 0.86847, 0.8544, 0.94399, 0.79519, 0.93942, 1, 1.15012, 1, 1.03901, 1.08595, 1, 
1, 0.88465, 1.15012, 0.82424, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 0.81453, 
0.88465, 1, 1, 0.81453, 1, 0.89903, 0.96017, 0.81453, 0.92388, 0.92388, 1.02058, 1, 1.36145, 0.96186, 
0.96186, 0.9278, 0.84943, 1, 0.70869, 1.0186, 1, 1, 1, 0.88465, 1, 1, 0.88465, 0.88465, 1, 1, 0.94219, 0.878, 
0.94219, 0.94219, 1, 0.94219, 0.88075, 1.15012, 1, 1.02058, 1.08595, 0.73541, 0.73361, 0.73572, 0.73572, 
0.96017, 0.96017, 0.96017, 1, 1, 1.15012, 1, 1.03075, 0.82424, 0.82424, 0.82424, 0.82424, 0.82424, 1.02738, 
0.82424, 1.02119, 1.06233, 1, 1, 1, 1, 1, 1
 , 1.03075, 1.03075, 1.03075, 1.03075, 1.03075, 0.82424, 1.02175, 1.02175, 0.912, 0.922, 1, 0.912, 1.03075, 
1.03075, 0.88787, 0.83911, 1, 0.66266, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.05233, 1.06676, 1, 0.96998, 
0.69353, 1, 1, 1.02058, 1, 0.95829, 1.02058, 1, 1, 0.96017, 0.96017, 0.86865, 0.96017, 1, 0.88465, 1, 
1.08595, 0.96017, 0.88, 0.88465, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.84759, 1.15012, 0.93859, 
0.93859, 0.93859, 0.86799, 0.86799, 0.93859, 0.93859, 0.88465, 1, 0.9005, 0.9005, 1, 0.94565, 0.9446, 1, 
0.8562, 0.8562, 0.93859, 0.94399, 0.91974, 0.85283, 0.85283, 1.04828, 0.86936, 0.75945, 1.124, 1, 0.93969, 
0.78815, 1.02058, 1.08595, 0.74948, 0.85769, 0.94399, 0.69046, 0.62864, 0.85639, 1.027, 1.027, 1.027, 
0.87321, 1, 0.87321, 0.87321, 0.86948, 0.95493, 0.95493, 0.98391, 0.95493, 1, 0.53609, 1, 0.93758, 1.15313, 
1, 0.746, 0.746, 0.746, 1, 0.746, 1, 1, 0.90083, 0.88465, 1, 1, 1, 0.89217, 1, 0.88465, 1.17337, 1, 1, 
0.88465, 0.75187, 1, 1.12658, 1.03737, 1.12658, 0.884
 17, 1, 0.95119, 0.94578, 0.88465, 1, 0.9005, 1.15012, 1, 1.08106, 0.669, 1, 1, 1, 1, 0.88465, 0.94578, 
0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.94578, 0.89903, 1, 0.65507, 0.9219, 1, 1, 1, 1, 
0.77598, 1.12658, 1.15012, 0.75945, 1, 1, 1, 1, 0.9219, 1, 1, 1, 1, 1, 0.85034, 0.75945, 1, 1, 1, 1, 0.94578, 
1, 0.91123, 0.91123, 0.91123, 0.91123, 0.94578, 0.94578, 0.91, 0.979, 0.979, 0.979, 0.979, 0.979, 0.882, 
0.93559, 0.882, 0.882, 0.882, 0.882, 0.88465, 0.882, 0.83, 0.83, 0.83, 0.83, 0.88465, 0.84596];
+exports.MyriadProItalicFactors = MyriadProItalicFactors;
+const MyriadProItalicLineHeight = 1.2;
+exports.MyriadProItalicLineHeight = MyriadProItalicLineHeight;
+const MyriadProRegularFactors = [1.36898, 1, 0.91755, 0.788, 0.788, 0.91755, 0.91755, 0.91755, 0.91755, 
0.91755, 0.91755, 0.92138, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.8126, 0.8126, 0.80314, 0.80314, 
0.80314, 0.80314, 0.80314, 0.80314, 0.85608, 0.92222, 0.92222, 0.92915, 0.92819, 0.73764, 0.73764, 0.73764, 
0.73764, 0.73764, 0.73764, 0.73764, 0.73764, 0.73764, 0.90991, 0.73764, 0.73764, 0.7154, 0.90284, 0.86169, 
0.92915, 0.92241, 0.79726, 0.83051, 0.81884, 0.83051, 0.83051, 1, 0.83051, 0.90284, 1, 1, 1, 1, 0.90976, 
0.90284, 0.86023, 0.82873, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 0.86023, 
0.86023, 0.80513, 0.86023, 0.74, 0.74, 0.8126, 0.8126, 1, 0.84869, 0.84869, 0.91172, 0.84869, 1, 0.84869, 
0.85588, 0.96518, 0.96518, 0.91115, 0.91115, 0.91115, 1, 0.91115, 0.91115, 0.8858, 0.894, 0.8858, 0.8858, 
0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 0.94307, 0.98612, 0.8858, 0.94007, 0.8858, 0.8858, 0.8858, 0.79761, 
0.89992, 0.87791, 0.81992, 0.8858, 0.74
 498, 0.74498, 0.74498, 1, 0.79761, 0.73914, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.73914, 0.73914, 1, 0.73914, 1, 0.89297, 0.81363, 
0.81363, 0.81363, 0.81363, 1, 0.8858, 0.79611, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 0.89591, 
0.89591, 0.89591, 0.88157, 0.88157, 0.82528, 0.89591, 0.89591, 0.83659, 0.89633, 0.89633, 0.89633, 0.89633, 
0.89633, 0.85608, 0.83089, 0.8111, 0.8111, 0.8111, 0.8111, 0.8111, 0.90531, 0.90531, 0.90531, 0.90531, 
0.90531, 0.86667, 0.86667, 0.86667, 0.86667, 0.90088, 0.86667, 0.86936, 0.86936, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.86667, 0.95308, 0.95308, 0.86667, 0.90706, 
0.78105, 0.86667, 1.08595, 0.86667,
  0.86667, 1, 1, 1, 1, 1, 1, 1, 1.27014, 1.02058, 1.0664, 0.72601, 0.86667, 1.0231, 1.22736, 0.92006, 
0.97358, 1, 0.85034, 0.85034, 1.0222, 1.0222, 0.90088, 0.92006, 0.80549, 0.896, 0.896, 0.90088, 0.896, 0.896, 
0.896, 0.896, 0.90088, 0.92241, 0.87064, 1, 0.90088, 1, 0.74505, 0.74505, 0.91882, 0.92241, 1.01411, 0.89903, 
0.89903, 0.93372, 1.01411, 0.79519, 0.98088, 1, 0.90088, 1.03901, 1.08595, 1, 1, 0.92241, 0.90088, 0.84224, 
0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.90083, 0.92241, 1, 0.90083, 1, 0.89903, 
0.99793, 0.90083, 0.98699, 0.98699, 1.02058, 1, 1.36145, 0.99793, 0.99793, 0.97276, 0.82784, 1, 0.69067, 
1.05099, 1, 1, 1, 0.92241, 1, 0.92241, 0.92241, 1, 1.00512, 0.928, 1.00512, 1.00512, 1, 1.00512, 0.89713, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90088, 1.02058, 1.08595, 0.75339, 0.75339, 0.76575, 0.76575, 0.99793, 
0.99793, 0.99793, 1, 1, 0.90088, 1.05326, 0.84224, 0.84224, 0.84224, 0.84224, 0.84224, 1.07469, 0.84224, 
1.02119, 1.1536, 1, 1, 1, 1, 1, 1, 1.05326
 , 1.06226, 1.06226, 1.06226, 1.06226, 0.84224, 1.09377, 1.09377, 0.938, 0.986, 1, 0.938, 1.06226, 1.06226, 
0.944, 0.83704, 1, 0.81441, 1.02058, 1.08595, 1, 1, 1.02058, 1, 1.05638, 1.08927, 1, 1.00119, 0.54324, 1, 1, 
1.02058, 1, 0.95978, 1.02058, 1, 1, 0.99793, 0.99793, 0.91887, 0.99793, 1, 0.92241, 1, 1.08595, 0.99793, 
0.938, 0.89364, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 0.91434, 0.90088, 0.98714, 0.98714, 0.98714, 
0.88888, 0.88888, 0.98714, 0.98714, 0.92241, 1, 0.91009, 0.91009, 1, 0.93484, 0.97198, 1, 0.89876, 0.89876, 
0.98714, 1.0231, 0.95325, 0.85283, 0.85283, 1.07257, 0.89073, 0.74505, 1.156, 1, 0.99007, 0.80442, 1.02058, 
1.08595, 0.74705, 0.91879, 1.01231, 0.73002, 0.66466, 0.94935, 1.06904, 1.06304, 1.06304, 0.93173, 1, 
0.93173, 0.93173, 0.98472, 0.98196, 0.98196, 1.024, 0.98196, 1, 0.56866, 1, 0.98972, 0.90088, 1, 0.792, 
0.792, 0.792, 1, 0.792, 1, 1, 0.9332, 0.92241, 1, 1, 0.89762, 1, 0.92241, 1.23456, 1, 1, 0.92241, 0.71119, 1, 
1.19137, 1.04552, 1.19137, 0.904, 1, 0
 .96017, 1.0231, 0.92241, 1, 0.91009, 0.90088, 0.90388, 0.619, 1, 1, 1, 1, 0.92241, 0.99074, 0.99074, 
0.99074, 0.99074, 0.99074, 0.99074, 0.99074, 0.99074, 0.89903, 1, 0.76305, 0.9219, 1, 1, 1, 1, 0.81363, 
1.19137, 0.90088, 0.74505, 1, 1, 1, 1, 0.9219, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.72458, 0.74505, 1, 1, 1, 1, 1, 
0.99074, 1, 0.95817, 0.95817, 0.95817, 0.95817, 0.99074, 0.99074, 0.962, 1.01915, 1.01915, 1.01915, 1.01915, 
1.01915, 0.926, 0.96705, 0.942, 0.942, 0.942, 0.942, 0.92241, 0.942, 0.856, 0.856, 0.856, 0.856, 0.92241, 
0.92761];
+exports.MyriadProRegularFactors = MyriadProRegularFactors;
+const MyriadProRegularLineHeight = 1.2;
+exports.MyriadProRegularLineHeight = MyriadProRegularLineHeight;
+
+/***/ }),
+/* 60 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SegoeuiRegularLineHeight = exports.SegoeuiRegularFactors = exports.SegoeuiItalicLineHeight = 
exports.SegoeuiItalicFactors = exports.SegoeuiBoldLineHeight = exports.SegoeuiBoldItalicLineHeight = 
exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0;
+const SegoeuiBoldFactors = [1.76738, 1, 0.97363, 0.93506, 0.93506, 0.97363, 0.97363, 0.97363, 0.97363, 
0.97363, 0.97363, 1.01149, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.88776, 0.88776, 0.8641, 0.8641, 
0.8641, 0.8641, 0.8641, 0.8641, 0.98243, 1.02096, 1.02096, 1.02096, 0.97826, 0.79795, 0.79795, 0.79795, 
0.79795, 0.79795, 0.79795, 0.79795, 0.79795, 0.79795, 1.09251, 0.79795, 0.79795, 0.7676, 1.06085, 0.98167, 
1.02096, 1.03424, 0.85132, 0.914, 0.85134, 0.914, 0.914, 1, 0.914, 1.06085, 1, 0.99862, 0.99862, 1, 1.06085, 
1.06085, 1.1406, 0.97138, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 
1.01134, 1.1406, 0.8007, 0.8007, 0.89858, 0.89858, 1, 0.83693, 0.83693, 1.0388, 0.83693, 1, 0.83693, 0.83693, 
1.14889, 1.14889, 1.09398, 1.09398, 1.09398, 1, 1.09398, 1.09398, 0.97489, 0.93994, 0.97426, 0.97489, 
0.97426, 0.97426, 0.97426, 0.97489, 0.97489, 0.95493, 1.03089, 0.97489, 1.02546, 0.97489, 0.97489, 0.97426, 
0.92094, 0.99346, 1.0595, 1.02112, 0.97489
 , 0.90399, 0.90399, 0.90399, 1, 0.92094, 0.84041, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.84041, 0.84041, 0.84041, 0.84041, 1, 
0.94793, 0.95923, 0.95923, 0.95923, 0.95923, 1, 0.97489, 0.92094, 1.00135, 1.00135, 1.00135, 1.00135, 
1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.90996, 0.84097, 1.00135, 1.00135, 1, 1.06467, 
1.06467, 1.06467, 1.06467, 1.06467, 0.98243, 0.86039, 0.90996, 0.90996, 0.90996, 0.90996, 0.90996, 0.99361, 
0.99361, 0.99361, 0.99361, 0.99361, 0.96752, 0.96752, 0.96752, 0.96752, 0.91056, 1, 0.96752, 0.93136, 
0.93136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96752, 
1.03574, 1.03574, 0.96752, 1.17647, 0.81525, 0.96752, 1.
 29004, 0.96752, 0.96752, 0.86182, 0.94434, 0.86279, 0.86279, 0.94434, 1, 1, 1.2107, 1.2107, 1.16939, 
0.97847, 0.96752, 1.01519, 1.56942, 1.16579, 1.0192, 1, 0.94856, 0.94856, 1.1085, 1.1085, 1.03959, 1, 
1.16579, 1.20642, 0.86304, 0.86304, 1.15103, 1, 1, 0.86304, 0.86304, 0.86304, 0.86304, 0.64663, 1.03424, 
0.96268, 1.42603, 1.15103, 1, 1.04315, 0.81378, 0.9754, 1, 1, 1.18622, 1, 1, 1.01359, 0.73047, 0.73047, 
1.03057, 1.03517, 0.94994, 1.00886, 1.34163, 1.3871, 1, 0.87815, 1.28826, 1, 1, 1.03424, 0.75953, 1.02285, 
0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 0.97278, 1.03424, 1, 0.91211, 0.97278, 1, 
0.89903, 0.99041, 0.97278, 0.97531, 1.02597, 1.2107, 1.21172, 1, 1.0008, 1.0008, 0.97122, 0.9824, 0.96039, 
0.9824, 1.15103, 1, 1.42603, 1, 1.03424, 1.15749, 1, 1.03424, 1.03424, 1, 0.93503, 1.01359, 1.01932, 1.01359, 
1.01359, 1, 1.01359, 1.02798, 0.94282, 1, 1.2107, 1.29004, 1.04478, 1.04478, 1.03372, 1.03372, 0.98561, 
1.00879, 0.98561, 1.15296, 1, 1.21994, 1, 1.02285, 1
 .02285, 1.02285, 1.02285, 1.02285, 1.02285, 1.08692, 1.02285, 1.13973, 2.10339, 1, 1, 0.9716, 1.42603, 
1.42603, 1, 1.02285, 1.18102, 1.18102, 1.18102, 1.18102, 1.02285, 1.02285, 1.02285, 1.00527, 1.02277, 1, 
1.00527, 1.02285, 1.02285, 0.98683, 0.9455, 1, 0.90418, 1.2107, 1.29004, 1, 1.03424, 1.2107, 1.07733, 
1.18874, 1.13005, 1, 1.0302, 0.75155, 1, 1, 1.2107, 1.222, 1.0016, 1.2107, 1, 1, 0.99041, 0.99041, 0.96692, 
0.99041, 1, 1.03424, 1, 1.29004, 0.99041, 0.99561, 1.06497, 1.0008, 1, 1.0008, 1, 1, 0.97931, 0.79912, 1, 
1.0008, 1.0008, 0.98439, 0.98439, 1.0008, 1.0008, 1.03424, 1.15749, 1.15749, 1.14169, 0.99862, 1.10818, 
1.24866, 0.69825, 1.0008, 1.0008, 1, 1.01519, 0.91572, 1.1085, 1.1085, 1.16897, 0.97529, 0.9754, 1.25635, 
1.19687, 1.04983, 0.90434, 1.2107, 1.28826, 0.96085, 1.0499, 1.01359, 0.71703, 0.71703, 1.04016, 0.98633, 
0.98633, 0.98633, 1.04394, 1.04394, 1.04394, 1.04394, 1.23203, 1.02258, 1.02258, 1.18416, 1.02258, 1, 
1.18622, 1, 0.99921, 0.81378, 1, 0.79104, 0.79104, 0.79
 104, 0.79104, 0.79104, 1, 1.02956, 0.8727, 1.03424, 1.10948, 1, 1, 0.8965, 0.93803, 1.03424, 1.59578, 1, 
1.2886, 1.03424, 0.90137, 1, 1.16862, 1.23085, 1.16862, 1.07034, 1, 1.13189, 1.01519, 1.03424, 1.15749, 
1.17389, 1.15103, 1, 0.95161, 0.771, 0.87025, 0.87025, 0.87025, 0.87025, 1.03424, 0.99041, 0.99041, 0.99041, 
0.99041, 0.99041, 0.99041, 0.99041, 0.99041, 0.74627, 0.75155, 0.99297, 1.21408, 1.21408, 1.21408, 1, 
1.18328, 0.95923, 1.16862, 1.01173, 0.81378, 0.79795, 1.09466, 0.97278, 1.02065, 1, 1.21408, 1.24633, 
1.12454, 1, 1, 1, 0.9754, 1, 1, 1.09193, 1.09193, 0.99041, 1, 1.06628, 1.06628, 1.06628, 1.06628, 0.99041, 
0.99041, 0.97454, 1.02511, 1.02511, 1.02511, 1.02511, 1.02511, 0.99298, 1.07237, 0.96752, 0.96752, 0.96752, 
0.96752, 1.03424, 0.96752, 0.95801, 0.95801, 0.95801, 0.95801, 1.03424, 1.0106];
+exports.SegoeuiBoldFactors = SegoeuiBoldFactors;
+const SegoeuiBoldLineHeight = 1.33008;
+exports.SegoeuiBoldLineHeight = SegoeuiBoldLineHeight;
+const SegoeuiBoldItalicFactors = [1.76738, 1, 0.97363, 0.94385, 0.94385, 0.97363, 0.97363, 0.97363, 0.97363, 
0.97363, 0.97363, 1.00811, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.89723, 0.89723, 0.87897, 0.87897, 
0.87897, 0.87897, 0.87897, 0.87897, 0.9817, 1.0426, 1.0426, 1.0426, 1.09818, 0.79429, 0.79429, 0.79429, 
0.79429, 0.79429, 0.79429, 0.79429, 0.79429, 0.79429, 1.10466, 0.79429, 0.79429, 0.77702, 1.05815, 0.99137, 
1.0426, 1.036, 0.85292, 0.91149, 0.86869, 0.91149, 0.91149, 1, 0.91149, 1.05815, 1, 0.99862, 0.99862, 1, 
1.05815, 1.05815, 1.1406, 0.97441, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 1.1406, 
1.1406, 0.95253, 1.1406, 0.79631, 0.79631, 0.90128, 0.90128, 1, 0.83853, 0.83853, 1.06662, 0.83853, 1, 
0.83853, 0.83853, 1.04396, 1.04396, 1.10615, 1.10615, 1.10615, 1, 1.10615, 1.10615, 0.97552, 0.91602, 
0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 0.98999, 1.07205, 0.97552, 1.0347, 0.97552, 
0.97552, 0.97552, 0.94436, 1.00356, 1.04694,
  1.01945, 0.97552, 0.88641, 0.88641, 0.88641, 1, 0.94436, 0.80527, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.80527, 0.80527, 0.80527, 
0.80527, 1, 0.98015, 0.96083, 0.96083, 0.95923, 0.96083, 1, 0.97552, 0.94436, 1.00135, 1.00135, 1.00135, 
1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.91142, 0.86142, 1.00135, 1.00135, 1, 
1.06777, 1.06777, 1.06777, 1.06777, 1.06777, 0.9817, 0.84918, 0.91142, 0.91142, 0.91142, 0.91142, 0.91142, 
0.99361, 0.99361, 0.99361, 0.99361, 0.99361, 1.06585, 1.06585, 1.06585, 1.06585, 1.31818, 1, 1.06585, 
0.96705, 0.96705, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1.06585, 1.04961, 1.04961, 1.06585, 1.10953, 0.83
 284, 1.06585, 1.29004, 1.06585, 1.06585, 0.86224, 0.94434, 0.86364, 0.86279, 0.94434, 1, 1, 1.21237, 
1.21237, 1.16939, 0.97847, 1.06585, 0.97042, 1.57293, 1.16579, 0.99607, 1, 0.95107, 0.95107, 1.11144, 
1.11144, 1.31818, 1, 1.16579, 1.20502, 0.83055, 0.83055, 1.31818, 1, 1, 0.83055, 0.83055, 0.83055, 0.83055, 
1.31818, 1.036, 0.93491, 1.42603, 1.31818, 1, 1.04315, 0.81378, 0.9754, 1, 1, 1.18754, 1, 1, 0.97042, 
0.72959, 0.72959, 1.0033, 0.97042, 0.94994, 1.008, 1.34163, 1.31818, 1, 1.27126, 1.29004, 1, 1, 1.036, 
1.31818, 1.14236, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 0.93503, 1.036, 1, 0.91406, 
0.93503, 1, 0.89903, 0.97922, 0.93503, 0.9898, 0.9898, 1.21237, 1.21339, 1, 1.00639, 1.00639, 0.93125, 
1.03959, 0.96039, 1.03959, 1.1261, 1, 1.42603, 1, 1.036, 1.15574, 1, 1.036, 1.036, 1, 0.93327, 0.97042, 
1.02897, 0.97042, 0.97042, 1, 0.97042, 0.98721, 1.31818, 1, 1.21237, 1.29004, 1.05356, 1.05356, 1.03372, 
1.03372, 0.97922, 0.97922, 0.97922, 1.15296, 1, 1.31818, 1, 
 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.04302, 1.14236, 1.13904, 2.10339, 1, 1, 0.9716, 
1.42603, 1.42603, 1, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 1.14236, 0.94552, 1.01582, 1.01054, 
1.00518, 1, 1.01054, 1.14236, 1.14236, 0.97981, 1.09125, 1, 0.90418, 1.21237, 1.29004, 1, 1.03336, 1.21237, 
1.23199, 1.18775, 1.19508, 1, 1.02471, 0.79487, 1, 1, 1.21237, 1.222, 1.02186, 1.21237, 1, 1, 0.97922, 
0.97922, 1.01034, 0.97922, 1, 1.036, 1, 1.29004, 0.97922, 1, 1.02809, 0.94165, 0.94165, 0.94165, 0.94165, 
0.94165, 0.91981, 1.31818, 0.94165, 0.94165, 0.94165, 1.00351, 1.00351, 0.94165, 0.94165, 1.036, 1.15574, 
1.15574, 1.13934, 0.99862, 1.26781, 1.24866, 0.69825, 0.94165, 0.94165, 0.94165, 0.97042, 0.91484, 1.11144, 
1.11144, 1.16798, 0.97639, 0.9754, 1.26514, 1.16541, 1.10687, 0.99314, 1.21237, 1.29004, 0.96085, 1.04232, 
0.97042, 0.73541, 0.73541, 1.04016, 0.98633, 0.98633, 0.98633, 1.04745, 1.04394, 1.04745, 1.04745, 1.23203, 
1.0276, 1.0276, 1.18416, 1.0276, 1, 1.18622, 
 1, 0.98387, 1.31818, 1, 0.78929, 0.78929, 0.78929, 0.78929, 0.78929, 1, 1.02956, 0.87357, 1.036, 1.15574, 1, 
1, 0.93377, 0.93028, 1.036, 1.59754, 1, 1.2886, 1.036, 0.90068, 1, 1.1261, 1.35125, 1.16862, 1.05403, 1, 
1.11121, 0.97042, 1.036, 1.15574, 1.17389, 1.31818, 1, 0.95161, 0.771, 0.87025, 0.87025, 0.87025, 0.87025, 
1.036, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.97922, 0.74627, 0.75155, 0.98946, 
1.21261, 1.24047, 1.24047, 1, 1.1349, 0.96083, 1.1261, 1.31818, 0.81378, 0.79429, 1.09097, 0.93503, 0.96609, 
1, 1.21261, 1.24633, 1.09125, 1, 1, 1, 0.9754, 1, 1, 1.13269, 1.13269, 0.97922, 1, 1.07514, 1.07514, 1.07514, 
1.07514, 0.97922, 0.97922, 0.95874, 1.02197, 1.02197, 1.02197, 1.02197, 1.02197, 0.98507, 1.08578, 0.96752, 
0.96752, 0.96752, 0.96752, 1.036, 0.96752, 0.97168, 0.97168, 0.97168, 0.97168, 1.036, 0.95134];
+exports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors;
+const SegoeuiBoldItalicLineHeight = 1.33008;
+exports.SegoeuiBoldItalicLineHeight = SegoeuiBoldItalicLineHeight;
+const SegoeuiItalicFactors = [1.76738, 1, 0.94729, 0.85498, 0.85498, 0.94729, 0.94729, 0.94729, 0.94729, 
0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85944, 0.85944, 0.88506, 0.88506, 
0.88506, 0.88506, 0.88506, 0.88506, 0.8858, 0.9858, 0.9858, 0.9858, 0.9607, 0.74817, 0.74817, 0.74817, 
0.74817, 0.74817, 0.74817, 0.74817, 0.74817, 0.74817, 1.03849, 0.74817, 0.74817, 0.71022, 0.98039, 0.90883, 
0.9858, 0.96927, 0.80016, 0.88449, 0.82791, 0.88449, 0.88449, 1, 0.88449, 0.98039, 1, 0.99862, 0.99862, 1, 
0.98039, 0.98039, 0.95782, 0.84421, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 
0.95782, 0.95782, 0.84171, 0.95782, 0.69238, 0.69238, 0.89898, 0.89898, 1, 0.83231, 0.83231, 0.98316, 
0.84723, 1, 0.84723, 0.83231, 0.98183, 0.98183, 1.03989, 1.03989, 1.03989, 1, 1.03989, 1.03989, 0.96924, 
0.92383, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.01284, 1.05734, 0.96924, 0.99877, 
0.96924, 0.96924, 0.96924, 0.86237, 0.90082
 , 0.97642, 0.97296, 0.96924, 0.80595, 0.80595, 0.80595, 1, 0.86237, 0.74524, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.74524, 0.74524, 
0.74524, 0.74524, 1, 0.86075, 0.86091, 0.86091, 0.85771, 0.86091, 1, 0.96924, 0.86237, 0.95402, 0.95402, 
0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.83089, 0.77596, 0.95402, 0.95402, 
0.94143, 0.98448, 0.98448, 0.98448, 0.98448, 0.98448, 0.8858, 0.78614, 0.83089, 0.83089, 0.83089, 0.83089, 
0.83089, 0.93285, 0.93285, 0.93285, 0.93285, 0.93285, 0.97454, 0.97454, 0.97454, 0.97454, 1.04839, 1, 
0.97454, 0.92916, 0.92916, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 0.97454, 1.0976, 1.0976, 0.97454,
  1.15373, 0.78032, 0.97454, 1.24822, 0.97454, 0.97454, 0.86182, 0.94434, 0.86321, 0.8649, 0.94434, 1, 1, 
1.45994, 1.17308, 1.07403, 0.94565, 0.97454, 0.97454, 1.39016, 0.92481, 0.98205, 1, 0.91082, 0.91082, 1.0949, 
1.0949, 1.04839, 1, 0.92481, 1.15621, 0.87207, 0.87207, 1.04839, 1, 1, 0.87207, 0.87207, 0.87207, 0.87207, 
1.04839, 0.96927, 0.99821, 1.42603, 1.04839, 1, 1.04315, 0.78383, 0.78383, 1, 1, 1.23393, 1, 1, 0.97454, 
0.67603, 0.67603, 0.95391, 0.97454, 0.94261, 1.05097, 1.34163, 1.04839, 1, 0.81965, 1.24822, 1, 1, 0.96927, 
1.04839, 0.93146, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.87533, 0.96927, 1, 
0.73584, 0.87533, 1, 0.89903, 1.01054, 0.87533, 1.04, 1.04, 1.17308, 1.17308, 1, 1.03342, 1.03342, 0.93854, 
1.14763, 0.95996, 0.95748, 1.06151, 1, 1.42603, 1, 0.96927, 1.09836, 1, 0.96927, 0.96927, 1, 0.87709, 
0.97454, 1.03809, 0.97454, 0.97454, 1, 0.97454, 0.88409, 1.04839, 1, 1.17308, 1.24822, 0.9245, 0.9245, 
0.94868, 0.94868, 1.00176, 1.00176, 1.00176, 1.
 15296, 1, 1.04839, 1, 1.16484, 0.93146, 0.93146, 0.93146, 0.93146, 0.93146, 1.12761, 0.93146, 1.14589, 
1.96791, 1, 1, 0.97622, 1.42603, 1.42603, 1, 1.16484, 1.2, 1.2, 1.2, 1.2, 0.93146, 1.08132, 1.08132, 0.98047, 
1.02148, 1, 0.98047, 1.16484, 1.16484, 1.0119, 1.04861, 1, 0.78755, 1.17308, 1.24822, 1, 0.96927, 1.17308, 
1.31868, 1.17984, 1.23736, 1, 1.02989, 0.63218, 1, 1, 1.17308, 1.22135, 1.04724, 1.17308, 1, 1, 1.01054, 
1.01054, 0.9857, 1.01054, 1, 0.96927, 1, 1.24822, 1.01054, 1.0127, 1.06234, 0.96225, 0.96225, 0.96225, 
0.96225, 0.96225, 0.90171, 1.04839, 0.96225, 0.96225, 0.96225, 1.0326, 1.0326, 0.96225, 0.96225, 0.96927, 
1.09836, 1.13525, 1.09836, 0.99862, 1.1781, 1.22326, 0.69825, 0.8761, 0.8761, 0.96225, 0.97454, 0.85273, 
0.91349, 0.91349, 1.083, 0.92586, 0.78383, 1.21191, 1.01473, 1.11826, 0.8965, 1.17308, 1.24822, 0.91578, 
1.0557, 0.97454, 0.77349, 0.70424, 1.05365, 1.12317, 1.12317, 1.12317, 0.94945, 0.94945, 0.94945, 0.94945, 
1.18414, 1.06598, 1.06598, 1.18416, 1.06598, 1
 , 1.20808, 1, 0.97783, 1.04839, 1, 0.79004, 0.79004, 0.79004, 0.79004, 0.79004, 1, 1.06483, 0.80597, 
0.96927, 1.01522, 1, 1, 0.94818, 0.93574, 0.96927, 1.42531, 1, 1.2886, 0.96927, 0.86438, 1, 1.16344, 1.30679, 
1.16344, 1.02759, 1, 1.05401, 0.97454, 0.96927, 1.09836, 1.15222, 1.04839, 1, 0.81965, 0.77295, 0.87025, 
0.87025, 0.87025, 0.87025, 0.96927, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 1.00351, 
0.74627, 0.75155, 0.98946, 1.20088, 1.09971, 1.09971, 1, 1.09971, 0.86091, 1.16344, 1.04839, 0.78383, 
0.74817, 1.03754, 0.87533, 0.98705, 1, 1.20088, 1.24633, 1.07497, 1, 1, 1, 0.78032, 1, 1, 1.10742, 1.10742, 
1.00351, 1, 1.0675, 1.0675, 1.0675, 1.0675, 1.00351, 1.00351, 0.94629, 0.9973, 0.9973, 0.9973, 0.9973, 
0.9973, 0.91016, 1.02732, 0.96777, 0.96777, 0.96777, 0.96777, 0.96927, 0.96777, 0.9043, 0.9043, 0.9043, 
0.9043, 0.96927, 0.95364];
+exports.SegoeuiItalicFactors = SegoeuiItalicFactors;
+const SegoeuiItalicLineHeight = 1.33008;
+exports.SegoeuiItalicLineHeight = SegoeuiItalicLineHeight;
+const SegoeuiRegularFactors = [1.76738, 1, 0.96706, 0.86035, 0.86035, 0.96706, 0.96706, 0.96706, 0.96706, 
0.96706, 0.96706, 0.96635, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.85944, 0.85944, 0.85734, 0.85734, 
0.85734, 0.85734, 0.85734, 0.85734, 0.88433, 0.97093, 0.97093, 0.97093, 0.96491, 0.75842, 0.75842, 0.75842, 
0.75842, 0.75842, 0.75842, 0.75842, 0.75842, 0.75842, 1.03444, 0.75842, 0.75842, 0.72727, 0.9831, 0.92366, 
0.97093, 0.96927, 0.79936, 0.88198, 0.85638, 0.88198, 0.88198, 1, 0.88198, 0.9831, 1, 0.99862, 0.99862, 1, 
0.9831, 0.9831, 0.95782, 0.84784, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 0.95782, 
0.95782, 0.95782, 0.98601, 0.95782, 0.71387, 0.71387, 0.86969, 0.86969, 1, 0.84636, 0.84636, 0.94152, 
0.84636, 1, 0.84636, 0.84636, 1.07796, 1.07796, 1.03584, 1.03584, 1.03584, 1, 1.03584, 1.03584, 0.96924, 
0.93066, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.0098, 1.09799, 0.96924, 1.03405, 
0.96924, 0.96924, 0.96924, 0.83968, 0.944
 92, 0.98715, 0.9287, 0.96924, 0.82826, 0.82826, 0.82826, 1, 0.83968, 0.79649, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.79649, 0.79649, 
0.79649, 0.79649, 1, 0.83491, 0.85771, 0.85771, 0.85771, 0.85771, 1, 0.96924, 0.83968, 0.95132, 0.95132, 
0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.8287, 0.77968, 0.95132, 0.95132, 
0.93119, 0.98965, 0.98965, 0.98965, 0.98965, 0.98965, 0.88433, 0.78437, 0.8287, 0.8287, 0.8287, 0.8287, 
0.8287, 0.93365, 0.93365, 0.93365, 0.93365, 0.93365, 0.91484, 0.91484, 0.91484, 0.91484, 0.84751, 0.91484, 
0.93575, 0.93575, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0.91484, 1.0625, 1.0625, 0.91484, 1.19985
 , 0.78032, 0.91484, 1.24822, 0.91484, 0.91484, 0.86182, 0.94434, 0.86279, 0.86279, 0.94434, 1, 1, 1.45786, 
1.1714, 1.07152, 0.94084, 0.91484, 1.05707, 1.3638, 0.92105, 0.95246, 1, 0.90351, 0.90351, 1.08612, 1.08612, 
0.91202, 0.92105, 1.16039, 0.92383, 0.92383, 1.11437, 0.92383, 0.92383, 0.92383, 0.92383, 0.61584, 0.96927, 
1.02512, 1.42603, 1.11437, 1.04315, 0.78032, 0.78032, 1.20808, 0.99912, 1.05882, 0.67428, 0.67428, 1.0969, 
1.05882, 0.94261, 1.04912, 1.34163, 1.2434, 0.81818, 1.24644, 1, 1, 0.96927, 0.60411, 0.8717, 0.9403, 0.9403, 
0.9403, 0.9403, 0.9403, 0.9403, 0.9403, 0.9403, 0.96927, 0.73291, 0.9403, 1, 0.89903, 1.01756, 0.9403, 
0.98248, 0.98248, 1.1714, 1.17238, 1, 1.03424, 1.03424, 1.00527, 1.02285, 0.95996, 0.85337, 1.12654, 1, 
1.42603, 1, 0.96927, 1.11358, 0.96927, 0.96927, 0.87796, 1.05882, 1.03809, 1.05882, 1.05882, 1, 1.05882, 
0.89049, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.80499, 1.1714, 1.24822, 0.90957, 0.90957, 0.94868, 0.94868, 
1.01756, 1.01756, 1.01756, 1.15296, 1, 0
 .97361, 1.09011, 0.8717, 0.8717, 0.8717, 0.8717, 0.8717, 1.11551, 0.8717, 1.14589, 1.9697, 1, 1, 0.97622, 
1.42603, 1.42603, 1, 1.09011, 1.2, 1.2, 1.2, 1.2, 0.8717, 1.09011, 1.09011, 0.99414, 1.04785, 1, 0.99414, 
1.09011, 1.09011, 0.99609, 1.0536, 1, 0.94298, 1.1714, 1.24822, 1, 0.96927, 1.1714, 1.08571, 1.18083, 
1.23297, 1, 1.034, 0.75155, 1, 1, 1.1714, 1.22135, 1.00169, 1.1714, 1, 1, 1.01756, 1.01756, 1.00323, 1.01756, 
1, 0.96927, 1, 1.24822, 1.01756, 1.05176, 1.06234, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 0.98293, 
0.55572, 1.05356, 1.05356, 1.05356, 1.03502, 1.03502, 1.05356, 1.05356, 0.96927, 1.10539, 1.11593, 1.08665, 
0.99862, 1.05937, 1.17914, 0.69825, 0.95923, 0.95923, 1.05356, 1.05707, 0.85273, 0.90616, 0.90616, 1.083, 
0.92037, 0.78032, 1.20996, 1.01518, 1.07831, 0.9087, 1.1714, 1.24644, 0.91578, 1.05205, 1.05882, 0.80597, 
0.73381, 1.10454, 1.13196, 1.13196, 1.13196, 1.03077, 1.03077, 1.03077, 1.03077, 1.2046, 1.04399, 1.04399, 
1.18416, 1.04399, 1, 1.20808, 1, 1.03004,
  0.84164, 1, 0.84863, 0.84863, 0.84863, 0.84863, 0.84863, 1, 1.06483, 0.80597, 0.96927, 1.06967, 1, 0.93117, 
0.95542, 0.96927, 1.40246, 1, 1.2886, 0.96927, 0.86507, 1, 1.21968, 1.23362, 1.21968, 1.17318, 1, 1.05443, 
1.05707, 0.96927, 1.10539, 1.14169, 1.01173, 0.81818, 0.77295, 0.87025, 0.87025, 0.87025, 0.87025, 0.96927, 
1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 1.01756, 0.74627, 0.75155, 0.98594, 1.20088, 
1.09971, 1.09971, 1, 1.05425, 0.85771, 1.21968, 0.93109, 0.78032, 0.75842, 1.03719, 0.9403, 1.04021, 1, 
1.20088, 1.24633, 1.05425, 1.09971, 1.09971, 1.09971, 1.07497, 1, 1, 1, 0.78032, 1, 1, 1, 1.10938, 1.10938, 
1.01756, 1, 1.01071, 1.01071, 1.01071, 1.01071, 1.01756, 1.01756, 0.95801, 1.00068, 1.00068, 1.00068, 
1.00068, 1.00068, 0.91797, 0.99346, 0.96777, 0.96777, 0.96777, 0.96777, 0.96927, 0.96777, 0.9043, 0.9043, 
0.9043, 0.9043, 0.96927, 1.00221];
+exports.SegoeuiRegularFactors = SegoeuiRegularFactors;
+const SegoeuiRegularLineHeight = 1.33008;
+exports.SegoeuiRegularLineHeight = SegoeuiRegularLineHeight;
+
+/***/ }),
+/* 61 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -49469,7 +50805,7 @@ class MurmurHash3_64 {
 exports.MurmurHash3_64 = MurmurHash3_64;
 
 /***/ }),
-/* 55 */
+/* 62 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -49990,7 +51326,7 @@ class OperatorList {
   }
 
   static get CHUNK_SIZE_ABOUT() {
-    return (0, _util.shadow)(this, "CHUNK_SIZE_ABOUT", OperatorList.CHUNK_SIZE - 5);
+    return (0, _util.shadow)(this, "CHUNK_SIZE_ABOUT", this.CHUNK_SIZE - 5);
   }
 
   constructor(intent, streamSink) {
@@ -49998,7 +51334,7 @@ class OperatorList {
     this.fnArray = [];
     this.argsArray = [];
 
-    if (streamSink && intent !== "oplist") {
+    if (streamSink && !(intent && intent.startsWith("oplist-"))) {
       this.optimizer = new QueueOptimizer(this);
     } else {
       this.optimizer = new NullOptimizer(this);
@@ -50124,7 +51460,7 @@ class OperatorList {
 exports.OperatorList = OperatorList;
 
 /***/ }),
-/* 56 */
+/* 63 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50542,7 +51878,7 @@ class PDFImage {
         }
 
         output[i] = value;
-        buf = buf & (1 << remainingBits) - 1;
+        buf &= (1 << remainingBits) - 1;
         bits = remainingBits;
       }
     }
@@ -50797,7 +52133,7 @@ class PDFImage {
 exports.PDFImage = PDFImage;
 
 /***/ }),
-/* 57 */
+/* 64 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50813,17 +52149,17 @@ var _core_utils = __w_pdfjs_require__(9);
 
 var _util = __w_pdfjs_require__(2);
 
-var _name_number_tree = __w_pdfjs_require__(58);
+var _name_number_tree = __w_pdfjs_require__(65);
 
 var _colorspace = __w_pdfjs_require__(14);
 
-var _file_spec = __w_pdfjs_require__(59);
+var _file_spec = __w_pdfjs_require__(66);
 
-var _image_utils = __w_pdfjs_require__(51);
+var _image_utils = __w_pdfjs_require__(52);
 
-var _metadata_parser = __w_pdfjs_require__(60);
+var _metadata_parser = __w_pdfjs_require__(67);
 
-var _struct_tree = __w_pdfjs_require__(62);
+var _struct_tree = __w_pdfjs_require__(69);
 
 function fetchDestination(dest) {
   if (dest instanceof _primitives.Dict) {
@@ -50845,6 +52181,7 @@ class Catalog {
 
     this.fontCache = new _primitives.RefSetCache();
     this.builtInCMapCache = new Map();
+    this.standardFontDataCache = new Map();
     this.globalImageCache = new _image_utils.GlobalImageCache();
     this.pageKidsCountCache = new _primitives.RefSetCache();
     this.pageIndexCache = new _primitives.RefSetCache();
@@ -51782,6 +53119,26 @@ class Catalog {
     return (0, _util.shadow)(this, "attachments", attachments);
   }
 
+  get xfaImages() {
+    const obj = this._catDict.get("Names");
+
+    let xfaImages = null;
+
+    if (obj instanceof _primitives.Dict && obj.has("XFAImages")) {
+      const nameTree = new _name_number_tree.NameTree(obj.getRaw("XFAImages"), this.xref);
+
+      for (const [key, value] of nameTree.getAll()) {
+        if (!xfaImages) {
+          xfaImages = new _primitives.Dict(this.xref);
+        }
+
+        xfaImages.set(key, value);
+      }
+    }
+
+    return (0, _util.shadow)(this, "xfaImages", xfaImages);
+  }
+
   _collectJavaScript() {
     const obj = this._catDict.get("Names");
 
@@ -51890,6 +53247,7 @@ class Catalog {
 
       this.fontCache.clear();
       this.builtInCMapCache.clear();
+      this.standardFontDataCache.clear();
     });
   }
 
@@ -52271,7 +53629,7 @@ class Catalog {
 exports.Catalog = Catalog;
 
 /***/ }),
-/* 58 */
+/* 65 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -52436,7 +53794,7 @@ class NumberTree extends NameOrNumberTree {
 exports.NumberTree = NumberTree;
 
 /***/ }),
-/* 59 */
+/* 66 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -52540,7 +53898,7 @@ class FileSpec {
 exports.FileSpec = FileSpec;
 
 /***/ }),
-/* 60 */
+/* 67 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -52550,7 +53908,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.MetadataParser = void 0;
 
-var _xml_parser = __w_pdfjs_require__(61);
+var _xml_parser = __w_pdfjs_require__(68);
 
 class MetadataParser {
   constructor(data) {
@@ -52679,7 +54037,7 @@ class MetadataParser {
 exports.MetadataParser = MetadataParser;
 
 /***/ }),
-/* 61 */
+/* 68 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -53226,7 +54584,7 @@ class SimpleXMLParser extends XMLParserBase {
 exports.SimpleXMLParser = SimpleXMLParser;
 
 /***/ }),
-/* 62 */
+/* 69 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -53240,7 +54598,7 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var _name_number_tree = __w_pdfjs_require__(58);
+var _name_number_tree = __w_pdfjs_require__(65);
 
 const MAX_DEPTH = 40;
 const StructElementType = {
@@ -53589,7 +54947,7 @@ class StructTreePage {
 exports.StructTreePage = StructTreePage;
 
 /***/ }),
-/* 63 */
+/* 70 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -53737,7 +55095,7 @@ class ObjectLoader {
 exports.ObjectLoader = ObjectLoader;
 
 /***/ }),
-/* 64 */
+/* 71 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -53754,9 +55112,9 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _core_utils = __w_pdfjs_require__(9);
 
-var _xml_parser = __w_pdfjs_require__(61);
+var _xml_parser = __w_pdfjs_require__(68);
 
-var _crypto = __w_pdfjs_require__(65);
+var _crypto = __w_pdfjs_require__(72);
 
 function writeDict(dict, buffer, transform) {
   buffer.push("<<");
@@ -53875,13 +55233,7 @@ function computeMD5(filesize, xrefInfo) {
   return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
 }
 
-function updateXFA(datasetsRef, newRefs, xref) {
-  if (datasetsRef === null || xref === null) {
-    return;
-  }
-
-  const datasets = xref.fetchIfRef(datasetsRef);
-  const str = datasets.getString();
+function writeXFADataForAcroform(str, newRefs) {
   const xml = new _xml_parser.SimpleXMLParser({
     hasAttributes: true
   }).parseFromString(str);
@@ -53913,15 +55265,27 @@ function updateXFA(datasetsRef, newRefs, xref) {
 
   const buffer = [];
   xml.documentElement.dump(buffer);
-  let updatedXml = buffer.join("");
+  return buffer.join("");
+}
+
+function updateXFA(xfaData, datasetsRef, newRefs, xref) {
+  if (datasetsRef === null || xref === null) {
+    return;
+  }
+
+  if (xfaData === null) {
+    const datasets = xref.fetchIfRef(datasetsRef);
+    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);
+  }
+
   const encrypt = xref.encrypt;
 
   if (encrypt) {
     const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
-    updatedXml = transform.encryptString(updatedXml);
+    xfaData = transform.encryptString(xfaData);
   }
 
-  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n";
+  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${xfaData.length}>>\nstream\n` + xfaData + "\nendstream\nendobj\n";
   newRefs.push({
     ref: datasetsRef,
     data
@@ -53933,9 +55297,10 @@ function incrementalUpdate({
   xrefInfo,
   newRefs,
   xref = null,
-  datasetsRef = null
+  datasetsRef = null,
+  xfaData = null
 }) {
-  updateXFA(datasetsRef, newRefs, xref);
+  updateXFA(xfaData, datasetsRef, newRefs, xref);
   const newXref = new _primitives.Dict(null);
   const refForXrefTable = xrefInfo.newRef;
   let buffer, baseOffset;
@@ -54025,7 +55390,7 @@ function incrementalUpdate({
 }
 
 /***/ }),
-/* 65 */
+/* 72 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -54040,7 +55405,7 @@ var _util = __w_pdfjs_require__(2);
 
 var _primitives = __w_pdfjs_require__(5);
 
-var _decrypt_stream = __w_pdfjs_require__(66);
+var _decrypt_stream = __w_pdfjs_require__(73);
 
 class ARCFourCipher {
   constructor(key) {
@@ -54218,7 +55583,7 @@ class Word64 {
       this.low = 0;
     } else {
       this.high = this.high << places | this.low >>> 32 - places;
-      this.low = this.low << places;
+      this.low <<= places;
     }
   }
 
@@ -54986,7 +56351,7 @@ class AES128Cipher extends AESBaseCipher {
       t2 = s[t2];
       t3 = s[t3];
       t4 = s[t4];
-      t1 = t1 ^ rcon[i];
+      t1 ^= rcon[i];
 
       for (let n = 0; n < 4; ++n) {
         result[j] = t1 ^= result[j - 16];
@@ -55038,7 +56403,7 @@ class AES256Cipher extends AESBaseCipher {
         t2 = s[t2];
         t3 = s[t3];
         t4 = s[t4];
-        t1 = t1 ^ r;
+        t1 ^= r;
 
         if ((r <<= 1) >= 256) {
           r = (r ^ 0x1b) & 0xff;
@@ -55618,7 +56983,7 @@ const CipherTransformFactory = function CipherTransformFactoryClosure() {
 exports.CipherTransformFactory = CipherTransformFactory;
 
 /***/ }),
-/* 66 */
+/* 73 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -55677,7 +57042,7 @@ class DecryptStream extends _decode_stream.DecodeStream {
 exports.DecryptStream = DecryptStream;
 
 /***/ }),
-/* 67 */
+/* 74 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -55687,29 +57052,105 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XFAFactory = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _bind = __w_pdfjs_require__(71);
+var _bind = __w_pdfjs_require__(79);
 
-var _parser = __w_pdfjs_require__(76);
+var _data = __w_pdfjs_require__(85);
+
+var _fonts = __w_pdfjs_require__(83);
+
+var _utils = __w_pdfjs_require__(76);
+
+var _util = __w_pdfjs_require__(2);
+
+var _parser = __w_pdfjs_require__(86);
 
 class XFAFactory {
   constructor(data) {
     try {
       this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data));
-      this.form = new _bind.Binder(this.root).bind();
+      const binder = new _bind.Binder(this.root);
+      this.form = binder.bind();
+      this.dataHandler = new _data.DataHandler(this.root, binder.getData());
+      this.form[_xfa_object.$globalData].template = this.form;
+    } catch (e) {
+      (0, _util.warn)(`XFA - an error occurred during parsing and binding: ${e}`);
+    }
+  }
+
+  isValid() {
+    return this.root && this.form;
+  }
+
+  _createPages() {
+    try {
       this.pages = this.form[_xfa_object.$toHTML]();
+      this.dims = this.pages.children.map(c => {
+        const {
+          width,
+          height
+        } = c.attributes.style;
+        return [0, 0, parseInt(width), parseInt(height)];
+      });
     } catch (e) {
-      console.log(e);
+      (0, _util.warn)(`XFA - an error occurred during layout: ${e}`);
     }
   }
 
-  getPage(pageIndex) {
-    return this.pages.children[pageIndex];
+  getBoundingBox(pageIndex) {
+    return this.dims[pageIndex];
   }
 
   get numberPages() {
-    return this.pages.children.length;
+    if (!this.pages) {
+      this._createPages();
+    }
+
+    return this.dims.length;
+  }
+
+  setImages(images) {
+    this.form[_xfa_object.$globalData].images = images;
+  }
+
+  setFonts(fonts) {
+    this.form[_xfa_object.$globalData].fontFinder = new _fonts.FontFinder(fonts);
+    const missingFonts = [];
+
+    for (let typeface of this.form[_xfa_object.$globalData].usedTypefaces) {
+      typeface = (0, _utils.stripQuotes)(typeface);
+
+      const font = this.form[_xfa_object.$globalData].fontFinder.find(typeface);
+
+      if (!font) {
+        missingFonts.push(typeface);
+      }
+    }
+
+    if (missingFonts.length > 0) {
+      return missingFonts;
+    }
+
+    return null;
+  }
+
+  appendFonts(fonts, reallyMissingFonts) {
+    this.form[_xfa_object.$globalData].fontFinder.add(fonts, reallyMissingFonts);
+  }
+
+  getPages() {
+    if (!this.pages) {
+      this._createPages();
+    }
+
+    const pages = this.pages;
+    this.pages = null;
+    return pages;
+  }
+
+  serializeData(storage) {
+    return this.dataHandler.serialize(storage);
   }
 
   static _createDocument(data) {
@@ -55725,7 +57166,7 @@ class XFAFactory {
 exports.XFAFactory = XFAFactory;
 
 /***/ }),
-/* 68 */
+/* 75 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -55733,13 +57174,17 @@ exports.XFAFactory = XFAFactory;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject 
= exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject 
= exports.$uid = exports.$toStyle = exports.$toHTML = exports.$text = exports.$setValue = 
exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$resolvePrototypes = 
exports.$removeChild = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = 
exports.$nodeName = exports.$namespaceId = exports.$isTransparent = exports.$isDescendent = 
exports.$isDataValue = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = 
exports.$hasItem = exports.$global = exports.$getRealChildrenByNameIt = exports.$getParent = 
exports.$getNextPage = exports.$getDataValue = exports.$getChildrenByNameIt = exports.$getChildrenByName = 
exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = export
 s.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data 
= exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$clean = 
exports.$childrenToHTML = exports.$break = exports.$appendChild = exports.$addHTML = 
exports.$acceptWhitespace = void 0;
+exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject 
= exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject 
= exports.$uid = exports.$toStyle = exports.$toString = exports.$toHTML = exports.$text = exports.$tabIndex = 
exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = 
exports.$resolvePrototypes = exports.$removeChild = exports.$pushGlyphs = exports.$onText = 
exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = 
exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = 
exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = 
exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = 
exports.$globalData = exports.$getTemplateRoot = exports.$getSubformPa
 rent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = 
exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = 
exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace 
= exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra 
= exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = 
exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = 
exports.$acceptWhitespace = void 0;
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
 var _util = __w_pdfjs_require__(2);
 
-var _namespaces = __w_pdfjs_require__(70);
+var _core_utils = __w_pdfjs_require__(9);
+
+var _namespaces = __w_pdfjs_require__(77);
+
+var _som = __w_pdfjs_require__(78);
 
 const $acceptWhitespace = Symbol();
 exports.$acceptWhitespace = $acceptWhitespace;
@@ -55747,12 +57192,12 @@ const $addHTML = Symbol();
 exports.$addHTML = $addHTML;
 const $appendChild = Symbol();
 exports.$appendChild = $appendChild;
-const $break = Symbol();
-exports.$break = $break;
 const $childrenToHTML = Symbol();
 exports.$childrenToHTML = $childrenToHTML;
 const $clean = Symbol();
 exports.$clean = $clean;
+const $cleanPage = Symbol();
+exports.$cleanPage = $cleanPage;
 const $cleanup = Symbol();
 exports.$cleanup = $cleanup;
 const $clone = Symbol();
@@ -55773,6 +57218,8 @@ const $flushHTML = Symbol();
 exports.$flushHTML = $flushHTML;
 const $getAttributeIt = Symbol();
 exports.$getAttributeIt = $getAttributeIt;
+const $getAttributes = Symbol();
+exports.$getAttributes = $getAttributes;
 const $getAvailableSpace = Symbol();
 exports.$getAvailableSpace = $getAvailableSpace;
 const $getChildrenByClass = Symbol();
@@ -55783,18 +57230,24 @@ const $getChildrenByNameIt = Symbol();
 exports.$getChildrenByNameIt = $getChildrenByNameIt;
 const $getDataValue = Symbol();
 exports.$getDataValue = $getDataValue;
+const $getExtra = Symbol();
+exports.$getExtra = $getExtra;
 const $getRealChildrenByNameIt = Symbol();
 exports.$getRealChildrenByNameIt = $getRealChildrenByNameIt;
 const $getChildren = Symbol();
 exports.$getChildren = $getChildren;
+const $getContainedChildren = Symbol();
+exports.$getContainedChildren = $getContainedChildren;
 const $getNextPage = Symbol();
 exports.$getNextPage = $getNextPage;
+const $getSubformParent = Symbol();
+exports.$getSubformParent = $getSubformParent;
 const $getParent = Symbol();
 exports.$getParent = $getParent;
-const $global = Symbol();
-exports.$global = $global;
-const $hasItem = Symbol();
-exports.$hasItem = $hasItem;
+const $getTemplateRoot = Symbol();
+exports.$getTemplateRoot = $getTemplateRoot;
+const $globalData = Symbol();
+exports.$globalData = $globalData;
 const $hasSettableValue = Symbol();
 exports.$hasSettableValue = $hasSettableValue;
 const $ids = Symbol();
@@ -55803,12 +57256,24 @@ const $indexOf = Symbol();
 exports.$indexOf = $indexOf;
 const $insertAt = Symbol();
 exports.$insertAt = $insertAt;
+const $isCDATAXml = Symbol();
+exports.$isCDATAXml = $isCDATAXml;
+const $isBindable = Symbol();
+exports.$isBindable = $isBindable;
 const $isDataValue = Symbol();
 exports.$isDataValue = $isDataValue;
 const $isDescendent = Symbol();
 exports.$isDescendent = $isDescendent;
+const $isNsAgnostic = Symbol();
+exports.$isNsAgnostic = $isNsAgnostic;
+const $isSplittable = Symbol();
+exports.$isSplittable = $isSplittable;
+const $isThereMoreWidth = Symbol();
+exports.$isThereMoreWidth = $isThereMoreWidth;
 const $isTransparent = Symbol();
 exports.$isTransparent = $isTransparent;
+const $isUsable = Symbol();
+exports.$isUsable = $isUsable;
 const $lastAttribute = Symbol();
 const $namespaceId = Symbol("namespaceId");
 exports.$namespaceId = $namespaceId;
@@ -55822,8 +57287,12 @@ const $onChildCheck = Symbol();
 exports.$onChildCheck = $onChildCheck;
 const $onText = Symbol();
 exports.$onText = $onText;
+const $pushGlyphs = Symbol();
+exports.$pushGlyphs = $pushGlyphs;
 const $removeChild = Symbol();
 exports.$removeChild = $removeChild;
+const $root = Symbol("root");
+exports.$root = $root;
 const $resolvePrototypes = Symbol();
 exports.$resolvePrototypes = $resolvePrototypes;
 const $searchNode = Symbol();
@@ -55834,10 +57303,14 @@ const $setSetAttributes = Symbol();
 exports.$setSetAttributes = $setSetAttributes;
 const $setValue = Symbol();
 exports.$setValue = $setValue;
+const $tabIndex = Symbol();
+exports.$tabIndex = $tabIndex;
 const $text = Symbol();
 exports.$text = $text;
 const $toHTML = Symbol();
 exports.$toHTML = $toHTML;
+const $toString = Symbol();
+exports.$toString = $toString;
 const $toStyle = Symbol();
 exports.$toStyle = $toStyle;
 const $uid = Symbol("uid");
@@ -55871,11 +57344,14 @@ const _options = Symbol();
 
 const _parent = Symbol("parent");
 
+const _resolvePrototypesHelper = Symbol();
+
 const _setAttributes = Symbol();
 
 const _validator = Symbol();
 
 let uid = 0;
+const NS_DATASETS = _namespaces.NamespaceIds.datasets.id;
 
 class XFAObject {
   constructor(nsId, name, hasChildren = false) {
@@ -55885,6 +57361,7 @@ class XFAObject {
     this[_parent] = null;
     this[_children] = [];
     this[$uid] = `${name}${uid++}`;
+    this[$globalData] = null;
   }
 
   [$onChild](child) {
@@ -55926,16 +57403,40 @@ class XFAObject {
     return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId];
   }
 
+  [$isNsAgnostic]() {
+    return false;
+  }
+
   [$acceptWhitespace]() {
     return false;
   }
 
+  [$isCDATAXml]() {
+    return false;
+  }
+
+  [$isBindable]() {
+    return false;
+  }
+
   [$setId](ids) {
     if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) {
       ids.set(this.id, this);
     }
   }
 
+  [$getTemplateRoot]() {
+    return this[$globalData].template;
+  }
+
+  [$isSplittable]() {
+    return false;
+  }
+
+  [$isThereMoreWidth]() {
+    return false;
+  }
+
   [$appendChild](child) {
     child[_parent] = this;
 
@@ -55967,10 +57468,6 @@ class XFAObject {
     }
   }
 
-  [$hasItem]() {
-    return false;
-  }
-
   [$indexOf](child) {
     return this[_children].indexOf(child);
   }
@@ -55982,7 +57479,7 @@ class XFAObject {
   }
 
   [$isTransparent]() {
-    return this.name === "";
+    return !this.name;
   }
 
   [$lastAttribute]() {
@@ -56033,6 +57530,10 @@ class XFAObject {
     return this[_parent];
   }
 
+  [$getSubformParent]() {
+    return this[$getParent]();
+  }
+
   [$getChildren](name = null) {
     if (!name) {
       return this[_children];
@@ -56077,8 +57578,14 @@ class XFAObject {
     return _utils.HTMLResult.EMPTY;
   }
 
-  *[_filteredChildrenGenerator](filter, include) {
+  *[$getContainedChildren]() {
     for (const node of this[$getChildren]()) {
+      yield node;
+    }
+  }
+
+  *[_filteredChildrenGenerator](filter, include) {
+    for (const node of this[$getContainedChildren]()) {
       if (!filter || include === filter.has(node[$nodeName])) {
         const availableSpace = this[$getAvailableSpace]();
         const res = node[$toHTML](availableSpace);
@@ -56113,7 +57620,7 @@ class XFAObject {
       const res = this[$extra].failingNode[$toHTML](availableSpace);
 
       if (!res.success) {
-        return false;
+        return res;
       }
 
       if (res.html) {
@@ -56133,7 +57640,7 @@ class XFAObject {
       const res = gen.value;
 
       if (!res.success) {
-        return false;
+        return res;
       }
 
       if (res.html) {
@@ -56142,13 +57649,11 @@ class XFAObject {
     }
 
     this[$extra].generator = null;
-    return true;
+    return _utils.HTMLResult.EMPTY;
   }
 
   [$setSetAttributes](attributes) {
-    if (attributes.use || attributes.id) {
-      this[_setAttributes] = new Set(Object.keys(attributes));
-    }
+    this[_setAttributes] = new Set(Object.keys(attributes));
   }
 
   [_getUnsetAttributes](protoAttributes) {
@@ -56159,57 +57664,91 @@ class XFAObject {
 
   [$resolvePrototypes](ids, ancestors = new Set()) {
     for (const child of this[_children]) {
-      const proto = child[_getPrototype](ids, ancestors);
+      child[_resolvePrototypesHelper](ids, ancestors);
+    }
+  }
 
-      if (proto) {
-        child[_applyPrototype](proto, ids, ancestors);
-      } else {
-        child[$resolvePrototypes](ids, ancestors);
-      }
+  [_resolvePrototypesHelper](ids, ancestors) {
+    const proto = this[_getPrototype](ids, ancestors);
+
+    if (proto) {
+      this[_applyPrototype](proto, ids, ancestors);
+    } else {
+      this[$resolvePrototypes](ids, ancestors);
     }
   }
 
   [_getPrototype](ids, ancestors) {
     const {
-      use
+      use,
+      usehref
     } = this;
 
-    if (use && use.startsWith("#")) {
-      const id = use.slice(1);
-      const proto = ids.get(id);
-      this.use = "";
+    if (!use && !usehref) {
+      return null;
+    }
 
-      if (!proto) {
-        (0, _util.warn)(`XFA - Invalid prototype id: ${id}.`);
-        return null;
-      }
+    let proto = null;
+    let somExpression = null;
+    let id = null;
+    let ref = use;
 
-      if (proto[$nodeName] !== this[$nodeName]) {
-        (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);
-        return null;
-      }
+    if (usehref) {
+      ref = usehref;
 
-      if (ancestors.has(proto)) {
-        (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);
-        return null;
+      if (usehref.startsWith("#som(") && usehref.endsWith(")")) {
+        somExpression = usehref.slice("#som(".length, usehref.length - 1);
+      } else if (usehref.startsWith(".#som(") && usehref.endsWith(")")) {
+        somExpression = usehref.slice(".#som(".length, usehref.length - 1);
+      } else if (usehref.startsWith("#")) {
+        id = usehref.slice(1);
+      } else if (usehref.startsWith(".#")) {
+        id = usehref.slice(2);
       }
+    } else if (use.startsWith("#")) {
+      id = use.slice(1);
+    } else {
+      somExpression = use;
+    }
 
-      ancestors.add(proto);
+    this.use = this.usehref = "";
 
-      const protoProto = proto[_getPrototype](ids, ancestors);
+    if (id) {
+      proto = ids.get(id);
+    } else {
+      proto = (0, _som.searchNode)(ids.get($root), this, somExpression, true, false);
 
-      if (!protoProto) {
-        ancestors.delete(proto);
-        return proto;
+      if (proto) {
+        proto = proto[0];
       }
+    }
 
-      proto[_applyPrototype](protoProto, ids, ancestors);
+    if (!proto) {
+      (0, _util.warn)(`XFA - Invalid prototype reference: ${ref}.`);
+      return null;
+    }
 
-      ancestors.delete(proto);
-      return proto;
+    if (proto[$nodeName] !== this[$nodeName]) {
+      (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);
+      return null;
     }
 
-    return null;
+    if (ancestors.has(proto)) {
+      (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);
+      return null;
+    }
+
+    ancestors.add(proto);
+
+    const protoProto = proto[_getPrototype](ids, ancestors);
+
+    if (protoProto) {
+      proto[_applyPrototype](protoProto, ids, ancestors);
+    }
+
+    proto[$resolvePrototypes](ids, ancestors);
+    ancestors.delete(proto);
+    return proto;
   }
 
   [_applyPrototype](proto, ids, ancestors) {
@@ -56243,7 +57782,7 @@ class XFAObject {
 
       if (value instanceof XFAObjectArray) {
         for (const child of value[_children]) {
-          child[$resolvePrototypes](ids, ancestors);
+          child[_resolvePrototypesHelper](ids, ancestors);
         }
 
         for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {
@@ -56254,7 +57793,7 @@ class XFAObject {
 
             this[_children].push(child);
 
-            child[$resolvePrototypes](ids, newAncestors);
+            child[_resolvePrototypesHelper](ids, ancestors);
           } else {
             break;
           }
@@ -56265,6 +57804,11 @@ class XFAObject {
 
       if (value !== null) {
         value[$resolvePrototypes](ids, ancestors);
+
+        if (protoValue) {
+          value[_applyPrototype](protoValue, ids, ancestors);
+        }
+
         continue;
       }
 
@@ -56275,7 +57819,7 @@ class XFAObject {
 
         this[_children].push(child);
 
-        child[$resolvePrototypes](ids, newAncestors);
+        child[_resolvePrototypesHelper](ids, ancestors);
       }
     }
   }
@@ -56285,7 +57829,7 @@ class XFAObject {
       return obj.map(x => XFAObject[_cloneAttribute](x));
     }
 
-    if (obj instanceof Object) {
+    if (typeof obj === "object" && obj !== null) {
       return Object.assign({}, obj);
     }
 
@@ -56303,6 +57847,7 @@ class XFAObject {
       }
     }
 
+    clone[$uid] = `${clone[$nodeName]}${uid++}`;
     clone[_children] = [];
 
     for (const name of Object.getOwnPropertyNames(this)) {
@@ -56434,6 +57979,7 @@ class XFAAttribute {
     this[$nodeName] = name;
     this[$content] = value;
     this[$consumed] = false;
+    this[$uid] = `attribute${uid++}`;
   }
 
   [$getParent]() {
@@ -56444,6 +57990,15 @@ class XFAAttribute {
     return true;
   }
 
+  [$getDataValue]() {
+    return this[$content].trim();
+  }
+
+  [$setValue](value) {
+    value = value.value || "";
+    this[$content] = value.toString();
+  }
+
   [$text]() {
     return this[$content];
   }
@@ -56486,6 +58041,51 @@ class XmlObject extends XFAObject {
     this[$consumed] = false;
   }
 
+  [$toString](buf) {
+    const tagName = this[$nodeName];
+
+    if (tagName === "#text") {
+      buf.push((0, _core_utils.encodeToXmlString)(this[$content]));
+      return;
+    }
+
+    const prefix = this[$namespaceId] === NS_DATASETS ? "xfa:" : "";
+    buf.push(`<${prefix}${tagName}`);
+
+    for (const [name, value] of this[_attributes].entries()) {
+      buf.push(` ${name}="${(0, _core_utils.encodeToXmlString)(value[$content])}"`);
+    }
+
+    if (this[_dataValue] !== null) {
+      if (this[_dataValue]) {
+        buf.push(` xfa:dataNode="dataValue"`);
+      } else {
+        buf.push(` xfa:dataNode="dataGroup"`);
+      }
+    }
+
+    if (!this[$content] && this[_children].length === 0) {
+      buf.push("/>");
+      return;
+    }
+
+    buf.push(">");
+
+    if (this[$content]) {
+      if (typeof this[$content] === "string") {
+        buf.push((0, _core_utils.encodeToXmlString)(this[$content]));
+      } else {
+        this[$content][$toString](buf);
+      }
+    } else {
+      for (const child of this[_children]) {
+        child[$toString](buf);
+      }
+    }
+
+    buf.push(`</${prefix}${tagName}>`);
+  }
+
   [$onChild](child) {
     if (this[$content]) {
       const node = new XmlObject(this[$namespaceId], "#text");
@@ -56530,6 +58130,10 @@ class XmlObject extends XFAObject {
     return this[_children].filter(c => c[$nodeName] === name);
   }
 
+  [$getAttributes]() {
+    return this[_attributes];
+  }
+
   [$getChildrenByClass](name) {
     const value = this[_attributes].get(name);
 
@@ -56606,6 +58210,11 @@ class XmlObject extends XFAObject {
     return this[$content].trim();
   }
 
+  [$setValue](value) {
+    value = value.value || "";
+    this[$content] = value.toString();
+  }
+
   [$dump]() {
     const dumped = Object.create(null);
 
@@ -56725,8 +58334,8 @@ class Option10 extends IntegerObject {
 exports.Option10 = Option10;
 
 /***/ }),
-/* 69 */
-/***/ ((__unused_webpack_module, exports) => {
+/* 76 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
 
@@ -56742,7 +58351,11 @@ exports.getMeasurement = getMeasurement;
 exports.getRatio = getRatio;
 exports.getRelevant = getRelevant;
 exports.getStringOption = getStringOption;
+exports.stripQuotes = stripQuotes;
 exports.HTMLResult = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
 const dimConverters = {
   pt: x => x,
   cm: x => x / 2.54 * 72,
@@ -56752,6 +58365,14 @@ const dimConverters = {
 };
 const measurementPattern = /([+-]?[0-9]+\.?[0-9]*)(.*)/;
 
+function stripQuotes(str) {
+  if (str.startsWith("'") || str.startsWith('"')) {
+    return str.slice(1, str.length - 1);
+  }
+
+  return str;
+}
+
 function getInteger({
   data,
   defaultValue,
@@ -56952,24 +58573,39 @@ function getBBox(data) {
 }
 
 class HTMLResult {
-  constructor(success, html, bbox) {
+  static get FAILURE() {
+    return (0, _util.shadow)(this, "FAILURE", new HTMLResult(false, null, null, null));
+  }
+
+  static get EMPTY() {
+    return (0, _util.shadow)(this, "EMPTY", new HTMLResult(true, null, null, null));
+  }
+
+  constructor(success, html, bbox, breakNode) {
     this.success = success;
     this.html = html;
     this.bbox = bbox;
+    this.breakNode = breakNode;
+  }
+
+  isBreak() {
+    return !!this.breakNode;
+  }
+
+  static breakNode(node) {
+    return new HTMLResult(false, null, null, node);
   }
 
   static success(html, bbox = null) {
-    return new HTMLResult(true, html, bbox);
+    return new HTMLResult(true, html, bbox, null);
   }
 
 }
 
 exports.HTMLResult = HTMLResult;
-HTMLResult.FAILURE = new HTMLResult(false, null, null);
-HTMLResult.EMPTY = new HTMLResult(true, null, null);
 
 /***/ }),
-/* 70 */
+/* 77 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -57045,7 +58681,351 @@ const NamespaceIds = {
 exports.NamespaceIds = NamespaceIds;
 
 /***/ }),
-/* 71 */
+/* 78 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.createDataNode = createDataNode;
+exports.searchNode = searchNode;
+
+var _xfa_object = __w_pdfjs_require__(75);
+
+var _util = __w_pdfjs_require__(2);
+
+const namePattern = /^[^.[]+/;
+const indexPattern = /^[^\]]+/;
+const operators = {
+  dot: 0,
+  dotDot: 1,
+  dotHash: 2,
+  dotBracket: 3,
+  dotParen: 4
+};
+const shortcuts = new Map([["$data", (root, current) => root.datasets.data], ["$template", (root, current) 
=> root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => 
root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], 
["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, 
current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, 
current) => current]]);
+const somCache = new WeakMap();
+
+function parseIndex(index) {
+  index = index.trim();
+
+  if (index === "*") {
+    return Infinity;
+  }
+
+  return parseInt(index, 10) || 0;
+}
+
+function parseExpression(expr, dotDotAllowed, noExpr = true) {
+  let match = expr.match(namePattern);
+
+  if (!match) {
+    return null;
+  }
+
+  let [name] = match;
+  const parsed = [{
+    name,
+    cacheName: "." + name,
+    index: 0,
+    js: null,
+    formCalc: null,
+    operator: operators.dot
+  }];
+  let pos = name.length;
+
+  while (pos < expr.length) {
+    const spos = pos;
+    const char = expr.charAt(pos++);
+
+    if (char === "[") {
+      match = expr.slice(pos).match(indexPattern);
+
+      if (!match) {
+        (0, _util.warn)("XFA - Invalid index in SOM expression");
+        return null;
+      }
+
+      parsed[parsed.length - 1].index = parseIndex(match[0]);
+      pos += match[0].length + 1;
+      continue;
+    }
+
+    let operator;
+
+    switch (expr.charAt(pos)) {
+      case ".":
+        if (!dotDotAllowed) {
+          return null;
+        }
+
+        pos++;
+        operator = operators.dotDot;
+        break;
+
+      case "#":
+        pos++;
+        operator = operators.dotHash;
+        break;
+
+      case "[":
+        if (noExpr) {
+          (0, _util.warn)("XFA - SOM expression contains a FormCalc subexpression which is not supported for 
now.");
+          return null;
+        }
+
+        operator = operators.dotBracket;
+        break;
+
+      case "(":
+        if (noExpr) {
+          (0, _util.warn)("XFA - SOM expression contains a JavaScript subexpression which is not supported 
for now.");
+          return null;
+        }
+
+        operator = operators.dotParen;
+        break;
+
+      default:
+        operator = operators.dot;
+        break;
+    }
+
+    match = expr.slice(pos).match(namePattern);
+
+    if (!match) {
+      break;
+    }
+
+    [name] = match;
+    pos += name.length;
+    parsed.push({
+      name,
+      cacheName: expr.slice(spos, pos),
+      operator,
+      index: 0,
+      js: null,
+      formCalc: null
+    });
+  }
+
+  return parsed;
+}
+
+function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {
+  const parsed = parseExpression(expr, dotDotAllowed);
+
+  if (!parsed) {
+    return null;
+  }
+
+  const fn = shortcuts.get(parsed[0].name);
+  let i = 0;
+  let isQualified;
+
+  if (fn) {
+    isQualified = true;
+    root = [fn(root, container)];
+    i = 1;
+  } else {
+    isQualified = container === null;
+    root = [container || root];
+  }
+
+  for (let ii = parsed.length; i < ii; i++) {
+    const {
+      name,
+      cacheName,
+      operator,
+      index
+    } = parsed[i];
+    const nodes = [];
+
+    for (const node of root) {
+      if (!(node instanceof _xfa_object.XFAObject)) {
+        continue;
+      }
+
+      let children, cached;
+
+      if (useCache) {
+        cached = somCache.get(node);
+
+        if (!cached) {
+          cached = new Map();
+          somCache.set(node, cached);
+        }
+
+        children = cached.get(cacheName);
+      }
+
+      if (!children) {
+        switch (operator) {
+          case operators.dot:
+            children = node[_xfa_object.$getChildrenByName](name, false);
+            break;
+
+          case operators.dotDot:
+            children = node[_xfa_object.$getChildrenByName](name, true);
+            break;
+
+          case operators.dotHash:
+            children = node[_xfa_object.$getChildrenByClass](name);
+
+            if (children instanceof _xfa_object.XFAObjectArray) {
+              children = children.children;
+            } else {
+              children = [children];
+            }
+
+            break;
+
+          default:
+            break;
+        }
+
+        if (useCache) {
+          cached.set(cacheName, children);
+        }
+      }
+
+      if (children.length > 0) {
+        nodes.push(children);
+      }
+    }
+
+    if (nodes.length === 0 && !isQualified && i === 0) {
+      const parent = container[_xfa_object.$getParent]();
+
+      container = parent;
+
+      if (!container) {
+        return null;
+      }
+
+      i = -1;
+      root = [container];
+      continue;
+    }
+
+    if (isFinite(index)) {
+      root = nodes.filter(node => index < node.length).map(node => node[index]);
+    } else {
+      root = nodes.reduce((acc, node) => acc.concat(node), []);
+    }
+  }
+
+  if (root.length === 0) {
+    return null;
+  }
+
+  return root;
+}
+
+function createNodes(root, path) {
+  let node = null;
+
+  for (const {
+    name,
+    index
+  } of path) {
+    for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {
+      node = new _xfa_object.XmlObject(root[_xfa_object.$namespaceId], name);
+
+      root[_xfa_object.$appendChild](node);
+    }
+
+    root = node;
+  }
+
+  return node;
+}
+
+function createDataNode(root, container, expr) {
+  const parsed = parseExpression(expr);
+
+  if (!parsed) {
+    return null;
+  }
+
+  if (parsed.some(x => x.operator === operators.dotDot)) {
+    return null;
+  }
+
+  const fn = shortcuts.get(parsed[0].name);
+  let i = 0;
+
+  if (fn) {
+    root = fn(root, container);
+    i = 1;
+  } else {
+    root = container || root;
+  }
+
+  for (let ii = parsed.length; i < ii; i++) {
+    const {
+      name,
+      operator,
+      index
+    } = parsed[i];
+
+    if (!isFinite(index)) {
+      parsed[i].index = 0;
+      return createNodes(root, parsed.slice(i));
+    }
+
+    let children;
+
+    switch (operator) {
+      case operators.dot:
+        children = root[_xfa_object.$getChildrenByName](name, false);
+        break;
+
+      case operators.dotDot:
+        children = root[_xfa_object.$getChildrenByName](name, true);
+        break;
+
+      case operators.dotHash:
+        children = root[_xfa_object.$getChildrenByClass](name);
+
+        if (children instanceof _xfa_object.XFAObjectArray) {
+          children = children.children;
+        } else {
+          children = [children];
+        }
+
+        break;
+
+      default:
+        break;
+    }
+
+    if (children.length === 0) {
+      return createNodes(root, parsed.slice(i));
+    }
+
+    if (index < children.length) {
+      const child = children[index];
+
+      if (!(child instanceof _xfa_object.XFAObject)) {
+        (0, _util.warn)(`XFA - Cannot create a node.`);
+        return null;
+      }
+
+      root = child;
+    } else {
+      parsed[i].index = index - children.length;
+      return createNodes(root, parsed.slice(i));
+    }
+  }
+
+  return null;
+}
+
+/***/ }),
+/* 79 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -57055,13 +59035,13 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Binder = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _template = __w_pdfjs_require__(72);
+var _template = __w_pdfjs_require__(80);
 
-var _som = __w_pdfjs_require__(75);
+var _som = __w_pdfjs_require__(78);
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -57077,13 +59057,12 @@ class Binder {
     this.datasets = root.datasets;
 
     if (root.datasets && root.datasets.data) {
-      this.emptyMerge = false;
       this.data = root.datasets.data;
     } else {
-      this.emptyMerge = true;
       this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, "data");
     }
 
+    this.emptyMerge = this.data[_xfa_object.$getChildren]().length === 0;
     this.root.form = this.form = root.template[_xfa_object.$clone]();
   }
 
@@ -57106,26 +59085,22 @@ class Binder {
   }
 
   _bindValue(formNode, data, picture) {
+    formNode[_xfa_object.$data] = data;
+
     if (formNode[_xfa_object.$hasSettableValue]()) {
       if (data[_xfa_object.$isDataValue]()) {
         const value = data[_xfa_object.$getDataValue]();
 
         formNode[_xfa_object.$setValue](createText(value));
-
-        formNode[_xfa_object.$data] = data;
       } else if (formNode instanceof _template.Field && formNode.ui && formNode.ui.choiceList && 
formNode.ui.choiceList.open === "multiSelect") {
         const value = data[_xfa_object.$getChildren]().map(child => 
child[_xfa_object.$content].trim()).join("\n");
 
         formNode[_xfa_object.$setValue](createText(value));
-
-        formNode[_xfa_object.$data] = data;
       } else if (this._isConsumeData()) {
         (0, _util.warn)(`XFA - Nodes haven't the same type.`);
       }
     } else if (!data[_xfa_object.$isDataValue]() || this._isMatchTemplate()) {
       this._bindElement(formNode, data);
-
-      formNode[_xfa_object.$data] = data;
     } else {
       (0, _util.warn)(`XFA - Nodes haven't the same type.`);
     }
@@ -57164,18 +59139,11 @@ class Binder {
       return null;
     }
 
-    generator = this.data[_xfa_object.$getRealChildrenByNameIt](name, false, false);
-
-    while (true) {
-      match = generator.next().value;
-
-      if (!match) {
-        break;
-      }
+    generator = this.data[_xfa_object.$getRealChildrenByNameIt](name, true, false);
+    match = generator.next().value;
 
-      if (match[_xfa_object.$global]) {
-        return match;
-      }
+    if (match) {
+      return match;
     }
 
     generator = this.data[_xfa_object.$getAttributeIt](name, true);
@@ -57206,25 +59174,29 @@ class Binder {
         continue;
       }
 
-      const [node] = (0, _som.searchNode)(this.root, dataNode, ref, false, false);
+      const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false);
 
-      if (!node) {
+      if (!nodes) {
         (0, _util.warn)(`XFA - Invalid reference: ${ref}.`);
         continue;
       }
 
+      const [node] = nodes;
+
       if (!node[_xfa_object.$isDescendent](this.data)) {
         (0, _util.warn)(`XFA - Invalid node: must be a data node.`);
         continue;
       }
 
-      const [targetNode] = (0, _som.searchNode)(this.root, formNode, target, false, false);
+      const targetNodes = (0, _som.searchNode)(this.root, formNode, target, false, false);
 
-      if (!targetNode) {
+      if (!targetNodes) {
         (0, _util.warn)(`XFA - Invalid target: ${target}.`);
         continue;
       }
 
+      const [targetNode] = targetNodes;
+
       if (!targetNode[_xfa_object.$isDescendent](formNode)) {
         (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`);
         continue;
@@ -57314,25 +59286,29 @@ class Binder {
           continue;
         }
 
-        const [labelNode] = (0, _som.searchNode)(this.root, node, labelRef, true, false);
+        const labelNodes = (0, _som.searchNode)(this.root, node, labelRef, true, false);
 
-        if (!labelNode) {
+        if (!labelNodes) {
           (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`);
           continue;
         }
 
+        const [labelNode] = labelNodes;
+
         if (!labelNode[_xfa_object.$isDescendent](this.datasets)) {
           (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`);
           continue;
         }
 
-        const [valueNode] = (0, _som.searchNode)(this.root, node, valueRef, true, false);
+        const valueNodes = (0, _som.searchNode)(this.root, node, valueRef, true, false);
 
-        if (!valueNode) {
+        if (!valueNodes) {
           (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`);
           continue;
         }
 
+        const [valueNode] = valueNodes;
+
         if (!valueNode[_xfa_object.$isDescendent](this.datasets)) {
           (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`);
           continue;
@@ -57450,6 +59426,24 @@ class Binder {
 
       if (this._mergeMode === undefined && child[_xfa_object.$nodeName] === "subform") {
         this._mergeMode = child.mergeMode === "consumeData";
+
+        const dataChildren = dataNode[_xfa_object.$getChildren]();
+
+        if (dataChildren.length > 0) {
+          this._bindOccurrences(child, [dataChildren[0]], null);
+        } else if (this.emptyMerge) {
+          const dataChild = child[_xfa_object.$data] = new 
_xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], child.name || "root");
+
+          dataNode[_xfa_object.$appendChild](dataChild);
+
+          this._bindElement(child, dataChild);
+        }
+
+        continue;
+      }
+
+      if (!child[_xfa_object.$isBindable]()) {
+        continue;
       }
 
       let global = false;
@@ -57497,11 +59491,17 @@ class Binder {
         if (match === null) {
           match = (0, _som.createDataNode)(this.data, dataNode, ref);
 
+          if (!match) {
+            continue;
+          }
+
           if (this._isConsumeData()) {
             match[_xfa_object.$consumed] = true;
           }
 
-          match = [match];
+          this._bindElement(child, match);
+
+          continue;
         } else {
           if (this._isConsumeData()) {
             match = match.filter(node => !node[_xfa_object.$consumed]);
@@ -57542,12 +59542,28 @@ class Binder {
 
           match = matches.length > 0 ? matches : null;
         } else {
-          match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, false).next().value;
+          match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, 
this.emptyMerge).next().value;
 
           if (!match) {
-            match = new _xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], child.name);
+            match = child[_xfa_object.$data] = new _xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], 
child.name);
+
+            if (this.emptyMerge) {
+              match[_xfa_object.$consumed] = true;
+            }
 
             dataNode[_xfa_object.$appendChild](match);
+
+            this._setProperties(child, match);
+
+            this._bindItems(child, match);
+
+            this._bindElement(child, match);
+
+            continue;
+          }
+
+          if (this.emptyMerge) {
+            match[_xfa_object.$consumed] = true;
           }
 
           match = [match];
@@ -57580,7 +59596,7 @@ class Binder {
 exports.Binder = Binder;
 
 /***/ }),
-/* 72 */
+/* 80 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -57590,22 +59606,28 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = 
exports.Items = exports.Field = exports.BindItems = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _html_utils = __w_pdfjs_require__(73);
+var _layout = __w_pdfjs_require__(81);
 
-var _layout = __w_pdfjs_require__(74);
+var _html_utils = __w_pdfjs_require__(82);
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
 var _util = __w_pdfjs_require__(2);
 
-var _som = __w_pdfjs_require__(75);
+var _som = __w_pdfjs_require__(78);
 
 const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;
+const SVG_NS = "http://www.w3.org/2000/svg";;
 const MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;
+const MAX_EMPTY_PAGES = 3;
+
+function hasMargin(node) {
+  return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || 
node.margin.leftInset);
+}
 
 function _setValue(templateNode, value) {
   if (!templateNode.value) {
@@ -57619,42 +59641,173 @@ function _setValue(templateNode, value) {
   templateNode.value[_xfa_object.$setValue](value);
 }
 
-function getRoot(node) {
-  let parent = node[_xfa_object.$getParent]();
+function* getContainedChildren(node) {
+  for (const child of node[_xfa_object.$getChildren]()) {
+    if (child instanceof SubformSet) {
+      yield* child[_xfa_object.$getContainedChildren]();
+      continue;
+    }
 
-  while (!(parent instanceof Template)) {
-    parent = parent[_xfa_object.$getParent]();
+    yield child;
   }
+}
+
+function setTabIndex(node) {
+  while (node) {
+    if (!node.traversal || node[_xfa_object.$tabIndex]) {
+      return;
+    }
 
-  return parent;
+    let next = null;
+
+    for (const child of node.traversal[_xfa_object.$getChildren]()) {
+      if (child.operation === "next") {
+        next = child;
+        break;
+      }
+    }
+
+    if (!next || !next.ref) {
+      return;
+    }
+
+    const root = node[_xfa_object.$getTemplateRoot]();
+
+    node[_xfa_object.$tabIndex] = ++root[_xfa_object.$tabIndex];
+
+    const ref = root[_xfa_object.$searchNode](next.ref, node);
+
+    if (!ref) {
+      return;
+    }
+
+    node = ref[0];
+  }
 }
 
-const NOTHING = 0;
-const NOSPACE = 1;
-const VALID = 2;
+function valueToHtml(value) {
+  return _utils.HTMLResult.success({
+    name: "div",
+    attributes: {
+      class: ["xfaRich"],
+      style: Object.create(null)
+    },
+    children: [{
+      name: "span",
+      attributes: {
+        style: Object.create(null)
+      },
+      value
+    }]
+  });
+}
 
-function checkDimensions(node, space) {
-  if (node.w !== "" && Math.round(node.w + node.x - space.width) > 1) {
-    const area = getRoot(node)[_xfa_object.$extra].currentContentArea;
+function setFirstUnsplittable(node) {
+  const root = node[_xfa_object.$getTemplateRoot]();
+
+  if (root[_xfa_object.$extra].firstUnsplittable === null) {
+    root[_xfa_object.$extra].firstUnsplittable = node;
+    root[_xfa_object.$extra].noLayoutFailure = true;
+  }
+}
+
+function unsetFirstUnsplittable(node) {
+  const root = node[_xfa_object.$getTemplateRoot]();
+
+  if (root[_xfa_object.$extra].firstUnsplittable === node) {
+    root[_xfa_object.$extra].noLayoutFailure = false;
+  }
+}
+
+function handleBreak(node) {
+  if (node[_xfa_object.$extra]) {
+    return false;
+  }
+
+  node[_xfa_object.$extra] = Object.create(null);
+
+  if (node.targetType === "auto") {
+    return false;
+  }
 
-    if (node.w + node.x > area.w) {
-      return NOTHING;
+  const root = node[_xfa_object.$getTemplateRoot]();
+
+  let target = null;
+
+  if (node.target) {
+    target = root[_xfa_object.$searchNode](node.target, node[_xfa_object.$getParent]());
+
+    if (!target) {
+      return false;
     }
 
-    return NOSPACE;
+    target = target[0];
   }
 
-  if (node.h !== "" && Math.round(node.h + node.y - space.height) > 1) {
-    const area = getRoot(node)[_xfa_object.$extra].currentContentArea;
+  const {
+    currentPageArea,
+    currentContentArea
+  } = root[_xfa_object.$extra];
+
+  if (node.targetType === "pageArea") {
+    if (!(target instanceof PageArea)) {
+      target = null;
+    }
 
-    if (node.h + node.y > area.h) {
-      return NOTHING;
+    if (node.startNew) {
+      node[_xfa_object.$extra].target = target || currentPageArea;
+      return true;
+    } else if (target && target !== currentPageArea) {
+      node[_xfa_object.$extra].target = target;
+      return true;
     }
 
-    return NOSPACE;
+    return false;
   }
 
-  return VALID;
+  if (!(target instanceof ContentArea)) {
+    target = null;
+  }
+
+  const pageArea = target && target[_xfa_object.$getParent]();
+
+  let index;
+
+  if (node.startNew) {
+    if (target) {
+      const contentAreas = pageArea.contentArea.children;
+      index = contentAreas.findIndex(e => e === target) - 1;
+    } else {
+      index = currentPageArea.contentArea.children.findIndex(e => e === currentContentArea);
+    }
+  } else if (target && target !== currentContentArea) {
+    const contentAreas = pageArea.contentArea.children;
+    index = contentAreas.findIndex(e => e === target) - 1;
+  } else {
+    return false;
+  }
+
+  node[_xfa_object.$extra].target = pageArea === currentPageArea ? null : pageArea;
+  node[_xfa_object.$extra].index = index;
+  return true;
+}
+
+function handleOverflow(node, extraNode, space) {
+  const root = node[_xfa_object.$getTemplateRoot]();
+
+  const saved = root[_xfa_object.$extra].noLayoutFailure;
+  const savedMethod = extraNode[_xfa_object.$getSubformParent];
+
+  extraNode[_xfa_object.$getSubformParent] = () => node;
+
+  root[_xfa_object.$extra].noLayoutFailure = true;
+
+  const res = extraNode[_xfa_object.$toHTML](space);
+
+  node[_xfa_object.$addHTML](res.html, res.bbox);
+
+  root[_xfa_object.$extra].noLayoutFailure = saved;
+  extraNode[_xfa_object.$getSubformParent] = savedMethod;
 }
 
 class AppearanceFilter extends _xfa_object.StringObject {
@@ -57694,6 +59847,89 @@ class Arc extends _xfa_object.XFAObject {
     this.fill = null;
   }
 
+  [_xfa_object.$toHTML]() {
+    const edge = this.edge ? this.edge : new Edge({});
+
+    const edgeStyle = edge[_xfa_object.$toStyle]();
+
+    const style = Object.create(null);
+
+    if (this.fill && this.fill.presence === "visible") {
+      Object.assign(style, this.fill[_xfa_object.$toStyle]());
+    } else {
+      style.fill = "transparent";
+    }
+
+    style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0);
+    style.stroke = edgeStyle.color;
+    let arc;
+    const attributes = {
+      xmlns: SVG_NS,
+      style: {
+        width: "100%",
+        height: "100%",
+        overflow: "visible"
+      }
+    };
+
+    if (this.startAngle === 0 && this.sweepAngle === 360) {
+      arc = {
+        name: "ellipse",
+        attributes: {
+          xmlns: SVG_NS,
+          cx: "50%",
+          cy: "50%",
+          rx: "50%",
+          ry: "50%",
+          style
+        }
+      };
+    } else {
+      const startAngle = this.startAngle * Math.PI / 180;
+      const sweepAngle = this.sweepAngle * Math.PI / 180;
+      const largeArc = this.sweepAngle - this.startAngle > 180 ? 1 : 0;
+      const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + 
Math.cos(sweepAngle)), 50 * (1 - Math.sin(sweepAngle))];
+      arc = {
+        name: "path",
+        attributes: {
+          xmlns: SVG_NS,
+          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,
+          vectorEffect: "non-scaling-stroke",
+          style
+        }
+      };
+      Object.assign(attributes, {
+        viewBox: "0 0 100 100",
+        preserveAspectRatio: "none"
+      });
+    }
+
+    const svg = {
+      name: "svg",
+      children: [arc],
+      attributes
+    };
+
+    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
+    if (hasMargin(parent)) {
+      return _utils.HTMLResult.success({
+        name: "div",
+        attributes: {
+          style: {
+            display: "inline",
+            width: "100%",
+            height: "100%"
+          }
+        },
+        children: [svg]
+      });
+    }
+
+    svg.attributes.style.position = "absolute";
+    return _utils.HTMLResult.success(svg);
+  }
+
 }
 
 class Area extends _xfa_object.XFAObject {
@@ -57722,6 +59958,10 @@ class Area extends _xfa_object.XFAObject {
     this.subformSet = new _xfa_object.XFAObjectArray();
   }
 
+  *[_xfa_object.$getContainedChildren]() {
+    yield* getContainedChildren(this);
+  }
+
   [_xfa_object.$isTransparent]() {
     return true;
   }
@@ -57743,9 +59983,13 @@ class Area extends _xfa_object.XFAObject {
     const attributes = {
       style,
       id: this[_xfa_object.$uid],
-      class: "xfaArea"
+      class: ["xfaArea"]
     };
 
+    if ((0, _html_utils.isPrintOnly)(this)) {
+      attributes.class.push("xfaPrintOnly");
+    }
+
     if (this.name) {
       attributes.xfaName = this.name;
     }
@@ -57758,12 +60002,18 @@ class Area extends _xfa_object.XFAObject {
       availableSpace
     };
 
-    if (!this[_xfa_object.$childrenToHTML]({
+    const result = this[_xfa_object.$childrenToHTML]({
       filter: new Set(["area", "draw", "field", "exclGroup", "subform", "subformSet"]),
       include: true
-    })) {
+    });
+
+    if (!result.success) {
+      if (result.isBreak()) {
+        return result;
+      }
+
       delete this[_xfa_object.$extra];
-      return _utils.HTMLResult.empty;
+      return _utils.HTMLResult.FAILURE;
     }
 
     style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width);
@@ -57791,6 +60041,10 @@ class Assist extends _xfa_object.XFAObject {
     this.toolTip = null;
   }
 
+  [_xfa_object.$toHTML]() {
+    return this.toolTip && this.toolTip[_xfa_object.$content] ? this.toolTip[_xfa_object.$content] : null;
+  }
+
 }
 
 class Barcode extends _xfa_object.XFAObject {
@@ -57896,7 +60150,7 @@ class BooleanElement extends _xfa_object.Option01 {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content] === 1);
+    return valueToHtml(this[_xfa_object.$content] === 1 ? "1" : "0");
   }
 
 }
@@ -57918,7 +60172,7 @@ class Border extends _xfa_object.XFAObject {
     this.margin = null;
   }
 
-  [_xfa_object.$toStyle](widths, margins) {
+  [_xfa_object.$toStyle]() {
     const edges = this.edge.children.slice();
 
     if (edges.length < 4) {
@@ -57929,47 +60183,36 @@ class Border extends _xfa_object.XFAObject {
       }
     }
 
-    widths = widths || [0, 0, 0, 0];
-
-    for (let i = 0; i < 4; i++) {
-      widths[i] = edges[i].thickness;
-    }
-
-    margins = margins || [0, 0, 0, 0];
     const edgeStyles = edges.map(node => {
       const style = node[_xfa_object.$toStyle]();
 
       style.color = style.color || "#000000";
       return style;
     });
-    let style;
+    const widths = edges.map(edge => edge.thickness);
+    const insets = [0, 0, 0, 0];
 
     if (this.margin) {
-      style = this.margin[_xfa_object.$toStyle]();
-      margins[0] = this.margin.topInset;
-      margins[1] = this.margin.rightInset;
-      margins[2] = this.margin.bottomInset;
-      margins[3] = this.margin.leftInset;
-    } else {
-      style = Object.create(null);
+      insets[0] = this.margin.topInset;
+      insets[1] = this.margin.rightInset;
+      insets[2] = this.margin.bottomInset;
+      insets[3] = this.margin.leftInset;
     }
 
-    let isForUi = false;
-
-    const parent = this[_xfa_object.$getParent]();
-
-    const grandParent = parent ? parent[_xfa_object.$getParent]() : null;
+    this[_xfa_object.$extra] = {
+      widths,
+      insets
+    };
+    const style = Object.create(null);
 
-    if (grandParent instanceof Ui) {
-      isForUi = true;
+    if (this.margin) {
+      Object.assign(style, this.margin[_xfa_object.$toStyle]());
     }
 
-    if (this.fill) {
+    if (this.fill && this.fill.presence === "visible") {
       Object.assign(style, this.fill[_xfa_object.$toStyle]());
     }
 
-    let hasRadius = false;
-
     if (this.corner.children.some(node => node.radius !== 0)) {
       const cornerStyles = this.corner.children.map(node => node[_xfa_object.$toStyle]());
 
@@ -57982,56 +60225,25 @@ class Border extends _xfa_object.XFAObject {
       }
 
       style.borderRadius = cornerStyles.map(s => s.radius).join(" ");
-      hasRadius = true;
     }
 
-    const firstEdge = edgeStyles[0];
-
-    if (!hasRadius && (this.edge.children.length <= 1 || edgeStyles.every(x => x.style === firstEdge.style 
&& x.width === firstEdge.width && x.color === firstEdge.color) && margins.every(x => x === margins[0]))) {
-      let borderStyle;
-
-      switch (this.presence) {
-        case "invisible":
-        case "hidden":
-          borderStyle = "";
-          break;
-
-        case "inactive":
-          borderStyle = "none";
-          break;
-
-        default:
-          borderStyle = firstEdge.style;
-          break;
-      }
-
-      style.outline = `${firstEdge.width} ${firstEdge.color} ${borderStyle}`;
-      const offset = edges[0].thickness + margins[0];
-      style.outlineOffset = `-${(0, _html_utils.measureToString)(offset)}`;
-
-      if (isForUi) {
-        style.padding = `${(0, _html_utils.measureToString)(offset + 1)}`;
-      }
-    } else {
-      switch (this.presence) {
-        case "invisible":
-        case "hidden":
-          style.borderStyle = "";
-          break;
-
-        case "inactive":
-          style.borderStyle = "none";
-          break;
+    switch (this.presence) {
+      case "invisible":
+      case "hidden":
+        style.borderStyle = "";
+        break;
 
-        default:
-          style.borderStyle = edgeStyles.map(s => s.style).join(" ");
-          break;
-      }
+      case "inactive":
+        style.borderStyle = "none";
+        break;
 
-      style.borderWidth = edgeStyles.map(s => s.width).join(" ");
-      style.borderColor = edgeStyles.map(s => s.color).join(" ");
+      default:
+        style.borderStyle = edgeStyles.map(s => s.style).join(" ");
+        break;
     }
 
+    style.borderWidth = edgeStyles.map(s => s.width).join(" ");
+    style.borderColor = edgeStyles.map(s => s.color).join(" ");
     return style;
   }
 
@@ -58073,7 +60285,7 @@ class BreakAfter extends _xfa_object.XFAObject {
       validate: x => x === 1
     });
     this.target = attributes.target || "";
-    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
+    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", 
"pageArea"]);
     this.trailer = attributes.trailer || "";
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
@@ -58093,7 +60305,7 @@ class BreakBefore extends _xfa_object.XFAObject {
       validate: x => x === 1
     });
     this.target = attributes.target || "";
-    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
+    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", 
"pageArea"]);
     this.trailer = attributes.trailer || "";
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
@@ -58121,7 +60333,8 @@ class Button extends _xfa_object.XFAObject {
     return _utils.HTMLResult.success({
       name: "button",
       attributes: {
-        class: "xfaButton",
+        id: this[_xfa_object.$uid],
+        class: ["xfaButton"],
         style: {}
       },
       children: []
@@ -58150,7 +60363,7 @@ class Caption extends _xfa_object.XFAObject {
     this.id = attributes.id || "";
     this.placement = (0, _utils.getStringOption)(attributes.placement, ["left", "bottom", "inline", "right", 
"top"]);
     this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.reserve = (0, _utils.getMeasurement)(attributes.reserve);
+    this.reserve = Math.ceil((0, _utils.getMeasurement)(attributes.reserve));
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
     this.extras = null;
@@ -58164,6 +60377,35 @@ class Caption extends _xfa_object.XFAObject {
     _setValue(this, value);
   }
 
+  [_xfa_object.$getExtra](availableSpace) {
+    if (!this[_xfa_object.$extra]) {
+      let {
+        width,
+        height
+      } = availableSpace;
+
+      switch (this.placement) {
+        case "left":
+        case "right":
+        case "inline":
+          width = this.reserve <= 0 ? width : this.reserve;
+          break;
+
+        case "top":
+        case "bottom":
+          height = this.reserve <= 0 ? height : this.reserve;
+          break;
+      }
+
+      this[_xfa_object.$extra] = (0, _html_utils.layoutNode)(this, {
+        width,
+        height
+      });
+    }
+
+    return this[_xfa_object.$extra];
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     if (!this.value) {
       return _utils.HTMLResult.EMPTY;
@@ -58175,6 +60417,28 @@ class Caption extends _xfa_object.XFAObject {
       return _utils.HTMLResult.EMPTY;
     }
 
+    const savedReserve = this.reserve;
+
+    if (this.reserve <= 0) {
+      const {
+        w,
+        h
+      } = this[_xfa_object.$getExtra](availableSpace);
+
+      switch (this.placement) {
+        case "left":
+        case "right":
+        case "inline":
+          this.reserve = w;
+          break;
+
+        case "top":
+        case "bottom":
+          this.reserve = h;
+          break;
+      }
+    }
+
     const children = [];
 
     if (typeof value === "string") {
@@ -58186,15 +60450,13 @@ class Caption extends _xfa_object.XFAObject {
       children.push(value);
     }
 
-    const style = (0, _html_utils.toStyle)(this, "font", "margin", "para", "visibility");
+    const style = (0, _html_utils.toStyle)(this, "font", "margin", "visibility");
 
     switch (this.placement) {
       case "left":
       case "right":
         if (this.reserve > 0) {
           style.width = (0, _html_utils.measureToString)(this.reserve);
-        } else {
-          style.minWidth = (0, _html_utils.measureToString)(this.reserve);
         }
 
         break;
@@ -58203,18 +60465,18 @@ class Caption extends _xfa_object.XFAObject {
       case "bottom":
         if (this.reserve > 0) {
           style.height = (0, _html_utils.measureToString)(this.reserve);
-        } else {
-          style.minHeight = (0, _html_utils.measureToString)(this.reserve);
         }
 
         break;
     }
 
+    (0, _html_utils.setPara)(this, null, value);
+    this.reserve = savedReserve;
     return _utils.HTMLResult.success({
       name: "div",
       attributes: {
         style,
-        class: "xfaCaption"
+        class: ["xfaCaption"]
       },
       children
     });
@@ -58267,89 +60529,62 @@ class CheckButton extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    const style = (0, _html_utils.toStyle)(this, "border", "margin");
+    const style = (0, _html_utils.toStyle)("margin");
     const size = (0, _html_utils.measureToString)(this.size);
     style.width = style.height = size;
-    let mark, radius;
+    let type;
+    let className;
+    let groupId;
 
-    if (this.shape === "square") {
-      mark = "▪";
-      radius = "10%";
-    } else {
-      mark = "●";
-      radius = "50%";
-    }
-
-    if (!style.borderRadius) {
-      style.borderRadius = radius;
-    }
-
-    if (this.mark !== "default") {
-      switch (this.mark) {
-        case "check":
-          mark = "✓";
-          break;
-
-        case "circle":
-          mark = "●";
-          break;
-
-        case "cross":
-          mark = "✕";
-          break;
+    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
 
-        case "diamond":
-          mark = "♦";
-          break;
+    const items = field.items.children.length && field.items.children[0][_xfa_object.$toHTML]().html || [];
+    const exportedValue = {
+      on: (items[0] || "on").toString(),
+      off: (items[1] || "off").toString()
+    };
+    const value = field.value && field.value[_xfa_object.$text]() || "off";
+    const checked = value === exportedValue.on || undefined;
 
-        case "square":
-          mark = "▪";
-          break;
+    const container = field[_xfa_object.$getSubformParent]();
 
-        case "star":
-          mark = "★";
-          break;
-      }
-    }
+    const fieldId = field[_xfa_object.$uid];
+    let dataId;
 
-    if (size !== "10px") {
-      style.fontSize = size;
-      style.lineHeight = size;
-      style.width = size;
-      style.height = size;
+    if (container instanceof ExclGroup) {
+      groupId = container[_xfa_object.$uid];
+      type = "radio";
+      className = "xfaRadio";
+      dataId = container[_xfa_object.$data] && container[_xfa_object.$data][_xfa_object.$uid] || 
container[_xfa_object.$uid];
+    } else {
+      type = "checkbox";
+      className = "xfaCheckbox";
+      dataId = field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid];
     }
 
-    const fieldId = this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid];
-
     const input = {
       name: "input",
       attributes: {
-        class: "xfaCheckbox",
+        class: [className],
+        style,
         fieldId,
-        type: "radio",
-        id: `${fieldId}-radio`
+        dataId,
+        type,
+        checked,
+        xfaOn: exportedValue.on
       }
     };
 
-    const container = this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$getParent]();
-
-    if (container instanceof ExclGroup) {
-      input.attributes.name = container[_xfa_object.$uid];
+    if (groupId) {
+      input.attributes.name = groupId;
     }
 
     return _utils.HTMLResult.success({
       name: "label",
       attributes: {
-        class: "xfaLabel"
+        class: ["xfaLabel"]
       },
-      children: [input, {
-        name: "span",
-        attributes: {
-          class: "xfaCheckboxMark",
-          mark,
-          style
-        }
-      }]
+      children: [input]
     });
   }
 
@@ -58383,24 +60618,54 @@ class ChoiceList extends _xfa_object.XFAObject {
     const children = [];
 
     if (field.items.children.length > 0) {
-      const displayed = field.items.children[0][_xfa_object.$toHTML]().html;
+      const items = field.items;
+      let displayedIndex = 0;
+      let saveIndex = 0;
 
-      const values = field.items.children[1] ? field.items.children[1][_xfa_object.$toHTML]().html : [];
+      if (items.children.length === 2) {
+        displayedIndex = items.children[0].save;
+        saveIndex = 1 - displayedIndex;
+      }
+
+      const displayed = items.children[displayedIndex][_xfa_object.$toHTML]().html;
+
+      const values = items.children[saveIndex][_xfa_object.$toHTML]().html;
+
+      let selected = false;
+      const value = field.value && field.value[_xfa_object.$text]() || "";
 
       for (let i = 0, ii = displayed.length; i < ii; i++) {
-        children.push({
+        const option = {
           name: "option",
           attributes: {
             value: values[i] || displayed[i]
           },
           value: displayed[i]
+        };
+
+        if (values[i] === value) {
+          option.attributes.selected = selected = true;
+        }
+
+        children.push(option);
+      }
+
+      if (!selected) {
+        children.splice(0, 0, {
+          name: "option",
+          attributes: {
+            hidden: true,
+            selected: true
+          },
+          value: " "
         });
       }
     }
 
     const selectAttributes = {
-      class: "xfaSelect",
-      fieldId: this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid],
+      class: ["xfaSelect"],
+      fieldId: field[_xfa_object.$uid],
+      dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
       style
     };
 
@@ -58411,7 +60676,7 @@ class ChoiceList extends _xfa_object.XFAObject {
     return _utils.HTMLResult.success({
       name: "label",
       attributes: {
-        class: "xfaLabel"
+        class: ["xfaLabel"]
       },
       children: [{
         name: "select",
@@ -58493,18 +60758,23 @@ class ContentArea extends _xfa_object.XFAObject {
     const left = (0, _html_utils.measureToString)(this.x);
     const top = (0, _html_utils.measureToString)(this.y);
     const style = {
-      position: "absolute",
       left,
       top,
       width: (0, _html_utils.measureToString)(this.w),
       height: (0, _html_utils.measureToString)(this.h)
     };
+    const classNames = ["xfaContentarea"];
+
+    if ((0, _html_utils.isPrintOnly)(this)) {
+      classNames.push("xfaPrintOnly");
+    }
+
     return _utils.HTMLResult.success({
       name: "div",
       children: [],
       attributes: {
         style,
-        class: "xfaContentarea",
+        class: classNames,
         id: this[_xfa_object.$uid]
       }
     });
@@ -58534,7 +60804,7 @@ class Corner extends _xfa_object.XFAObject {
 
   [_xfa_object.$toStyle]() {
     const style = (0, _html_utils.toStyle)(this, "visibility");
-    style.radius = (0, _html_utils.measureToString)(this.radius);
+    style.radius = (0, _html_utils.measureToString)(this.join === "square" ? 0 : this.radius);
     return style;
   }
 
@@ -58550,11 +60820,13 @@ class DateElement extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content].trim());
+    const date = this[_xfa_object.$content].trim();
+
+    this[_xfa_object.$content] = date ? new Date(date) : null;
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content].toString());
+    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -58569,11 +60841,13 @@ class DateTime extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content].trim());
+    const date = this[_xfa_object.$content].trim();
+
+    this[_xfa_object.$content] = date ? new Date(date) : null;
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content].toString());
+    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -58594,19 +60868,23 @@ class DateTimeEdit extends _xfa_object.XFAObject {
 
   [_xfa_object.$toHTML](availableSpace) {
     const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
+
+    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
     const html = {
       name: "input",
       attributes: {
         type: "text",
-        fieldId: this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid],
-        class: "xfaTextfield",
+        fieldId: field[_xfa_object.$uid],
+        dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
+        class: ["xfaTextfield"],
         style
       }
     };
     return _utils.HTMLResult.success({
       name: "label",
       attributes: {
-        class: "xfaLabel"
+        class: ["xfaLabel"]
       },
       children: [html]
     });
@@ -58639,7 +60917,7 @@ class Decimal extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content] !== null ? 
this[_xfa_object.$content].toString() : "");
+    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -58747,48 +61025,62 @@ class Draw extends _xfa_object.XFAObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    if (this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 0) {
+    if (this.presence === "hidden" || this.presence === "inactive") {
       return _utils.HTMLResult.EMPTY;
     }
 
     (0, _html_utils.fixDimensions)(this);
+    const savedW = this.w;
+    const savedH = this.h;
+    const {
+      w,
+      h,
+      isBroken
+    } = (0, _html_utils.layoutNode)(this, availableSpace);
 
-    if (this.w !== "" && this.h === "" && this.value) {
-      const text = this.value[_xfa_object.$text]();
-
-      if (text) {
-        const {
-          height
-        } = (0, _html_utils.layoutText)(text, this.font.size, {
-          width: this.w,
-          height: Infinity
-        });
-        this.h = height || "";
+    if (w && this.w === "") {
+      if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {
+        return _utils.HTMLResult.FAILURE;
       }
+
+      this.w = w;
     }
 
-    switch (checkDimensions(this, availableSpace)) {
-      case NOTHING:
-        return _utils.HTMLResult.EMPTY;
+    if (h && this.h === "") {
+      this.h = h;
+    }
 
-      case NOSPACE:
-        return _utils.HTMLResult.FAILURE;
+    setFirstUnsplittable(this);
 
-      default:
-        break;
+    if (!(0, _layout.checkDimensions)(this, availableSpace)) {
+      this.w = savedW;
+      this.h = savedH;
+      return _utils.HTMLResult.FAILURE;
+    }
+
+    unsetFirstUnsplittable(this);
+    const style = (0, _html_utils.toStyle)(this, "font", "hAlign", "dimensions", "position", "presence", 
"rotate", "anchorType", "border", "margin");
+    (0, _html_utils.setMinMaxDimensions)(this, style);
+
+    if (style.margin) {
+      style.padding = style.margin;
+      delete style.margin;
     }
 
-    const style = (0, _html_utils.toStyle)(this, "font", "hAlign", "dimensions", "position", "presence", 
"rotate", "anchorType", "borderMarginPadding");
     const classNames = ["xfaDraw"];
 
     if (this.font) {
       classNames.push("xfaFont");
     }
 
+    if ((0, _html_utils.isPrintOnly)(this)) {
+      classNames.push("xfaPrintOnly");
+    }
+
     const attributes = {
       style,
       id: this[_xfa_object.$uid],
-      class: classNames.join(" ")
+      class: classNames
     };
 
     if (this.name) {
@@ -58800,58 +61092,26 @@ class Draw extends _xfa_object.XFAObject {
       attributes,
       children: []
     };
-    const extra = (0, _html_utils.addExtraDivForBorder)(html);
+    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
+
+    if (assist) {
+      html.attributes.title = assist;
+    }
+
     const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);
     const value = this.value ? this.value[_xfa_object.$toHTML](availableSpace).html : null;
 
     if (value === null) {
-      return _utils.HTMLResult.success(extra, bbox);
+      this.w = savedW;
+      this.h = savedH;
+      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
     }
 
     html.children.push(value);
-
-    if (value.attributes.class === "xfaRich") {
-      if (this.h === "") {
-        style.height = "auto";
-      }
-
-      if (this.w === "") {
-        style.width = "auto";
-      }
-
-      if (this.para) {
-        attributes.style.display = "flex";
-        attributes.style.flexDirection = "column";
-
-        switch (this.para.vAlign) {
-          case "top":
-            attributes.style.justifyContent = "start";
-            break;
-
-          case "bottom":
-            attributes.style.justifyContent = "end";
-            break;
-
-          case "middle":
-            attributes.style.justifyContent = "center";
-            break;
-        }
-
-        const paraStyle = this.para[_xfa_object.$toStyle]();
-
-        if (!value.attributes.style) {
-          value.attributes.style = paraStyle;
-        } else {
-          for (const [key, val] of Object.entries(paraStyle)) {
-            if (!(key in value.attributes.style)) {
-              value.attributes.style[key] = val;
-            }
-          }
-        }
-      }
-    }
-
-    return _utils.HTMLResult.success(extra, bbox);
+    (0, _html_utils.setPara)(this, style, value);
+    this.w = savedW;
+    this.h = savedH;
+    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
   }
 
 }
@@ -58863,7 +61123,7 @@ class Edge extends _xfa_object.XFAObject {
     this.id = attributes.id || "";
     this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
     this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", 
"dashed", "dotted", "embossed", "etched", "lowered", "raised"]);
-    this.thickness = Math.max(1, Math.round((0, _utils.getMeasurement)(attributes.thickness, "0.5pt")));
+    this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt");
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
     this.color = null;
@@ -58874,7 +61134,7 @@ class Edge extends _xfa_object.XFAObject {
     const style = (0, _html_utils.toStyle)(this, "visibility");
     Object.assign(style, {
       linecap: this.cap,
-      width: (0, _html_utils.measureToString)(Math.max(1, Math.round(this.thickness))),
+      width: (0, _html_utils.measureToString)(this.thickness),
       color: this.color ? this.color[_xfa_object.$toStyle]() : "#000000",
       style: ""
     });
@@ -59045,6 +61305,10 @@ class ExData extends _xfa_object.ContentObject {
     this.usehref = attributes.usehref || "";
   }
 
+  [_xfa_object.$isCDATAXml]() {
+    return this.contentType === "text/html";
+  }
+
   [_xfa_object.$onChild](child) {
     if (this.contentType === "text/html" && child[_xfa_object.$namespaceId] === 
_namespaces.NamespaceIds.xhtml.id) {
       this[_xfa_object.$content] = child;
@@ -59140,6 +61404,10 @@ class ExclGroup extends _xfa_object.XFAObject {
     this.setProperty = new _xfa_object.XFAObjectArray();
   }
 
+  [_xfa_object.$isBindable]() {
+    return true;
+  }
+
   [_xfa_object.$hasSettableValue]() {
     return true;
   }
@@ -59154,18 +61422,36 @@ class ExclGroup extends _xfa_object.XFAObject {
         field.value = nodeValue;
       }
 
-      const nodeBoolean = new BooleanElement({});
-      nodeBoolean[_xfa_object.$content] = 0;
+      field.value[_xfa_object.$setValue](value);
+    }
+  }
 
-      for (const item of field.items.children) {
-        if (item[_xfa_object.$hasItem](value)) {
-          nodeBoolean[_xfa_object.$content] = 1;
-          break;
-        }
-      }
+  [_xfa_object.$isThereMoreWidth]() {
+    return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && 
this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth]();
+  }
+
+  [_xfa_object.$isSplittable]() {
+    const parent = this[_xfa_object.$getSubformParent]();
+
+    if (!parent[_xfa_object.$isSplittable]()) {
+      return false;
+    }
 
-      field.value[_xfa_object.$setValue](nodeBoolean);
+    if (this[_xfa_object.$extra]._isSplittable !== undefined) {
+      return this[_xfa_object.$extra]._isSplittable;
+    }
+
+    if (this.layout === "position" || this.layout.includes("row")) {
+      this[_xfa_object.$extra]._isSplittable = false;
+      return false;
     }
+
+    if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) {
+      return false;
+    }
+
+    this[_xfa_object.$extra]._isSplittable = true;
+    return true;
   }
 
   [_xfa_object.$flushHTML]() {
@@ -59188,8 +61474,10 @@ class ExclGroup extends _xfa_object.XFAObject {
     (0, _html_utils.fixDimensions)(this);
     const children = [];
     const attributes = {
-      id: this[_xfa_object.$uid]
+      id: this[_xfa_object.$uid],
+      class: []
     };
+    (0, _html_utils.setAccess)(this, attributes.class);
 
     if (!this[_xfa_object.$extra]) {
       this[_xfa_object.$extra] = Object.create(null);
@@ -59199,22 +61487,26 @@ class ExclGroup extends _xfa_object.XFAObject {
       children,
       attributes,
       attempt: 0,
-      availableSpace,
+      line: null,
+      numberInLine: 0,
+      availableSpace: {
+        width: Math.min(this.w || Infinity, availableSpace.width),
+        height: Math.min(this.h || Infinity, availableSpace.height)
+      },
       width: 0,
       height: 0,
       prevHeight: 0,
       currentWidth: 0
     });
 
-    switch (checkDimensions(this, availableSpace)) {
-      case NOTHING:
-        return _utils.HTMLResult.EMPTY;
+    const isSplittable = this[_xfa_object.$isSplittable]();
 
-      case NOSPACE:
-        return _utils.HTMLResult.FAILURE;
+    if (!isSplittable) {
+      setFirstUnsplittable(this);
+    }
 
-      default:
-        break;
+    if (!(0, _layout.checkDimensions)(this, availableSpace)) {
+      return _utils.HTMLResult.FAILURE;
     }
 
     availableSpace = {
@@ -59223,8 +61515,8 @@ class ExclGroup extends _xfa_object.XFAObject {
     };
     const filter = new Set(["field"]);
 
-    if (this.layout === "row") {
-      const columnWidths = this[_xfa_object.$getParent]().columnWidths;
+    if (this.layout.includes("row")) {
+      const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths;
 
       if (Array.isArray(columnWidths) && columnWidths.length > 0) {
         this[_xfa_object.$extra].columnWidths = columnWidths;
@@ -59232,7 +61524,7 @@ class ExclGroup extends _xfa_object.XFAObject {
       }
     }
 
-    const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", 
"borderMarginPadding", "hAlign");
+    const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", 
"border", "margin", "hAlign");
     const classNames = ["xfaExclgroup"];
     const cl = (0, _html_utils.layoutClass)(this);
 
@@ -59240,34 +61532,53 @@ class ExclGroup extends _xfa_object.XFAObject {
       classNames.push(cl);
     }
 
+    if ((0, _html_utils.isPrintOnly)(this)) {
+      classNames.push("xfaPrintOnly");
+    }
+
     attributes.style = style;
-    attributes.class = classNames.join(" ");
+    attributes.class = classNames;
 
     if (this.name) {
       attributes.xfaName = this.name;
     }
 
-    let failure;
+    const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb";
+    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;
 
-    if (this.layout === "lr-tb" || this.layout === "rl-tb") {
-      for (; this[_xfa_object.$extra].attempt < MAX_ATTEMPTS_FOR_LRTB_LAYOUT; 
this[_xfa_object.$extra].attempt++) {
-        if (this[_xfa_object.$childrenToHTML]({
-          filter,
-          include: true
-        })) {
-          break;
-        }
+    for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) {
+      if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {
+        this[_xfa_object.$extra].numberInLine = 0;
       }
 
-      failure = this[_xfa_object.$extra].attempt === 2;
-    } else {
-      failure = !this[_xfa_object.$childrenToHTML]({
+      const result = this[_xfa_object.$childrenToHTML]({
         filter,
         include: true
       });
+
+      if (result.success) {
+        break;
+      }
+
+      if (result.isBreak()) {
+        return result;
+      }
+
+      if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && 
!this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+        this[_xfa_object.$extra].attempt = maxRun;
+        break;
+      }
     }
 
-    if (failure) {
+    if (!isSplittable) {
+      unsetFirstUnsplittable(this);
+    }
+
+    if (this[_xfa_object.$extra].attempt === maxRun) {
+      if (!isSplittable) {
+        delete this[_xfa_object.$extra];
+      }
+
       return _utils.HTMLResult.FAILURE;
     }
 
@@ -59279,32 +61590,31 @@ class ExclGroup extends _xfa_object.XFAObject {
       marginV = this.margin.topInset + this.margin.bottomInset;
     }
 
+    const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0);
+    const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0);
+    const bbox = [this.x, this.y, width, height];
+
     if (this.w === "") {
-      style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width + marginH);
+      style.width = (0, _html_utils.measureToString)(width);
     }
 
     if (this.h === "") {
-      style.height = (0, _html_utils.measureToString)(this[_xfa_object.$extra].height + marginV);
+      style.height = (0, _html_utils.measureToString)(height);
     }
 
-    let html = {
+    const html = {
       name: "div",
       attributes,
       children
     };
-    html = (0, _html_utils.addExtraDivForBorder)(html);
-    let bbox;
+    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
 
-    if (this.w !== "" && this.h !== "") {
-      bbox = [this.x, this.y, this.w, this.h];
-    } else {
-      const width = this.w === "" ? marginH + this[_xfa_object.$extra].width : this.w;
-      const height = this.h === "" ? marginV + this[_xfa_object.$extra].height : this.h;
-      bbox = [this.x, this.y, width, height];
+    if (assist) {
+      html.attributes.title = assist;
     }
 
     delete this[_xfa_object.$extra];
-    return _utils.HTMLResult.success(html, bbox);
+    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
   }
 
 }
@@ -59399,90 +61709,233 @@ class Field extends _xfa_object.XFAObject {
     this.setProperty = new _xfa_object.XFAObjectArray();
   }
 
+  [_xfa_object.$isBindable]() {
+    return true;
+  }
+
   [_xfa_object.$setValue](value) {
     _setValue(this, value);
   }
 
   [_xfa_object.$toHTML](availableSpace) {
+    if (!this.ui) {
+      this.ui = new Ui({});
+      this.ui[_xfa_object.$globalData] = this[_xfa_object.$globalData];
+
+      this[_xfa_object.$appendChild](this.ui);
+
+      let node;
+
+      switch (this.items.children.length) {
+        case 0:
+          node = new TextEdit({});
+          this.ui.textEdit = node;
+          break;
+
+        case 1:
+          node = new CheckButton({});
+          this.ui.checkButton = node;
+          break;
+
+        case 2:
+          node = new ChoiceList({});
+          this.ui.choiceList = node;
+          break;
+      }
+
+      this.ui[_xfa_object.$appendChild](node);
+    }
+
+    setTabIndex(this);
+
     if (!this.ui || this.presence === "hidden" || this.presence === "inactive" || this.h === 0 || this.w === 
0) {
       return _utils.HTMLResult.EMPTY;
     }
 
-    (0, _html_utils.fixDimensions)(this);
+    if (this.caption) {
+      delete this.caption[_xfa_object.$extra];
+    }
 
-    switch (checkDimensions(this, availableSpace)) {
-      case NOTHING:
-        return _utils.HTMLResult.EMPTY;
+    const caption = this.caption ? this.caption[_xfa_object.$toHTML](availableSpace).html : null;
+    const savedW = this.w;
+    const savedH = this.h;
 
-      case NOSPACE:
-        return _utils.HTMLResult.FAILURE;
+    if (this.w === "" || this.h === "") {
+      let marginH = 0;
+      let marginV = 0;
 
-      default:
-        break;
+      if (this.margin) {
+        marginH = this.margin.leftInset + this.margin.rightInset;
+        marginV = this.margin.topInset + this.margin.bottomInset;
+      }
+
+      let width = null;
+      let height = null;
+
+      if (this.caption) {
+        const {
+          w,
+          h,
+          isBroken
+        } = this.caption[_xfa_object.$getExtra](availableSpace);
+
+        if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {
+          return _utils.HTMLResult.FAILURE;
+        }
+
+        width = w;
+        height = h;
+
+        if (this.ui.checkButton) {
+          switch (this.caption.placement) {
+            case "left":
+            case "right":
+            case "inline":
+              width += this.ui.checkButton.size;
+              break;
+
+            case "top":
+            case "bottom":
+              height += this.ui.checkButton.size;
+              break;
+          }
+        }
+      }
+
+      if (width && this.w === "") {
+        this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, Math.max(this.minW, width + marginH));
+      }
+
+      if (height && this.h === "") {
+        this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, Math.max(this.minH, height + marginV));
+      }
     }
 
-    const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", 
"presence", "borderMarginPadding", "hAlign");
+    (0, _html_utils.fixDimensions)(this);
+    setFirstUnsplittable(this);
+
+    if (!(0, _layout.checkDimensions)(this, availableSpace)) {
+      this.w = savedW;
+      this.h = savedH;
+      return _utils.HTMLResult.FAILURE;
+    }
+
+    unsetFirstUnsplittable(this);
+    const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", 
"presence", "margin", "hAlign");
+    (0, _html_utils.setMinMaxDimensions)(this, style);
     const classNames = ["xfaField"];
 
     if (this.font) {
       classNames.push("xfaFont");
     }
 
+    if ((0, _html_utils.isPrintOnly)(this)) {
+      classNames.push("xfaPrintOnly");
+    }
+
     const attributes = {
       style,
       id: this[_xfa_object.$uid],
-      class: classNames.join(" ")
+      class: classNames
     };
 
+    if (style.margin) {
+      style.padding = style.margin;
+      delete style.margin;
+    }
+
+    (0, _html_utils.setAccess)(this, classNames);
+
     if (this.name) {
       attributes.xfaName = this.name;
     }
 
     const children = [];
-    let html = {
+    const html = {
       name: "div",
       attributes,
       children
     };
+    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
+
+    if (assist) {
+      html.attributes.title = assist;
+    }
+
+    const borderStyle = this.border ? this.border[_xfa_object.$toStyle]() : null;
     const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);
-    html = (0, _html_utils.addExtraDivForBorder)(html);
-    const ui = this.ui ? this.ui[_xfa_object.$toHTML]().html : null;
+
+    const ui = this.ui[_xfa_object.$toHTML]().html;
 
     if (!ui) {
-      return _utils.HTMLResult.success(html, bbox);
+      Object.assign(style, borderStyle);
+      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
+    }
+
+    if (this[_xfa_object.$tabIndex]) {
+      if (ui.children && ui.children[0]) {
+        ui.children[0].attributes.tabindex = this[_xfa_object.$tabIndex];
+      } else {
+        ui.attributes.tabindex = this[_xfa_object.$tabIndex];
+      }
     }
 
     if (!ui.attributes.style) {
       ui.attributes.style = Object.create(null);
     }
 
+    if (this.ui.button) {
+      Object.assign(ui.attributes.style, borderStyle);
+    } else {
+      Object.assign(style, borderStyle);
+    }
+
     children.push(ui);
 
     if (this.value) {
       if (this.ui.imageEdit) {
         ui.children.push(this.value[_xfa_object.$toHTML]().html);
-      } else if (ui.name !== "button") {
-        const value = this.value[_xfa_object.$toHTML]().html;
+      } else if (!this.ui.button) {
+        let value = "";
+
+        if (this.value.exData) {
+          value = this.value.exData[_xfa_object.$text]();
+        } else {
+          const htmlValue = this.value[_xfa_object.$toHTML]().html;
+
+          if (htmlValue !== null) {
+            value = htmlValue.children[0].value;
+          }
+        }
+
+        if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {
+          ui.children[0].attributes.maxLength = this.value.text.maxChars;
+        }
 
         if (value) {
           if (ui.children[0].name === "textarea") {
-            ui.children[0].attributes.textContent = value.value;
+            ui.children[0].attributes.textContent = value;
           } else {
-            ui.children[0].attributes.value = value.value;
+            ui.children[0].attributes.value = value;
           }
         }
       }
     }
 
-    const caption = this.caption ? this.caption[_xfa_object.$toHTML]().html : null;
-
     if (!caption) {
-      return _utils.HTMLResult.success(html, bbox);
+      if (ui.attributes.class) {
+        ui.attributes.class.push("xfaLeft");
+      }
+
+      this.w = savedW;
+      this.h = savedH;
+      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
     }
 
-    if (ui.name === "button") {
-      ui.attributes.style.background = style.background;
-      delete style.background;
+    if (this.ui.button) {
+      if (style.padding) {
+        delete style.padding;
+      }
 
       if (caption.name === "div") {
         caption.name = "span";
@@ -59490,36 +61943,43 @@ class Field extends _xfa_object.XFAObject {
 
       ui.children.push(caption);
       return _utils.HTMLResult.success(html, bbox);
+    } else if (this.ui.checkButton) {
+      caption.attributes.class[0] = "xfaCaptionForCheckButton";
     }
 
-    ui.children.splice(0, 0, caption);
+    if (!ui.attributes.class) {
+      ui.attributes.class = [];
+    }
 
     switch (this.caption.placement) {
       case "left":
-        ui.attributes.style.flexDirection = "row";
+        ui.children.splice(0, 0, caption);
+        ui.attributes.class.push("xfaLeft");
         break;
 
       case "right":
-        ui.attributes.style.flexDirection = "row-reverse";
+        ui.children.push(caption);
+        ui.attributes.class.push("xfaLeft");
         break;
 
       case "top":
-        ui.attributes.style.alignItems = "start";
-        ui.attributes.style.flexDirection = "column";
+        ui.children.splice(0, 0, caption);
+        ui.attributes.class.push("xfaTop");
         break;
 
       case "bottom":
-        ui.attributes.style.alignItems = "start";
-        ui.attributes.style.flexDirection = "column-reverse";
+        ui.children.push(caption);
+        ui.attributes.class.push("xfaTop");
         break;
 
       case "inline":
-        delete ui.attributes.class;
-        caption.attributes.style.float = "left";
+        ui.attributes.class.push("xfaLeft");
         break;
     }
 
-    return _utils.HTMLResult.success(html, bbox);
+    this.w = savedW;
+    this.h = savedH;
+    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
   }
 
 }
@@ -59545,13 +62005,17 @@ class Fill extends _xfa_object.XFAObject {
   [_xfa_object.$toStyle]() {
     const parent = this[_xfa_object.$getParent]();
 
+    const style = Object.create(null);
     let propName = "color";
 
     if (parent instanceof Border) {
       propName = "background";
     }
 
-    const style = Object.create(null);
+    if (parent instanceof Rectangle || parent instanceof Arc) {
+      propName = "fill";
+      style.fill = "white";
+    }
 
     for (const name of Object.getOwnPropertyNames(this)) {
       if (name === "extras" || name === "color") {
@@ -59619,7 +62083,7 @@ class Float extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content] !== null ? 
this[_xfa_object.$content].toString() : "");
+    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -59655,7 +62119,7 @@ class Font extends _xfa_object.XFAObject {
     this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, ["all", "word"]);
     this.posture = (0, _utils.getStringOption)(attributes.posture, ["normal", "italic"]);
     this.size = (0, _utils.getMeasurement)(attributes.size, "10pt");
-    this.typeface = attributes.typeface || "";
+    this.typeface = attributes.typeface || "Courier";
     this.underline = (0, _utils.getInteger)({
       data: attributes.underline,
       defaultValue: 0,
@@ -59669,6 +62133,12 @@ class Font extends _xfa_object.XFAObject {
     this.fill = null;
   }
 
+  [_xfa_object.$clean](builder) {
+    super[_xfa_object.$clean](builder);
+
+    this[_xfa_object.$globalData].usedTypefaces.add(this.typeface);
+  }
+
   [_xfa_object.$toStyle]() {
     const style = (0, _html_utils.toStyle)(this, "fill");
     const color = style.color;
@@ -59687,13 +62157,8 @@ class Font extends _xfa_object.XFAObject {
       style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift);
     }
 
-    if (this.kerningMode !== "none") {
-      style.fontKerning = "normal";
-    }
-
-    if (this.letterSpacing) {
-      style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing);
-    }
+    style.fontKerning = this.kerningMode === "none" ? "none" : "normal";
+    style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing);
 
     if (this.lineThrough !== 0) {
       style.textDecoration = "line-through";
@@ -59711,17 +62176,9 @@ class Font extends _xfa_object.XFAObject {
       }
     }
 
-    if (this.posture !== "normal") {
-      style.fontStyle = this.posture;
-    }
-
-    const fontSize = (0, _html_utils.measureToString)(0.99 * this.size);
-
-    if (fontSize !== "10px") {
-      style.fontSize = fontSize;
-    }
-
-    style.fontFamily = (0, _html_utils.getFonts)(this.typeface);
+    style.fontStyle = this.posture;
+    style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size);
+    (0, _html_utils.setFontFamily)(this, this[_xfa_object.$globalData].fontFinder, style);
 
     if (this.underline !== 0) {
       style.textDecoration = "underline";
@@ -59731,10 +62188,7 @@ class Font extends _xfa_object.XFAObject {
       }
     }
 
-    if (this.weight !== "normal") {
-      style.fontWeight = this.weight;
-    }
-
+    style.fontWeight = this.weight;
     return style;
   }
 
@@ -59817,26 +62271,61 @@ class Image extends _xfa_object.StringObject {
   }
 
   [_xfa_object.$toHTML]() {
-    if (this.href || !this[_xfa_object.$content]) {
+    let buffer = this[_xfa_object.$globalData].images && this[_xfa_object.$globalData].images.get(this.href);
+
+    if (!buffer && (this.href || !this[_xfa_object.$content])) {
       return _utils.HTMLResult.EMPTY;
     }
 
-    if (this.transferEncoding === "base64") {
-      const buffer = (0, _util.stringToBytes)(atob(this[_xfa_object.$content]));
-      const blob = new Blob([buffer], {
-        type: this.contentType
-      });
-      return _utils.HTMLResult.success({
-        name: "img",
-        attributes: {
-          class: "xfaImage",
-          style: {},
-          src: URL.createObjectURL(blob)
-        }
-      });
+    if (!buffer && this.transferEncoding === "base64") {
+      buffer = (0, _util.stringToBytes)(atob(this[_xfa_object.$content]));
     }
 
-    return _utils.HTMLResult.EMPTY;
+    if (!buffer) {
+      return _utils.HTMLResult.EMPTY;
+    }
+
+    const blob = new Blob([buffer], {
+      type: this.contentType
+    });
+    let style;
+
+    switch (this.aspect) {
+      case "fit":
+      case "actual":
+        break;
+
+      case "height":
+        style = {
+          height: "100%",
+          objectFit: "fill"
+        };
+        break;
+
+      case "none":
+        style = {
+          width: "100%",
+          height: "100%",
+          objectFit: "fill"
+        };
+        break;
+
+      case "width":
+        style = {
+          width: "100%",
+          objectFit: "fill"
+        };
+        break;
+    }
+
+    return _utils.HTMLResult.success({
+      name: "img",
+      attributes: {
+        class: ["xfaImage"],
+        style,
+        src: URL.createObjectURL(blob)
+      }
+    });
   }
 
 }
@@ -59882,7 +62371,7 @@ class Integer extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content] !== null ? 
this[_xfa_object.$content].toString() : "");
+    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -59925,10 +62414,6 @@ class Items extends _xfa_object.XFAObject {
     this.time = new _xfa_object.XFAObjectArray();
   }
 
-  [_xfa_object.$hasItem](value) {
-    return this.hasOwnProperty(value[_xfa_object.$nodeName]) && 
this[value[_xfa_object.$nodeName]].children.some(node => node[_xfa_object.$content] === 
value[_xfa_object.$content]);
-  }
-
   [_xfa_object.$toHTML]() {
     const output = [];
 
@@ -59990,6 +62475,77 @@ class Line extends _xfa_object.XFAObject {
     this.edge = null;
   }
 
+  [_xfa_object.$toHTML]() {
+    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
+    const edge = this.edge ? this.edge : new Edge({});
+
+    const edgeStyle = edge[_xfa_object.$toStyle]();
+
+    const style = Object.create(null);
+    const thickness = edge.presence === "visible" ? edge.thickness : 0;
+    style.strokeWidth = (0, _html_utils.measureToString)(thickness);
+    style.stroke = edgeStyle.color;
+    let x1, y1, x2, y2;
+    let width = "100%";
+    let height = "100%";
+
+    if (parent.w <= thickness) {
+      [x1, y1, x2, y2] = ["50%", 0, "50%", "100%"];
+      width = style.strokeWidth;
+    } else if (parent.h <= thickness) {
+      [x1, y1, x2, y2] = [0, "50%", "100%", "50%"];
+      height = style.strokeWidth;
+    } else {
+      if (this.slope === "\\") {
+        [x1, y1, x2, y2] = [0, 0, "100%", "100%"];
+      } else {
+        [x1, y1, x2, y2] = [0, "100%", "100%", 0];
+      }
+    }
+
+    const line = {
+      name: "line",
+      attributes: {
+        xmlns: SVG_NS,
+        x1,
+        y1,
+        x2,
+        y2,
+        style
+      }
+    };
+    const svg = {
+      name: "svg",
+      children: [line],
+      attributes: {
+        xmlns: SVG_NS,
+        width,
+        height,
+        style: {
+          overflow: "visible"
+        }
+      }
+    };
+
+    if (hasMargin(parent)) {
+      return _utils.HTMLResult.success({
+        name: "div",
+        attributes: {
+          style: {
+            display: "inline",
+            width: "100%",
+            height: "100%"
+          }
+        },
+        children: [svg]
+      });
+    }
+
+    svg.attributes.style.position = "absolute";
+    return _utils.HTMLResult.success(svg);
+  }
+
 }
 
 class Linear extends _xfa_object.XFAObject {
@@ -60121,19 +62677,23 @@ class NumericEdit extends _xfa_object.XFAObject {
 
   [_xfa_object.$toHTML](availableSpace) {
     const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
+
+    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
     const html = {
       name: "input",
       attributes: {
         type: "text",
-        fieldId: this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid],
-        class: "xfaTextfield",
+        fieldId: field[_xfa_object.$uid],
+        dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
+        class: ["xfaTextfield"],
         style
       }
     };
     return _utils.HTMLResult.success({
       name: "label",
       attributes: {
-        class: "xfaLabel"
+        class: ["xfaLabel"]
       },
       children: [html]
     });
@@ -60201,6 +62761,30 @@ class Overflow extends _xfa_object.XFAObject {
     this.usehref = attributes.usehref || "";
   }
 
+  [_xfa_object.$getExtra]() {
+    if (!this[_xfa_object.$extra]) {
+      const parent = this[_xfa_object.$getParent]();
+
+      const root = this[_xfa_object.$getTemplateRoot]();
+
+      const target = root[_xfa_object.$searchNode](this.target, parent);
+
+      const leader = root[_xfa_object.$searchNode](this.leader, parent);
+
+      const trailer = root[_xfa_object.$searchNode](this.trailer, parent);
+
+      this[_xfa_object.$extra] = {
+        target: target && target[0] || null,
+        leader: leader && leader[0] || null,
+        trailer: trailer && trailer[0] || null,
+        addLeader: false,
+        addTrailer: false
+      };
+    }
+
+    return this[_xfa_object.$extra];
+  }
+
 }
 
 class PageArea extends _xfa_object.XFAObject {
@@ -60236,30 +62820,44 @@ class PageArea extends _xfa_object.XFAObject {
     this.subform = new _xfa_object.XFAObjectArray();
   }
 
+  [_xfa_object.$isUsable]() {
+    if (!this[_xfa_object.$extra]) {
+      this[_xfa_object.$extra] = {
+        numberOfUse: 0
+      };
+      return true;
+    }
+
+    return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max;
+  }
+
+  [_xfa_object.$cleanPage]() {
+    delete this[_xfa_object.$extra];
+  }
+
   [_xfa_object.$getNextPage]() {
     if (!this[_xfa_object.$extra]) {
       this[_xfa_object.$extra] = {
-        numberOfUse: 1
+        numberOfUse: 0
       };
     }
 
     const parent = this[_xfa_object.$getParent]();
 
     if (parent.relation === "orderedOccurrence") {
-      if (this.occur && (this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max)) {
+      if (this[_xfa_object.$isUsable]()) {
         this[_xfa_object.$extra].numberOfUse += 1;
         return this;
       }
     }
 
-    delete this[_xfa_object.$extra];
     return parent[_xfa_object.$getNextPage]();
   }
 
   [_xfa_object.$getAvailableSpace]() {
-    return {
-      width: Infinity,
-      height: Infinity
+    return this[_xfa_object.$extra].space || {
+      width: 0,
+      height: 0
     };
   }
 
@@ -60277,18 +62875,31 @@ class PageArea extends _xfa_object.XFAObject {
     if (this.medium && this.medium.short && this.medium.long) {
       style.width = (0, _html_utils.measureToString)(this.medium.short);
       style.height = (0, _html_utils.measureToString)(this.medium.long);
+      this[_xfa_object.$extra].space = {
+        width: this.medium.short,
+        height: this.medium.long
+      };
 
       if (this.medium.orientation === "landscape") {
         const x = style.width;
         style.width = style.height;
         style.height = x;
+        this[_xfa_object.$extra].space = {
+          width: this.medium.long,
+          height: this.medium.short
+        };
       }
     } else {
       (0, _util.warn)("XFA - No medium specified in pageArea: please file a bug.");
     }
 
     this[_xfa_object.$childrenToHTML]({
-      filter: new Set(["area", "draw", "field", "subform", "contentArea"]),
+      filter: new Set(["area", "draw", "field", "subform"]),
+      include: true
+    });
+
+    this[_xfa_object.$childrenToHTML]({
+      filter: new Set(["contentArea"]),
       include: true
     });
 
@@ -60296,8 +62907,10 @@ class PageArea extends _xfa_object.XFAObject {
       name: "div",
       children,
       attributes: {
+        class: ["xfaPage"],
         id: this[_xfa_object.$uid],
-        style
+        style,
+        xfaName: this.name
       }
     });
   }
@@ -60320,48 +62933,60 @@ class PageSet extends _xfa_object.XFAObject {
     this.pageSet = new _xfa_object.XFAObjectArray();
   }
 
+  [_xfa_object.$cleanPage]() {
+    for (const page of this.pageArea.children) {
+      page[_xfa_object.$cleanPage]();
+    }
+
+    for (const page of this.pageSet.children) {
+      page[_xfa_object.$cleanPage]();
+    }
+  }
+
+  [_xfa_object.$isUsable]() {
+    return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max;
+  }
+
   [_xfa_object.$getNextPage]() {
     if (!this[_xfa_object.$extra]) {
       this[_xfa_object.$extra] = {
         numberOfUse: 1,
-        currentIndex: -1
+        pageIndex: -1,
+        pageSetIndex: -1
       };
     }
 
     if (this.relation === "orderedOccurrence") {
-      if (this[_xfa_object.$extra].currentIndex + 1 < this.pageArea.children.length) {
-        this[_xfa_object.$extra].currentIndex += 1;
-        return this.pageArea.children[this[_xfa_object.$extra].currentIndex];
+      if (this[_xfa_object.$extra].pageIndex + 1 < this.pageArea.children.length) {
+        this[_xfa_object.$extra].pageIndex += 1;
+        const pageArea = this.pageArea.children[this[_xfa_object.$extra].pageIndex];
+        return pageArea[_xfa_object.$getNextPage]();
       }
 
-      if (this[_xfa_object.$extra].currentIndex + 1 < this.pageSet.children.length) {
-        this[_xfa_object.$extra].currentIndex += 1;
-        return this.pageSet.children[this[_xfa_object.$extra].currentIndex];
+      if (this[_xfa_object.$extra].pageSetIndex + 1 < this.pageSet.children.length) {
+        this[_xfa_object.$extra].pageSetIndex += 1;
+        return this.pageSet.children[this[_xfa_object.$extra].pageSetIndex][_xfa_object.$getNextPage]();
       }
 
-      if (this.occur && (this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max)) {
+      if (this[_xfa_object.$isUsable]()) {
         this[_xfa_object.$extra].numberOfUse += 1;
-        this[_xfa_object.$extra].currentIndex = 0;
-
-        if (this.pageArea.children.length > 0) {
-          return this.pageArea.children[0];
-        }
-
-        return this.pageSet.children[0][_xfa_object.$getNextPage]();
+        this[_xfa_object.$extra].pageIndex = -1;
+        this[_xfa_object.$extra].pageSetIndex = -1;
+        return this[_xfa_object.$getNextPage]();
       }
 
-      delete this[_xfa_object.$extra];
-
       const parent = this[_xfa_object.$getParent]();
 
       if (parent instanceof PageSet) {
         return parent[_xfa_object.$getNextPage]();
       }
 
+      this[_xfa_object.$cleanPage]();
+
       return this[_xfa_object.$getNextPage]();
     }
 
-    const pageNumber = getRoot(this)[_xfa_object.$extra].pageNumber;
+    const pageNumber = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].pageNumber;
 
     const parity = pageNumber % 2 === 0 ? "even" : "odd";
     const position = pageNumber === 0 ? "first" : "rest";
@@ -60423,19 +63048,19 @@ class Para extends _xfa_object.XFAObject {
     const style = (0, _html_utils.toStyle)(this, "hAlign");
 
     if (this.marginLeft !== "") {
-      style.marginLeft = (0, _html_utils.measureToString)(this.marginLeft);
+      style.paddingLeft = (0, _html_utils.measureToString)(this.marginLeft);
     }
 
     if (this.marginRight !== "") {
-      style.marginRight = (0, _html_utils.measureToString)(this.marginRight);
+      style.paddingight = (0, _html_utils.measureToString)(this.marginRight);
     }
 
     if (this.spaceAbove !== "") {
-      style.marginTop = (0, _html_utils.measureToString)(this.spaceAbove);
+      style.paddingTop = (0, _html_utils.measureToString)(this.spaceAbove);
     }
 
     if (this.spaceBelow !== "") {
-      style.marginBottom = (0, _html_utils.measureToString)(this.spaceBelow);
+      style.paddingBottom = (0, _html_utils.measureToString)(this.spaceBelow);
     }
 
     if (this.textIndent !== "") {
@@ -60662,7 +63287,7 @@ class Radial extends _xfa_object.XFAObject {
     startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF";
     const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000";
     const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`;
-    return `radial-gradient(circle to center, ${colors})`;
+    return `radial-gradient(circle at center, ${colors})`;
   }
 
 }
@@ -60702,6 +63327,71 @@ class Rectangle extends _xfa_object.XFAObject {
     this.fill = null;
   }
 
+  [_xfa_object.$toHTML]() {
+    const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});
+
+    const edgeStyle = edge[_xfa_object.$toStyle]();
+
+    const style = Object.create(null);
+
+    if (this.fill && this.fill.presence === "visible") {
+      Object.assign(style, this.fill[_xfa_object.$toStyle]());
+    } else {
+      style.fill = "transparent";
+    }
+
+    style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === "visible" ? edge.thickness : 0);
+    style.stroke = edgeStyle.color;
+    const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});
+
+    const cornerStyle = corner[_xfa_object.$toStyle]();
+
+    const rect = {
+      name: "rect",
+      attributes: {
+        xmlns: SVG_NS,
+        width: "100%",
+        height: "100%",
+        x: 0,
+        y: 0,
+        rx: cornerStyle.radius,
+        ry: cornerStyle.radius,
+        style
+      }
+    };
+    const svg = {
+      name: "svg",
+      children: [rect],
+      attributes: {
+        xmlns: SVG_NS,
+        style: {
+          overflow: "visible"
+        },
+        width: "100%",
+        height: "100%"
+      }
+    };
+
+    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
+    if (hasMargin(parent)) {
+      return _utils.HTMLResult.success({
+        name: "div",
+        attributes: {
+          style: {
+            display: "inline",
+            width: "100%",
+            height: "100%"
+          }
+        },
+        children: [svg]
+      });
+    }
+
+    svg.attributes.style.position = "absolute";
+    return _utils.HTMLResult.success(svg);
+  }
+
 }
 
 class RefElement extends _xfa_object.StringObject {
@@ -60905,6 +63595,28 @@ class Subform extends _xfa_object.XFAObject {
     this.subformSet = new _xfa_object.XFAObjectArray();
   }
 
+  [_xfa_object.$getSubformParent]() {
+    const parent = this[_xfa_object.$getParent]();
+
+    if (parent instanceof SubformSet) {
+      return parent[_xfa_object.$getSubformParent]();
+    }
+
+    return parent;
+  }
+
+  [_xfa_object.$isBindable]() {
+    return true;
+  }
+
+  [_xfa_object.$isThereMoreWidth]() {
+    return this.layout.endsWith("-tb") && this[_xfa_object.$extra].attempt === 0 && 
this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth]();
+  }
+
+  *[_xfa_object.$getContainedChildren]() {
+    yield* getContainedChildren(this);
+  }
+
   [_xfa_object.$flushHTML]() {
     return (0, _layout.flushHTML)(this);
   }
@@ -60917,15 +63629,85 @@ class Subform extends _xfa_object.XFAObject {
     return (0, _layout.getAvailableSpace)(this);
   }
 
-  [_xfa_object.$toHTML](availableSpace) {
-    if (this.name === "helpText") {
-      return _utils.HTMLResult.EMPTY;
+  [_xfa_object.$isSplittable]() {
+    const parent = this[_xfa_object.$getSubformParent]();
+
+    if (!parent[_xfa_object.$isSplittable]()) {
+      return false;
     }
 
-    if (this[_xfa_object.$extra] && this[_xfa_object.$extra].afterBreakAfter) {
-      const ret = this[_xfa_object.$extra].afterBreakAfter;
-      delete this[_xfa_object.$extra];
-      return ret;
+    const contentArea = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea;
+
+    if (this.overflow && this.overflow[_xfa_object.$getExtra]().target === contentArea) {
+      return false;
+    }
+
+    if (this[_xfa_object.$extra]._isSplittable !== undefined) {
+      return this[_xfa_object.$extra]._isSplittable;
+    }
+
+    if (this.layout === "position" || this.layout.includes("row")) {
+      this[_xfa_object.$extra]._isSplittable = false;
+      return false;
+    }
+
+    if (this.keep && this.keep.intact !== "none") {
+      this[_xfa_object.$extra]._isSplittable = false;
+      return false;
+    }
+
+    if (parent.layout && parent.layout.endsWith("-tb") && parent[_xfa_object.$extra].numberInLine !== 0) {
+      return false;
+    }
+
+    this[_xfa_object.$extra]._isSplittable = true;
+    return true;
+  }
+
+  [_xfa_object.$toHTML](availableSpace) {
+    if (this.break) {
+      if (this.break.after !== "auto" || this.break.afterTarget !== "") {
+        const node = new BreakAfter({
+          targetType: this.break.after,
+          target: this.break.afterTarget,
+          startNew: this.break.startNew.toString()
+        });
+        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];
+
+        this[_xfa_object.$appendChild](node);
+
+        this.breakAfter.push(node);
+      }
+
+      if (this.break.before !== "auto" || this.break.beforeTarget !== "") {
+        const node = new BreakBefore({
+          targetType: this.break.before,
+          target: this.break.beforeTarget,
+          startNew: this.break.startNew.toString()
+        });
+        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];
+
+        this[_xfa_object.$appendChild](node);
+
+        this.breakBefore.push(node);
+      }
+
+      if (this.break.overflowTarget !== "") {
+        const node = new Overflow({
+          target: this.break.overflowTarget,
+          leader: this.break.overflowLeader,
+          trailer: this.break.overflowTrailer
+        });
+        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];
+
+        this[_xfa_object.$appendChild](node);
+
+        this.overflow.push(node);
+      }
+
+      this[_xfa_object.$removeChild](this.break);
+
+      this.break = null;
     }
 
     if (this.presence === "hidden" || this.presence === "inactive") {
@@ -60936,11 +63718,25 @@ class Subform extends _xfa_object.XFAObject {
       (0, _util.warn)("XFA - Several breakBefore or breakAfter in subforms: please file a bug.");
     }
 
+    if (this.breakBefore.children.length >= 1) {
+      const breakBefore = this.breakBefore.children[0];
+
+      if (handleBreak(breakBefore)) {
+        return _utils.HTMLResult.breakNode(breakBefore);
+      }
+    }
+
+    if (this[_xfa_object.$extra] && this[_xfa_object.$extra].afterBreakAfter) {
+      return _utils.HTMLResult.EMPTY;
+    }
+
     (0, _html_utils.fixDimensions)(this);
     const children = [];
     const attributes = {
-      id: this[_xfa_object.$uid]
+      id: this[_xfa_object.$uid],
+      class: []
     };
+    (0, _html_utils.setAccess)(this, attributes.class);
 
     if (!this[_xfa_object.$extra]) {
       this[_xfa_object.$extra] = Object.create(null);
@@ -60948,42 +63744,43 @@ class Subform extends _xfa_object.XFAObject {
 
     Object.assign(this[_xfa_object.$extra], {
       children,
+      line: null,
       attributes,
       attempt: 0,
-      availableSpace,
+      numberInLine: 0,
+      availableSpace: {
+        width: Math.min(this.w || Infinity, availableSpace.width),
+        height: Math.min(this.h || Infinity, availableSpace.height)
+      },
       width: 0,
       height: 0,
       prevHeight: 0,
       currentWidth: 0
     });
 
-    if (this.breakBefore.children.length >= 1) {
-      const breakBefore = this.breakBefore.children[0];
-
-      if (!breakBefore[_xfa_object.$extra]) {
-        breakBefore[_xfa_object.$extra] = true;
+    const root = this[_xfa_object.$getTemplateRoot]();
 
-        getRoot(this)[_xfa_object.$break](breakBefore);
+    const currentContentArea = root[_xfa_object.$extra].currentContentArea;
+    const savedNoLayoutFailure = root[_xfa_object.$extra].noLayoutFailure;
 
-        return _utils.HTMLResult.FAILURE;
-      }
+    if (this.overflow) {
+      root[_xfa_object.$extra].noLayoutFailure = root[_xfa_object.$extra].noLayoutFailure || 
this.overflow[_xfa_object.$getExtra]().target === currentContentArea;
     }
 
-    switch (checkDimensions(this, availableSpace)) {
-      case NOTHING:
-        return _utils.HTMLResult.EMPTY;
+    const isSplittable = this[_xfa_object.$isSplittable]();
 
-      case NOSPACE:
-        return _utils.HTMLResult.FAILURE;
+    if (!isSplittable) {
+      setFirstUnsplittable(this);
+    }
 
-      default:
-        break;
+    if (!(0, _layout.checkDimensions)(this, availableSpace)) {
+      return _utils.HTMLResult.FAILURE;
     }
 
     const filter = new Set(["area", "draw", "exclGroup", "field", "subform", "subformSet"]);
 
     if (this.layout.includes("row")) {
-      const columnWidths = this[_xfa_object.$getParent]().columnWidths;
+      const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths;
 
       if (Array.isArray(columnWidths) && columnWidths.length > 0) {
         this[_xfa_object.$extra].columnWidths = columnWidths;
@@ -60991,7 +63788,7 @@ class Subform extends _xfa_object.XFAObject {
       }
     }
 
-    const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", 
"borderMarginPadding", "hAlign");
+    const style = (0, _html_utils.toStyle)(this, "anchorType", "dimensions", "position", "presence", 
"border", "margin", "hAlign");
     const classNames = ["xfaSubform"];
     const cl = (0, _html_utils.layoutClass)(this);
 
@@ -61000,36 +63797,75 @@ class Subform extends _xfa_object.XFAObject {
     }
 
     attributes.style = style;
-    attributes.class = classNames.join(" ");
+    attributes.class = classNames;
 
     if (this.name) {
       attributes.xfaName = this.name;
     }
 
-    let failure;
+    if (this.overflow) {
+      const overflowExtra = this.overflow[_xfa_object.$getExtra]();
 
-    if (this.layout === "lr-tb" || this.layout === "rl-tb") {
-      for (; this[_xfa_object.$extra].attempt < MAX_ATTEMPTS_FOR_LRTB_LAYOUT; 
this[_xfa_object.$extra].attempt++) {
-        if (this[_xfa_object.$childrenToHTML]({
-          filter,
-          include: true
-        })) {
-          break;
-        }
+      if (overflowExtra.addLeader) {
+        overflowExtra.addLeader = false;
+        handleOverflow(this, overflowExtra.leader, availableSpace);
       }
+    }
 
-      failure = this[_xfa_object.$extra].attempt === 2;
-    } else {
-      failure = !this[_xfa_object.$childrenToHTML]({
+    const isLrTb = this.layout === "lr-tb" || this.layout === "rl-tb";
+    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;
+
+    for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) {
+      if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {
+        this[_xfa_object.$extra].numberInLine = 0;
+      }
+
+      const result = this[_xfa_object.$childrenToHTML]({
         filter,
         include: true
       });
+
+      if (result.success) {
+        break;
+      }
+
+      if (result.isBreak()) {
+        return result;
+      }
+
+      if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && 
!root[_xfa_object.$extra].noLayoutFailure) {
+        this[_xfa_object.$extra].attempt = maxRun;
+        break;
+      }
     }
 
-    if (failure) {
+    if (!isSplittable) {
+      unsetFirstUnsplittable(this);
+    }
+
+    root[_xfa_object.$extra].noLayoutFailure = savedNoLayoutFailure;
+
+    if (this[_xfa_object.$extra].attempt === maxRun) {
+      if (this.overflow) {
+        this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].overflowNode = this.overflow;
+      }
+
+      if (!isSplittable) {
+        delete this[_xfa_object.$extra];
+      }
+
       return _utils.HTMLResult.FAILURE;
     }
 
+    if (this.overflow) {
+      const overflowExtra = this.overflow[_xfa_object.$getExtra]();
+
+      if (overflowExtra.addTrailer) {
+        overflowExtra.addTrailer = false;
+        handleOverflow(this, overflowExtra.trailer, availableSpace);
+      }
+    }
+
     let marginH = 0;
     let marginV = 0;
 
@@ -61038,41 +63874,42 @@ class Subform extends _xfa_object.XFAObject {
       marginV = this.margin.topInset + this.margin.bottomInset;
     }
 
+    const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0);
+    const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0);
+    const bbox = [this.x, this.y, width, height];
+
     if (this.w === "") {
-      style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width + marginH);
+      style.width = (0, _html_utils.measureToString)(width);
     }
 
     if (this.h === "") {
-      style.height = (0, _html_utils.measureToString)(this[_xfa_object.$extra].height + marginV);
+      style.height = (0, _html_utils.measureToString)(height);
     }
 
-    let html = {
+    const html = {
       name: "div",
       attributes,
       children
     };
-    html = (0, _html_utils.addExtraDivForBorder)(html);
-    let bbox;
+    const assist = this.assist ? this.assist[_xfa_object.$toHTML]() : null;
 
-    if (this.w !== "" && this.h !== "") {
-      bbox = [this.x, this.y, this.w, this.h];
-    } else {
-      const width = this.w === "" ? marginH + this[_xfa_object.$extra].width : this.w;
-      const height = this.h === "" ? marginV + this[_xfa_object.$extra].height : this.h;
-      bbox = [this.x, this.y, width, height];
+    if (assist) {
+      html.attributes.title = assist;
     }
 
+    const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);
+
     if (this.breakAfter.children.length >= 1) {
       const breakAfter = this.breakAfter.children[0];
 
-      getRoot(this)[_xfa_object.$break](breakAfter);
-
-      this[_xfa_object.$extra].afterBreakAfter = _utils.HTMLResult.success(html, bbox);
-      return _utils.HTMLResult.FAILURE;
+      if (handleBreak(breakAfter)) {
+        this[_xfa_object.$extra].afterBreakAfter = result;
+        return _utils.HTMLResult.breakNode(breakAfter);
+      }
     }
 
     delete this[_xfa_object.$extra];
-    return _utils.HTMLResult.success(html, bbox);
+    return result;
   }
 
 }
@@ -61098,27 +63935,18 @@ class SubformSet extends _xfa_object.XFAObject {
     this.subformSet = new _xfa_object.XFAObjectArray();
   }
 
-  [_xfa_object.$toHTML]() {
-    const children = [];
-
-    if (!this[_xfa_object.$extra]) {
-      this[_xfa_object.$extra] = Object.create(null);
-    }
+  *[_xfa_object.$getContainedChildren]() {
+    yield* getContainedChildren(this);
+  }
 
-    this[_xfa_object.$extra].children = children;
+  [_xfa_object.$getSubformParent]() {
+    let parent = this[_xfa_object.$getParent]();
 
-    this[_xfa_object.$childrenToHTML]({
-      filter: new Set(["subform", "subformSet"]),
-      include: true
-    });
+    while (!(parent instanceof Subform)) {
+      parent = parent[_xfa_object.$getParent]();
+    }
 
-    return _utils.HTMLResult.success({
-      name: "div",
-      children,
-      attributes: {
-        id: this[_xfa_object.$uid]
-      }
-    });
+    return parent;
   }
 
 }
@@ -61197,10 +64025,12 @@ class Template extends _xfa_object.XFAObject {
     if (this.subform.children.length >= 2) {
       (0, _util.warn)("XFA - Several subforms in template node: please file a bug.");
     }
+
+    this[_xfa_object.$tabIndex] = 1000;
   }
 
-  [_xfa_object.$break](node) {
-    this[_xfa_object.$extra].breakingNode = node;
+  [_xfa_object.$isSplittable]() {
+    return true;
   }
 
   [_xfa_object.$searchNode](expr, container) {
@@ -61220,13 +64050,20 @@ class Template extends _xfa_object.XFAObject {
     }
 
     this[_xfa_object.$extra] = {
-      breakingNode: null,
+      overflowNode: null,
+      firstUnsplittable: null,
+      currentContentArea: null,
+      currentPageArea: null,
+      noLayoutFailure: false,
       pageNumber: 1,
       pagePosition: "first",
       oddOrEven: "odd",
       blankOrNotBlank: "nonBlank"
     };
     const root = this.subform.children[0];
+
+    root.pageSet[_xfa_object.$cleanPage]();
+
     const pageAreas = root.pageSet.pageArea.children;
     const mainHtml = {
       name: "div",
@@ -61263,42 +64100,77 @@ class Template extends _xfa_object.XFAObject {
       pageArea = pageAreas[0];
     }
 
+    pageArea[_xfa_object.$extra] = {
+      numberOfUse: 1
+    };
+
     const pageAreaParent = pageArea[_xfa_object.$getParent]();
 
     pageAreaParent[_xfa_object.$extra] = {
       numberOfUse: 1,
-      currentIndex: pageAreaParent.pageArea.children.indexOf(pageArea)
+      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),
+      pageSetIndex: 0
     };
     let targetPageArea;
     let leader = null;
     let trailer = null;
+    let hasSomething = true;
+    let hasSomethingCounter = 0;
+    let startIndex = 0;
 
     while (true) {
+      if (!hasSomething) {
+        mainHtml.children.pop();
+
+        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {
+          (0, _util.warn)("XFA - Something goes wrong: please file a bug.");
+          return mainHtml;
+        }
+      } else {
+        hasSomethingCounter = 0;
+      }
+
       targetPageArea = null;
+      this[_xfa_object.$extra].currentPageArea = pageArea;
 
       const page = pageArea[_xfa_object.$toHTML]().html;
 
       mainHtml.children.push(page);
 
       if (leader) {
-        page.children.push(leader[_xfa_object.$toHTML](page[_xfa_object.$extra].space).html);
+        this[_xfa_object.$extra].noLayoutFailure = true;
+        page.children.push(leader[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html);
         leader = null;
       }
 
       if (trailer) {
-        page.children.push(trailer[_xfa_object.$toHTML](page[_xfa_object.$extra].space).html);
+        this[_xfa_object.$extra].noLayoutFailure = true;
+        page.children.push(trailer[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html);
         trailer = null;
       }
 
       const contentAreas = pageArea.contentArea.children;
-      const htmlContentAreas = page.children.filter(node => node.attributes.class === "xfaContentarea");
+      const htmlContentAreas = page.children.filter(node => 
node.attributes.class.includes("xfaContentarea"));
+      hasSomething = false;
+      this[_xfa_object.$extra].firstUnsplittable = null;
+      this[_xfa_object.$extra].noLayoutFailure = false;
+
+      const flush = index => {
+        const html = root[_xfa_object.$flushHTML]();
+
+        if (html) {
+          hasSomething = hasSomething || html.children && html.children.length !== 0;
+          htmlContentAreas[index].children.push(html);
+        }
+      };
 
-      for (let i = 0, ii = contentAreas.length; i < ii; i++) {
+      for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {
         const contentArea = this[_xfa_object.$extra].currentContentArea = contentAreas[i];
         const space = {
           width: contentArea.w,
           height: contentArea.h
         };
+        startIndex = 0;
 
         if (leader) {
           htmlContentAreas[i].children.push(leader[_xfa_object.$toHTML](space).html);
@@ -61310,29 +64182,27 @@ class Template extends _xfa_object.XFAObject {
           trailer = null;
         }
 
-        let html = root[_xfa_object.$toHTML](space);
+        const html = root[_xfa_object.$toHTML](space);
 
         if (html.success) {
           if (html.html) {
+            hasSomething = hasSomething || html.html.children && html.html.children.length !== 0;
             htmlContentAreas[i].children.push(html.html);
+          } else if (!hasSomething) {
+            mainHtml.children.pop();
           }
 
           return mainHtml;
         }
 
-        let mustBreak = false;
-
-        if (this[_xfa_object.$extra].breakingNode) {
-          const node = this[_xfa_object.$extra].breakingNode;
-          this[_xfa_object.$extra].breakingNode = null;
+        if (html.isBreak()) {
+          const node = html.breakNode;
+          flush(i);
 
           if (node.targetType === "auto") {
-            i--;
             continue;
           }
 
-          const startNew = node.startNew === 1;
-
           if (node.leader) {
             leader = this[_xfa_object.$searchNode](node.leader, node[_xfa_object.$getParent]());
             leader = leader ? leader[0] : null;
@@ -61343,41 +64213,61 @@ class Template extends _xfa_object.XFAObject {
             trailer = trailer ? trailer[0] : null;
           }
 
-          let target = null;
-
-          if (node.target) {
-            target = this[_xfa_object.$searchNode](node.target, node[_xfa_object.$getParent]());
-            target = target ? target[0] : target;
+          if (node.targetType === "pageArea") {
+            targetPageArea = node[_xfa_object.$extra].target;
+            i = Infinity;
+          } else if (!node[_xfa_object.$extra].target) {
+            i = node[_xfa_object.$extra].index;
+          } else {
+            targetPageArea = node[_xfa_object.$extra].target;
+            startIndex = node[_xfa_object.$extra].index + 1;
+            i = Infinity;
           }
 
-          if (node.targetType === "pageArea") {
-            if (startNew) {
-              mustBreak = true;
-            } else if (target === pageArea || !(target instanceof PageArea)) {
-              i--;
-              continue;
+          continue;
+        }
+
+        if (this[_xfa_object.$extra].overflowNode) {
+          const node = this[_xfa_object.$extra].overflowNode;
+          this[_xfa_object.$extra].overflowNode = null;
+
+          const overflowExtra = node[_xfa_object.$getExtra]();
+
+          const target = overflowExtra.target;
+          overflowExtra.addLeader = overflowExtra.leader !== null;
+          overflowExtra.addTrailer = overflowExtra.trailer !== null;
+          flush(i);
+          i = Infinity;
+
+          if (target instanceof PageArea) {
+            targetPageArea = target;
+          } else if (target instanceof ContentArea) {
+            const index = contentAreas.findIndex(e => e === target);
+
+            if (index !== -1) {
+              i = index - 1;
             } else {
-              targetPageArea = target;
-              mustBreak = true;
+              targetPageArea = target[_xfa_object.$getParent]();
+              startIndex = targetPageArea.contentArea.children.findIndex(e => e === target);
             }
-          } else if (target === "contentArea" || !(target instanceof ContentArea)) {
-            i--;
-            continue;
           }
+
+          continue;
         }
 
-        html = root[_xfa_object.$flushHTML]();
+        flush(i);
+      }
 
-        if (html) {
-          htmlContentAreas[i].children.push(html);
-        }
+      this[_xfa_object.$extra].pageNumber += 1;
 
-        if (mustBreak) {
-          break;
+      if (targetPageArea) {
+        if (targetPageArea[_xfa_object.$isUsable]()) {
+          targetPageArea[_xfa_object.$extra].numberOfUse += 1;
+        } else {
+          targetPageArea = null;
         }
       }
 
-      this[_xfa_object.$extra].pageNumber += 1;
       pageArea = targetPageArea || pageArea[_xfa_object.$getNextPage]();
     }
   }
@@ -61401,6 +64291,10 @@ class Text extends _xfa_object.ContentObject {
     this.usehref = attributes.usehref || "";
   }
 
+  [_xfa_object.$acceptWhitespace]() {
+    return true;
+  }
+
   [_xfa_object.$onChild](child) {
     if (child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) {
       this[_xfa_object.$content] = child;
@@ -61411,16 +64305,17 @@ class Text extends _xfa_object.ContentObject {
     return false;
   }
 
+  [_xfa_object.$onText](str) {
+    if (this[_xfa_object.$content] instanceof _xfa_object.XFAObject) {
+      return;
+    }
+
+    super[_xfa_object.$onText](str);
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     if (typeof this[_xfa_object.$content] === "string") {
-      const html = {
-        name: "span",
-        attributes: {
-          class: "xfaRich",
-          style: {}
-        },
-        value: this[_xfa_object.$content]
-      };
+      const html = valueToHtml(this[_xfa_object.$content]).html;
 
       if (this[_xfa_object.$content].includes("\u2029")) {
         html.name = "div";
@@ -61474,11 +64369,7 @@ class TextEdit extends _xfa_object.XFAObject {
     });
     this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
     this.id = attributes.id || "";
-    this.multiLine = (0, _utils.getInteger)({
-      data: attributes.multiLine,
-      defaultValue: 1,
-      validate: x => x === 0
-    });
+    this.multiLine = attributes.multiLine || "";
     this.use = attributes.use || "";
     this.usehref = attributes.usehref || "";
     this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]);
@@ -61488,16 +64379,32 @@ class TextEdit extends _xfa_object.XFAObject {
     this.margin = null;
   }
 
+  [_xfa_object.$clean](builder) {
+    super[_xfa_object.$clean](builder);
+
+    const parent = this[_xfa_object.$getParent]();
+
+    const defaultValue = parent instanceof Draw ? 1 : 0;
+    this.multiLine = (0, _utils.getInteger)({
+      data: this.multiLine,
+      defaultValue,
+      validate: x => x === 0 || x === 1
+    });
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
     let html;
 
+    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();
+
     if (this.multiLine === 1) {
       html = {
         name: "textarea",
         attributes: {
-          fieldId: this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid],
-          class: "xfaTextfield",
+          dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
+          fieldId: field[_xfa_object.$uid],
+          class: ["xfaTextfield"],
           style
         }
       };
@@ -61506,8 +64413,9 @@ class TextEdit extends _xfa_object.XFAObject {
         name: "input",
         attributes: {
           type: "text",
-          fieldId: this[_xfa_object.$getParent]()[_xfa_object.$getParent]()[_xfa_object.$uid],
-          class: "xfaTextfield",
+          dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || 
field[_xfa_object.$uid],
+          fieldId: field[_xfa_object.$uid],
+          class: ["xfaTextfield"],
           style
         }
       };
@@ -61516,7 +64424,7 @@ class TextEdit extends _xfa_object.XFAObject {
     return _utils.HTMLResult.success({
       name: "label",
       attributes: {
-        class: "xfaLabel"
+        class: ["xfaLabel"]
       },
       children: [html]
     });
@@ -61534,11 +64442,13 @@ class Time extends _xfa_object.StringObject {
   }
 
   [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content]);
+    const date = this[_xfa_object.$content].trim();
+
+    this[_xfa_object.$content] = date ? new Date(date) : null;
   }
 
   [_xfa_object.$toHTML](availableSpace) {
-    return _utils.HTMLResult.success(this[_xfa_object.$content].toString());
+    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : "");
   }
 
 }
@@ -62255,7 +65165,359 @@ class TemplateNamespace {
 exports.TemplateNamespace = TemplateNamespace;
 
 /***/ }),
-/* 73 */
+/* 81 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.addHTML = addHTML;
+exports.checkDimensions = checkDimensions;
+exports.flushHTML = flushHTML;
+exports.getAvailableSpace = getAvailableSpace;
+
+var _xfa_object = __w_pdfjs_require__(75);
+
+var _html_utils = __w_pdfjs_require__(82);
+
+function createLine(node, children) {
+  return {
+    name: "div",
+    attributes: {
+      class: [node.layout === "lr-tb" ? "xfaLr" : "xfaRl"]
+    },
+    children
+  };
+}
+
+function flushHTML(node) {
+  if (!node[_xfa_object.$extra]) {
+    return null;
+  }
+
+  const attributes = node[_xfa_object.$extra].attributes;
+  const html = {
+    name: "div",
+    attributes,
+    children: node[_xfa_object.$extra].children
+  };
+
+  if (node[_xfa_object.$extra].failingNode) {
+    const htmlFromFailing = node[_xfa_object.$extra].failingNode[_xfa_object.$flushHTML]();
+
+    if (htmlFromFailing) {
+      if (node.layout.endsWith("-tb")) {
+        html.children.push(createLine(node, [htmlFromFailing]));
+      } else {
+        html.children.push(htmlFromFailing);
+      }
+    }
+  }
+
+  if (html.children.length === 0) {
+    return null;
+  }
+
+  return html;
+}
+
+function addHTML(node, html, bbox) {
+  const extra = node[_xfa_object.$extra];
+  const availableSpace = extra.availableSpace;
+  const [x, y, w, h] = bbox;
+
+  switch (node.layout) {
+    case "position":
+      {
+        extra.width = Math.max(extra.width, x + w);
+        extra.height = Math.max(extra.height, y + h);
+        extra.children.push(html);
+        break;
+      }
+
+    case "lr-tb":
+    case "rl-tb":
+      if (!extra.line || extra.attempt === 1) {
+        extra.line = createLine(node, []);
+        extra.children.push(extra.line);
+        extra.numberInLine = 0;
+      }
+
+      extra.numberInLine += 1;
+      extra.line.children.push(html);
+
+      if (extra.attempt === 0) {
+        extra.currentWidth += w;
+        extra.height = Math.max(extra.height, extra.prevHeight + h);
+      } else {
+        extra.currentWidth = w;
+        extra.prevHeight = extra.height;
+        extra.height += h;
+        extra.attempt = 0;
+      }
+
+      extra.width = Math.max(extra.width, extra.currentWidth);
+      break;
+
+    case "rl-row":
+    case "row":
+      {
+        extra.children.push(html);
+        extra.width += w;
+        extra.height = Math.max(extra.height, h);
+        const height = (0, _html_utils.measureToString)(extra.height);
+
+        for (const child of extra.children) {
+          child.attributes.style.height = height;
+        }
+
+        break;
+      }
+
+    case "table":
+      {
+        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));
+        extra.height += h;
+        extra.children.push(html);
+        break;
+      }
+
+    case "tb":
+      {
+        extra.width = availableSpace.width;
+        extra.height += h;
+        extra.children.push(html);
+        break;
+      }
+  }
+}
+
+function getAvailableSpace(node) {
+  const availableSpace = node[_xfa_object.$extra].availableSpace;
+  const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;
+  const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;
+
+  switch (node.layout) {
+    case "lr-tb":
+    case "rl-tb":
+      if (node[_xfa_object.$extra].attempt === 0) {
+        return {
+          width: availableSpace.width - marginH - node[_xfa_object.$extra].currentWidth,
+          height: availableSpace.height - marginV - node[_xfa_object.$extra].prevHeight
+        };
+      }
+
+      return {
+        width: availableSpace.width - marginH,
+        height: availableSpace.height - marginV - node[_xfa_object.$extra].height
+      };
+
+    case "rl-row":
+    case "row":
+      const width = 
node[_xfa_object.$extra].columnWidths.slice(node[_xfa_object.$extra].currentColumn).reduce((a, x) => a + x);
+
+      return {
+        width,
+        height: availableSpace.height - marginH
+      };
+
+    case "table":
+    case "tb":
+      return {
+        width: availableSpace.width - marginH,
+        height: availableSpace.height - marginV - node[_xfa_object.$extra].height
+      };
+
+    case "position":
+    default:
+      return availableSpace;
+  }
+}
+
+function getTransformedBBox(node) {
+  let w = node.w === "" ? NaN : node.w;
+  let h = node.h === "" ? NaN : node.h;
+  let [centerX, centerY] = [0, 0];
+
+  switch (node.anchorType || "") {
+    case "bottomCenter":
+      [centerX, centerY] = [w / 2, h];
+      break;
+
+    case "bottomLeft":
+      [centerX, centerY] = [0, h];
+      break;
+
+    case "bottomRight":
+      [centerX, centerY] = [w, h];
+      break;
+
+    case "middleCenter":
+      [centerX, centerY] = [w / 2, h / 2];
+      break;
+
+    case "middleLeft":
+      [centerX, centerY] = [0, h / 2];
+      break;
+
+    case "middleRight":
+      [centerX, centerY] = [w, h / 2];
+      break;
+
+    case "topCenter":
+      [centerX, centerY] = [w / 2, 0];
+      break;
+
+    case "topRight":
+      [centerX, centerY] = [w, 0];
+      break;
+  }
+
+  let x, y;
+
+  switch (node.rotate || 0) {
+    case 0:
+      [x, y] = [-centerX, -centerY];
+      break;
+
+    case 90:
+      [x, y] = [-centerY, centerX];
+      [w, h] = [h, -w];
+      break;
+
+    case 180:
+      [x, y] = [centerX, centerY];
+      [w, h] = [-w, -h];
+      break;
+
+    case 270:
+      [x, y] = [centerY, -centerX];
+      [w, h] = [-h, w];
+      break;
+  }
+
+  return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];
+}
+
+function checkDimensions(node, space) {
+  if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].firstUnsplittable === null) {
+    return true;
+  }
+
+  if (node.w === 0 || node.h === 0) {
+    return true;
+  }
+
+  const ERROR = 2;
+
+  const parent = node[_xfa_object.$getSubformParent]();
+
+  const attempt = parent[_xfa_object.$extra] && parent[_xfa_object.$extra].attempt || 0;
+  const [, y, w, h] = getTransformedBBox(node);
+
+  switch (parent.layout) {
+    case "lr-tb":
+    case "rl-tb":
+      if (attempt === 0) {
+        if (!node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+          if (node.h !== "" && Math.round(h - space.height) > ERROR) {
+            return false;
+          }
+
+          if (node.w !== "") {
+            if (Math.round(w - space.width) <= ERROR) {
+              return true;
+            }
+
+            if (parent[_xfa_object.$extra].numberInLine === 0) {
+              return space.height > 0;
+            }
+
+            return false;
+          }
+
+          return space.width > 0;
+        }
+
+        if (node.w !== "") {
+          return Math.round(w - space.width) <= ERROR;
+        }
+
+        return space.width > 0;
+      }
+
+      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+        return true;
+      }
+
+      if (node.h !== "" && Math.round(h - space.height) > ERROR) {
+        return false;
+      }
+
+      if (node.w === "" || Math.round(w - space.width) <= ERROR) {
+        return space.height > 0;
+      }
+
+      if (parent[_xfa_object.$isThereMoreWidth]()) {
+        return false;
+      }
+
+      return space.height > 0;
+
+    case "table":
+    case "tb":
+      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+        return true;
+      }
+
+      if (node.h !== "" && !node[_xfa_object.$isSplittable]()) {
+        return Math.round(h - space.height) <= ERROR;
+      }
+
+      if (node.w === "" || Math.round(w - space.width) <= ERROR) {
+        return space.height > 0;
+      }
+
+      if (parent[_xfa_object.$isThereMoreWidth]()) {
+        return false;
+      }
+
+      return space.height > 0;
+
+    case "position":
+      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+        return true;
+      }
+
+      if (node.h === "" || Math.round(h + y - space.height) <= ERROR) {
+        return true;
+      }
+
+      const area = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea;
+
+      return h + y > area.h;
+
+    case "rl-row":
+    case "row":
+      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {
+        return true;
+      }
+
+      if (node.h !== "") {
+        return Math.round(h - space.height) <= ERROR;
+      }
+
+      return true;
+
+    default:
+      return true;
+  }
+}
+
+/***/ }),
+/* 82 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -62263,24 +65525,29 @@ exports.TemplateNamespace = TemplateNamespace;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.addExtraDivForBorder = addExtraDivForBorder;
 exports.computeBbox = computeBbox;
+exports.createWrapper = createWrapper;
 exports.fixDimensions = fixDimensions;
 exports.fixTextIndent = fixTextIndent;
-exports.getFonts = getFonts;
+exports.isPrintOnly = isPrintOnly;
 exports.layoutClass = layoutClass;
-exports.layoutText = layoutText;
+exports.layoutNode = layoutNode;
 exports.measureToString = measureToString;
+exports.setAccess = setAccess;
+exports.setFontFamily = setFontFamily;
+exports.setMinMaxDimensions = setMinMaxDimensions;
+exports.setPara = setPara;
 exports.toStyle = toStyle;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
-var _util = __w_pdfjs_require__(2);
+var _fonts = __w_pdfjs_require__(83);
 
-const wordNonWordRegex = new RegExp("([\\p{N}\\p{L}\\p{M}]+)|([^\\p{N}\\p{L}\\p{M}]+)", "gu");
-const wordFirstRegex = new RegExp("^[\\p{N}\\p{L}\\p{M}]", "u");
+var _text = __w_pdfjs_require__(84);
+
+var _util = __w_pdfjs_require__(2);
 
 function measureToString(m) {
   if (typeof m === "string") {
@@ -62292,7 +65559,7 @@ function measureToString(m) {
 
 const converters = {
   anchorType(node, style) {
-    const parent = node[_xfa_object.$getParent]();
+    const parent = node[_xfa_object.$getSubformParent]();
 
     if (!parent || parent.layout && parent.layout !== "position") {
       return;
@@ -62338,7 +65605,7 @@ const converters = {
   },
 
   dimensions(node, style) {
-    const parent = node[_xfa_object.$getParent]();
+    const parent = node[_xfa_object.$getSubformParent]();
 
     let width = node.w;
     const height = node.h;
@@ -62365,33 +65632,17 @@ const converters = {
       style.width = measureToString(width);
     } else {
       style.width = "auto";
-
-      if (node.maxW > 0) {
-        style.maxWidth = measureToString(node.maxW);
-      }
-
-      if (parent.layout === "position") {
-        style.minWidth = measureToString(node.minW);
-      }
     }
 
     if (height !== "") {
       style.height = measureToString(height);
     } else {
       style.height = "auto";
-
-      if (node.maxH > 0) {
-        style.maxHeight = measureToString(node.maxH);
-      }
-
-      if (parent.layout === "position") {
-        style.minHeight = measureToString(node.minH);
-      }
     }
   },
 
   position(node, style) {
-    const parent = node[_xfa_object.$getParent]();
+    const parent = node[_xfa_object.$getSubformParent]();
 
     if (parent && parent.layout && parent.layout !== "position") {
       return;
@@ -62442,129 +65693,138 @@ const converters = {
       }
     } else {
       switch (node.hAlign) {
-        case "right":
+        case "left":
+          style.alignSelf = "start";
+          break;
+
         case "center":
-          style.justifyContent = node.hAlign;
+          style.alignSelf = "center";
+          break;
+
+        case "right":
+          style.alignSelf = "end";
           break;
       }
     }
   },
 
-  borderMarginPadding(node, style) {
-    const borderWidths = [0, 0, 0, 0];
-    const borderInsets = [0, 0, 0, 0];
-    const marginNode = node.margin ? [node.margin.topInset, node.margin.rightInset, node.margin.bottomInset, 
node.margin.leftInset] : [0, 0, 0, 0];
-    let borderMargin;
-
-    if (node.border) {
-      Object.assign(style, node.border[_xfa_object.$toStyle](borderWidths, borderInsets));
-      borderMargin = style.margin;
-      delete style.margin;
+  margin(node, style) {
+    if (node.margin) {
+      style.margin = node.margin[_xfa_object.$toStyle]().margin;
     }
+  }
 
-    if (borderWidths.every(x => x === 0)) {
-      if (marginNode.every(x => x === 0)) {
-        return;
-      }
+};
 
-      Object.assign(style, node.margin[_xfa_object.$toStyle]());
-      style.padding = style.margin;
-      delete style.margin;
-      delete style.outline;
-      delete style.outlineOffset;
-      return;
+function setMinMaxDimensions(node, style) {
+  const parent = node[_xfa_object.$getSubformParent]();
+
+  if (parent.layout === "position") {
+    if (node.minW > 0) {
+      style.minWidth = measureToString(node.minW);
     }
 
-    if (node.margin) {
-      Object.assign(style, node.margin[_xfa_object.$toStyle]());
-      style.padding = style.margin;
-      delete style.margin;
+    if (node.maxW > 0) {
+      style.maxWidth = measureToString(node.maxW);
     }
 
-    if (!style.borderWidth) {
-      return;
+    if (node.minH > 0) {
+      style.minHeight = measureToString(node.minH);
     }
 
-    style.borderData = {
-      borderWidth: style.borderWidth,
-      borderColor: style.borderColor,
-      borderStyle: style.borderStyle,
-      margin: borderMargin
-    };
-    delete style.borderWidth;
-    delete style.borderColor;
-    delete style.borderStyle;
+    if (node.maxH > 0) {
+      style.maxHeight = measureToString(node.maxH);
+    }
   }
+}
 
-};
+function layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {
+  const measure = new _text.TextMeasure(xfaFont, margin, lineHeight, fontFinder);
 
-function layoutText(text, fontSize, space) {
-  let width = 0;
-  let height = 0;
-  let totalWidth = 0;
-  const lineHeight = fontSize * 1.5;
-  const averageCharSize = fontSize * 0.4;
-  const maxCharOnLine = Math.floor(space.width / averageCharSize);
-  const chunks = text.match(wordNonWordRegex);
-  let treatedChars = 0;
-  let i = 0;
-  let chunk = chunks[0];
+  if (typeof text === "string") {
+    measure.addString(text);
+  } else {
+    text[_xfa_object.$pushGlyphs](measure);
+  }
 
-  while (chunk) {
-    const w = chunk.length * averageCharSize;
+  return measure.compute(width);
+}
 
-    if (width + w <= space.width) {
-      width += w;
-      treatedChars += chunk.length;
-      chunk = chunks[i++];
-      continue;
-    }
+function layoutNode(node, availableSpace) {
+  let height = null;
+  let width = null;
+  let isBroken = false;
 
-    if (!wordFirstRegex.test(chunk) || chunk.length > maxCharOnLine) {
-      const numOfCharOnLine = Math.floor((space.width - width) / averageCharSize);
-      chunk = chunk.slice(numOfCharOnLine);
-      treatedChars += numOfCharOnLine;
+  if ((!node.w || !node.h) && node.value) {
+    let marginH = 0;
+    let marginV = 0;
 
-      if (height + lineHeight > space.height) {
-        return {
-          width: 0,
-          height: 0,
-          splitPos: treatedChars
-        };
-      }
+    if (node.margin) {
+      marginH = node.margin.leftInset + node.margin.rightInset;
+      marginV = node.margin.topInset + node.margin.bottomInset;
+    }
 
-      totalWidth = Math.max(width, totalWidth);
-      width = 0;
-      height += lineHeight;
-      continue;
+    let lineHeight = null;
+    let margin = null;
+
+    if (node.para) {
+      margin = Object.create(null);
+      lineHeight = node.para.lineHeight === "" ? null : node.para.lineHeight;
+      margin.top = node.para.spaceAbove === "" ? 0 : node.para.spaceAbove;
+      margin.bottom = node.para.spaceBelow === "" ? 0 : node.para.spaceBelow;
+      margin.left = node.para.marginLeft === "" ? 0 : node.para.marginLeft;
+      margin.right = node.para.marginRight === "" ? 0 : node.para.marginRight;
     }
 
-    if (height + lineHeight > space.height) {
-      return {
-        width: 0,
-        height: 0,
-        splitPos: treatedChars
-      };
+    let font = node.font;
+
+    if (!font) {
+      const root = node[_xfa_object.$getTemplateRoot]();
+
+      let parent = node[_xfa_object.$getParent]();
+
+      while (parent !== root) {
+        if (parent.font) {
+          font = parent.font;
+          break;
+        }
+
+        parent = parent[_xfa_object.$getParent]();
+      }
     }
 
-    totalWidth = Math.max(width, totalWidth);
-    width = w;
-    height += lineHeight;
-    chunk = chunks[i++];
-  }
+    const maxWidth = !node.w ? availableSpace.width : node.w;
+    const fontFinder = node[_xfa_object.$globalData].fontFinder;
 
-  if (totalWidth === 0) {
-    totalWidth = width;
-  }
+    if (node.value.exData && node.value.exData[_xfa_object.$content] && node.value.exData.contentType === 
"text/html") {
+      const res = layoutText(node.value.exData[_xfa_object.$content], font, margin, lineHeight, fontFinder, 
maxWidth);
+      width = res.width;
+      height = res.height;
+      isBroken = res.isBroken;
+    } else {
+      const text = node.value[_xfa_object.$text]();
+
+      if (text) {
+        const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth);
+        width = res.width;
+        height = res.height;
+        isBroken = res.isBroken;
+      }
+    }
+
+    if (width !== null && !node.w) {
+      width += marginH;
+    }
 
-  if (totalWidth !== 0) {
-    height += lineHeight;
+    if (height !== null && !node.h) {
+      height += marginV;
+    }
   }
 
   return {
-    width: totalWidth,
-    height,
-    splitPos: -1
+    w: width,
+    h: height,
+    isBroken
   };
 }
 
@@ -62582,7 +65842,7 @@ function computeBbox(node, html, availableSpace) {
 
     if (width === "") {
       if (node.maxW === 0) {
-        const parent = node[_xfa_object.$getParent]();
+        const parent = node[_xfa_object.$getSubformParent]();
 
         if (parent.layout === "position" && parent.w !== "") {
           width = 0;
@@ -62600,7 +65860,7 @@ function computeBbox(node, html, availableSpace) {
 
     if (height === "") {
       if (node.maxH === 0) {
-        const parent = node[_xfa_object.$getParent]();
+        const parent = node[_xfa_object.$getSubformParent]();
 
         if (parent.layout === "position" && parent.h !== "") {
           height = 0;
@@ -62621,7 +65881,7 @@ function computeBbox(node, html, availableSpace) {
 }
 
 function fixDimensions(node) {
-  const parent = node[_xfa_object.$getParent]();
+  const parent = node[_xfa_object.$getSubformParent]();
 
   if (parent.layout && parent.layout.includes("row")) {
     const extra = parent[_xfa_object.$extra];
@@ -62639,32 +65899,13 @@ function fixDimensions(node) {
     }
   }
 
-  if (parent.w && node.w) {
-    node.w = Math.min(parent.w, node.w);
-  }
-
-  if (parent.h && node.h) {
-    node.h = Math.min(parent.h, node.h);
-  }
-
   if (parent.layout && parent.layout !== "position") {
     node.x = node.y = 0;
-
-    if (parent.layout === "tb") {
-      if (parent.w !== "" && (node.w === "" || node.w === 0 || node.w > parent.w)) {
-        node.w = parent.w;
-      }
-    }
   }
 
-  if (node.layout === "position") {
-    node.minW = node.minH = 0;
-    node.maxW = node.maxH = Infinity;
-  } else {
-    if (node.layout === "table") {
-      if (node.w === "" && Array.isArray(node.columnWidths)) {
-        node.w = node.columnWidths.reduce((a, x) => a + x, 0);
-      }
+  if (node.layout === "table") {
+    if (node.w === "" && Array.isArray(node.columnWidths)) {
+      node.w = node.columnWidths.reduce((a, x) => a + x, 0);
     }
   }
 }
@@ -62707,6 +65948,11 @@ function toStyle(node, ...names) {
       continue;
     }
 
+    if (converters.hasOwnProperty(name)) {
+      converters[name](node, style);
+      continue;
+    }
+
     if (value instanceof _xfa_object.XFAObject) {
       const newStyle = value[_xfa_object.$toStyle]();
 
@@ -62715,102 +65961,114 @@ function toStyle(node, ...names) {
       } else {
         (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`);
       }
-
-      continue;
-    }
-
-    if (converters.hasOwnProperty(name)) {
-      converters[name](node, style);
     }
   }
 
   return style;
 }
 
-function addExtraDivForBorder(html) {
-  const style = html.attributes.style;
-  const data = style.borderData;
-  const children = [];
-  const attributes = {
-    class: "xfaWrapper",
-    style: Object.create(null)
+function createWrapper(node, html) {
+  const {
+    attributes
+  } = html;
+  const {
+    style
+  } = attributes;
+  const wrapper = {
+    name: "div",
+    attributes: {
+      class: ["xfaWrapper"],
+      style: Object.create(null)
+    },
+    children: []
   };
+  attributes.class.push("xfaWrapped");
 
-  for (const key of ["top", "left"]) {
-    if (style[key] !== undefined) {
-      attributes.style[key] = style[key];
-    }
-  }
-
-  delete style.top;
-  delete style.left;
-
-  if (style.position === "absolute") {
-    attributes.style.position = "absolute";
-  } else {
-    attributes.style.position = "relative";
-  }
-
-  delete style.position;
-
-  if (style.justifyContent) {
-    attributes.style.justifyContent = style.justifyContent;
-    delete style.justifyContent;
-  }
+  if (node.border) {
+    const {
+      widths,
+      insets
+    } = node.border[_xfa_object.$extra];
+    let width, height;
+    let top = insets[0];
+    let left = insets[3];
+    const insetsH = insets[0] + insets[2];
+    const insetsW = insets[1] + insets[3];
+
+    switch (node.border.hand) {
+      case "even":
+        top -= widths[0] / 2;
+        left -= widths[3] / 2;
+        width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;
+        height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;
+        break;
 
-  if (data) {
-    delete style.borderData;
-    let insets;
+      case "left":
+        top -= widths[0];
+        left -= widths[3];
+        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;
+        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;
+        break;
 
-    if (data.margin) {
-      insets = data.margin.split(" ");
-      delete data.margin;
-    } else {
-      insets = ["0px", "0px", "0px", "0px"];
+      case "right":
+        width = insetsW ? `calc(100% - ${insetsW}px)` : "100%";
+        height = insetsH ? `calc(100% - ${insetsH}px)` : "100%";
+        break;
     }
 
-    let width = "100%";
-    let height = width;
-
-    if (insets[1] !== "0px" || insets[3] !== "0px") {
-      width = `calc(100% - ${parseInt(insets[1]) + parseInt(insets[3])}px`;
-    }
+    const classNames = ["xfaBorder"];
 
-    if (insets[0] !== "0px" || insets[2] !== "0px") {
-      height = `calc(100% - ${parseInt(insets[0]) + parseInt(insets[2])}px`;
+    if (isPrintOnly(node.border)) {
+      classNames.push("xfaPrintOnly");
     }
 
-    const borderStyle = {
-      top: insets[0],
-      left: insets[3],
-      width,
-      height
+    const border = {
+      name: "div",
+      attributes: {
+        class: classNames,
+        style: {
+          top: `${top}px`,
+          left: `${left}px`,
+          width,
+          height
+        }
+      },
+      children: []
     };
 
-    for (const [k, v] of Object.entries(data)) {
-      borderStyle[k] = v;
+    for (const key of ["border", "borderWidth", "borderColor", "borderRadius", "borderStyle"]) {
+      if (style[key] !== undefined) {
+        border.attributes.style[key] = style[key];
+        delete style[key];
+      }
     }
 
-    if (style.transform) {
-      borderStyle.transform = style.transform;
+    wrapper.children.push(border, html);
+  } else {
+    wrapper.children.push(html);
+  }
+
+  for (const key of ["background", "backgroundClip", "top", "left", "width", "height", "minWidth", 
"minHeight", "maxWidth", "maxHeight", "transform", "transformOrigin", "visibility"]) {
+    if (style[key] !== undefined) {
+      wrapper.attributes.style[key] = style[key];
+      delete style[key];
     }
+  }
 
-    const borderDiv = {
-      name: "div",
-      attributes: {
-        class: "xfaBorderDiv",
-        style: borderStyle
-      }
-    };
-    children.push(borderDiv);
+  if (style.position === "absolute") {
+    wrapper.attributes.style.position = "absolute";
+  } else {
+    wrapper.attributes.style.position = "relative";
   }
 
-  children.push(html);
-  return {
-    name: "div",
-    attributes,
-    children
-  };
+  delete style.position;
+
+  if (style.alignSelf) {
+    wrapper.attributes.style.alignSelf = style.alignSelf;
+    delete style.alignSelf;
+  }
+
+  return wrapper;
 }
 
 function fixTextIndent(styles) {
@@ -62820,39 +66078,104 @@ function fixTextIndent(styles) {
     return;
   }
 
-  const align = styles.textAlign || "left";
+  const align = styles.textAlign === "right" ? "right" : "left";
+  const name = "padding" + (align === "left" ? "Left" : "Right");
+  const padding = (0, _utils.getMeasurement)(styles[name], "0px");
+  styles[name] = `${padding - indent}px`;
+}
+
+function setAccess(node, classNames) {
+  switch (node.access) {
+    case "nonInteractive":
+      classNames.push("xfaNonInteractive");
+      break;
+
+    case "readOnly":
+      classNames.push("xfaReadOnly");
+      break;
 
-  if (align === "left" || align === "right") {
-    const name = "margin" + (align === "left" ? "Left" : "Right");
-    const margin = (0, _utils.getMeasurement)(styles[name], "0px");
-    styles[name] = `${margin - indent}pt`;
+    case "protected":
+      classNames.push("xfaDisabled");
+      break;
   }
 }
 
-function getFonts(family) {
-  if (family.startsWith("'")) {
-    family = `"${family.slice(1, family.length - 1)}"`;
-  } else if (family.includes(" ") && !family.startsWith('"')) {
-    family = `"${family}"`;
-  }
+function isPrintOnly(node) {
+  return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === "print";
+}
 
-  const fonts = [family];
+function setPara(node, nodeStyle, value) {
+  if (value.attributes.class && value.attributes.class.includes("xfaRich")) {
+    if (nodeStyle) {
+      if (node.h === "") {
+        nodeStyle.height = "auto";
+      }
 
-  switch (family) {
-    case `"Myriad Pro"`:
-      fonts.push(`"Roboto Condensed"`, `"Ubuntu Condensed"`, `"Microsoft Sans Serif"`, `"Apple Symbols"`, 
"Helvetica", `"sans serif"`);
-      break;
+      if (node.w === "") {
+        nodeStyle.width = "auto";
+      }
+    }
 
-    case "Arial":
-      fonts.push("Helvetica", `"Liberation Sans"`, "Arimo", `"sans serif"`);
-      break;
+    if (node.para) {
+      const valueStyle = value.attributes.style;
+      valueStyle.display = "flex";
+      valueStyle.flexDirection = "column";
+
+      switch (node.para.vAlign) {
+        case "top":
+          valueStyle.justifyContent = "start";
+          break;
+
+        case "bottom":
+          valueStyle.justifyContent = "end";
+          break;
+
+        case "middle":
+          valueStyle.justifyContent = "center";
+          break;
+      }
+
+      const paraStyle = node.para[_xfa_object.$toStyle]();
+
+      for (const [key, val] of Object.entries(paraStyle)) {
+        if (!(key in valueStyle)) {
+          valueStyle[key] = val;
+        }
+      }
+    }
   }
+}
+
+function setFontFamily(xfaFont, fontFinder, style) {
+  const name = (0, _utils.stripQuotes)(xfaFont.typeface);
+  const typeface = fontFinder.find(name);
+  style.fontFamily = `"${name}"`;
+
+  if (typeface) {
+    const {
+      fontFamily
+    } = typeface.regular.cssFontInfo;
+
+    if (fontFamily !== name) {
+      style.fontFamily = `"${fontFamily}"`;
+    }
 
-  return fonts.join(",");
+    if (style.lineHeight) {
+      return;
+    }
+
+    const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface);
+
+    if (pdfFont && pdfFont.lineHeight > 0) {
+      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);
+    } else {
+      style.lineHeight = 1.2;
+    }
+  }
 }
 
 /***/ }),
-/* 74 */
+/* 83 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -62860,173 +66183,174 @@ function getFonts(family) {
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.addHTML = addHTML;
-exports.flushHTML = flushHTML;
-exports.getAvailableSpace = getAvailableSpace;
+exports.selectFont = selectFont;
+exports.FontFinder = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _util = __w_pdfjs_require__(2);
 
-var _html_utils = __w_pdfjs_require__(73);
+class FontFinder {
+  constructor(pdfFonts) {
+    this.fonts = new Map();
+    this.cache = new Map();
+    this.warned = new Set();
+    this.defaultFont = null;
+    this.add(pdfFonts);
+  }
 
-function flushHTML(node) {
-  const attributes = node[_xfa_object.$extra].attributes;
-  const html = {
-    name: "div",
-    attributes,
-    children: node[_xfa_object.$extra].children
-  };
+  add(pdfFonts, reallyMissingFonts = null) {
+    for (const pdfFont of pdfFonts) {
+      this.addPdfFont(pdfFont);
+    }
 
-  if (node[_xfa_object.$extra].failingNode) {
-    const htmlFromFailing = node[_xfa_object.$extra].failingNode[_xfa_object.$flushHTML]();
+    for (const pdfFont of this.fonts.values()) {
+      if (!pdfFont.regular) {
+        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;
+      }
+    }
 
-    if (htmlFromFailing) {
-      html.children.push(htmlFromFailing);
+    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {
+      return;
     }
-  }
 
-  if (html.children.length === 0) {
-    return null;
+    const myriad = this.fonts.get("PdfJS-Fallback-PdfJS-XFA");
+
+    for (const missing of reallyMissingFonts) {
+      this.fonts.set(missing, myriad);
+    }
   }
 
-  node[_xfa_object.$extra].children = [];
-  delete node[_xfa_object.$extra].line;
-  return html;
-}
+  addPdfFont(pdfFont) {
+    const cssFontInfo = pdfFont.cssFontInfo;
+    const name = cssFontInfo.fontFamily;
+    let font = this.fonts.get(name);
 
-function addHTML(node, html, bbox) {
-  const extra = node[_xfa_object.$extra];
-  const availableSpace = extra.availableSpace;
+    if (!font) {
+      font = Object.create(null);
+      this.fonts.set(name, font);
 
-  switch (node.layout) {
-    case "position":
-      {
-        const [x, y, w, h] = bbox;
-        extra.width = Math.max(extra.width, x + w);
-        extra.height = Math.max(extra.height, y + h);
-        extra.children.push(html);
-        break;
+      if (!this.defaultFont) {
+        this.defaultFont = font;
       }
+    }
 
-    case "lr-tb":
-    case "rl-tb":
-      if (!extra.line || extra.attempt === 1) {
-        extra.line = {
-          name: "div",
-          attributes: {
-            class: node.layout === "lr-tb" ? "xfaLr" : "xfaRl"
-          },
-          children: []
-        };
-        extra.children.push(extra.line);
-      }
+    let property = "";
+    const fontWeight = parseFloat(cssFontInfo.fontWeight);
 
-      extra.line.children.push(html);
+    if (parseFloat(cssFontInfo.italicAngle) !== 0) {
+      property = fontWeight >= 700 ? "bolditalic" : "italic";
+    } else if (fontWeight >= 700) {
+      property = "bold";
+    }
 
-      if (extra.attempt === 0) {
-        const [,, w, h] = bbox;
-        extra.currentWidth += w;
-        extra.height = Math.max(extra.height, extra.prevHeight + h);
-      } else {
-        const [,, w, h] = bbox;
-        extra.width = Math.max(extra.width, extra.currentWidth);
-        extra.currentWidth = w;
-        extra.prevHeight = extra.height;
-        extra.height += h;
-        extra.attempt = 0;
+    if (!property) {
+      if (pdfFont.name.includes("Bold") || pdfFont.psName && pdfFont.psName.includes("Bold")) {
+        property = "bold";
       }
 
-      break;
+      if (pdfFont.name.includes("Italic") || pdfFont.name.endsWith("It") || pdfFont.psName && 
(pdfFont.psName.includes("Italic") || pdfFont.psName.endsWith("It"))) {
+        property += "italic";
+      }
+    }
 
-    case "rl-row":
-    case "row":
-      {
-        extra.children.push(html);
-        const [,, w, h] = bbox;
-        extra.width += w;
-        extra.height = Math.max(extra.height, h);
-        const height = (0, _html_utils.measureToString)(extra.height);
+    if (!property) {
+      property = "regular";
+    }
 
-        for (const child of extra.children) {
-          if (child.attributes.class === "xfaWrapper") {
-            child.children[child.children.length - 1].attributes.style.height = height;
-          } else {
-            child.attributes.style.height = height;
-          }
-        }
+    font[property] = pdfFont;
+  }
 
-        break;
-      }
+  getDefault() {
+    return this.defaultFont;
+  }
 
-    case "table":
-      {
-        const [,, w, h] = bbox;
-        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));
-        extra.height += h;
-        extra.children.push(html);
-        break;
+  find(fontName, mustWarn = true) {
+    let font = this.fonts.get(fontName) || this.cache.get(fontName);
+
+    if (font) {
+      return font;
+    }
+
+    const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;
+    let name = fontName.replace(pattern, "");
+    font = this.fonts.get(name);
+
+    if (font) {
+      this.cache.set(fontName, font);
+      return font;
+    }
+
+    name = name.toLowerCase();
+    const maybe = [];
+
+    for (const [family, pdfFont] of this.fonts.entries()) {
+      if (family.replace(pattern, "").toLowerCase().startsWith(name)) {
+        maybe.push(pdfFont);
       }
+    }
 
-    case "tb":
-      {
-        const [,,, h] = bbox;
-        extra.width = availableSpace.width;
-        extra.height += h;
-        extra.children.push(html);
-        break;
+    if (maybe.length === 0) {
+      for (const [, pdfFont] of this.fonts.entries()) {
+        if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, 
"").toLowerCase().startsWith(name)) {
+          maybe.push(pdfFont);
+        }
       }
-  }
-}
+    }
 
-function getAvailableSpace(node) {
-  const availableSpace = node[_xfa_object.$extra].availableSpace;
+    if (maybe.length === 0) {
+      name = name.replace(/psmt|mt/gi, "");
 
-  switch (node.layout) {
-    case "lr-tb":
-    case "rl-tb":
-      switch (node[_xfa_object.$extra].attempt) {
-        case 0:
-          return {
-            width: availableSpace.width - node[_xfa_object.$extra].currentWidth,
-            height: availableSpace.height - node[_xfa_object.$extra].prevHeight
-          };
+      for (const [family, pdfFont] of this.fonts.entries()) {
+        if (family.replace(pattern, "").toLowerCase().startsWith(name)) {
+          maybe.push(pdfFont);
+        }
+      }
+    }
 
-        case 1:
-          return {
-            width: availableSpace.width,
-            height: availableSpace.height - node[_xfa_object.$extra].height
-          };
+    if (maybe.length === 0) {
+      for (const pdfFont of this.fonts.values()) {
+        if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, 
"").toLowerCase().startsWith(name)) {
+          maybe.push(pdfFont);
+        }
+      }
+    }
 
-        default:
-          return {
-            width: Infinity,
-            height: availableSpace.height - node[_xfa_object.$extra].prevHeight
-          };
+    if (maybe.length >= 1) {
+      if (maybe.length !== 1 && mustWarn) {
+        (0, _util.warn)(`XFA - Too many choices to guess the correct font: ${fontName}`);
       }
 
-    case "rl-row":
-    case "row":
-      const width = 
node[_xfa_object.$extra].columnWidths.slice(node[_xfa_object.$extra].currentColumn).reduce((a, x) => a + x);
+      this.cache.set(fontName, maybe[0]);
+      return maybe[0];
+    }
 
-      return {
-        width,
-        height: availableSpace.height
-      };
+    if (mustWarn && !this.warned.has(fontName)) {
+      this.warned.add(fontName);
+      (0, _util.warn)(`XFA - Cannot find the font: ${fontName}`);
+    }
 
-    case "table":
-    case "tb":
-      return {
-        width: availableSpace.width,
-        height: availableSpace.height - node[_xfa_object.$extra].height
-      };
+    return null;
+  }
 
-    case "position":
-    default:
-      return availableSpace;
+}
+
+exports.FontFinder = FontFinder;
+
+function selectFont(xfaFont, typeface) {
+  if (xfaFont.posture === "italic") {
+    if (xfaFont.weight === "bold") {
+      return typeface.bolditalic;
+    }
+
+    return typeface.italic;
+  } else if (xfaFont.weight === "bold") {
+    return typeface.bold;
   }
+
+  return typeface.regular;
 }
 
 /***/ }),
-/* 75 */
+/* 84 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63034,333 +66358,332 @@ function getAvailableSpace(node) {
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.createDataNode = createDataNode;
-exports.searchNode = searchNode;
+exports.TextMeasure = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _fonts = __w_pdfjs_require__(83);
 
-var _util = __w_pdfjs_require__(2);
+const WIDTH_FACTOR = 1.01;
 
-const namePattern = /^[^.[]+/;
-const indexPattern = /^[^\]]+/;
-const operators = {
-  dot: 0,
-  dotDot: 1,
-  dotHash: 2,
-  dotBracket: 3,
-  dotParen: 4
-};
-const shortcuts = new Map([["$data", (root, current) => root.datasets.data], ["$template", (root, current) 
=> root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => 
root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], 
["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, 
current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, 
current) => current]]);
-const somCache = new WeakMap();
+class FontInfo {
+  constructor(xfaFont, margin, lineHeight, fontFinder) {
+    this.lineHeight = lineHeight;
+    this.paraMargin = margin || {
+      top: 0,
+      bottom: 0,
+      left: 0,
+      right: 0
+    };
 
-function parseIndex(index) {
-  index = index.trim();
+    if (!xfaFont) {
+      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);
+      return;
+    }
 
-  if (index === "*") {
-    return Infinity;
-  }
+    this.xfaFont = {
+      typeface: xfaFont.typeface,
+      posture: xfaFont.posture,
+      weight: xfaFont.weight,
+      size: xfaFont.size,
+      letterSpacing: xfaFont.letterSpacing
+    };
+    const typeface = fontFinder.find(xfaFont.typeface);
 
-  return parseInt(index, 10) || 0;
-}
+    if (!typeface) {
+      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);
+      return;
+    }
 
-function parseExpression(expr, dotDotAllowed) {
-  let match = expr.match(namePattern);
+    this.pdfFont = (0, _fonts.selectFont)(xfaFont, typeface);
 
-  if (!match) {
-    return null;
+    if (!this.pdfFont) {
+      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);
+    }
   }
 
-  let [name] = match;
-  const parsed = [{
-    name,
-    cacheName: "." + name,
-    index: 0,
-    js: null,
-    formCalc: null,
-    operator: operators.dot
-  }];
-  let pos = name.length;
-
-  while (pos < expr.length) {
-    const spos = pos;
-    const char = expr.charAt(pos++);
-
-    if (char === "[") {
-      match = expr.slice(pos).match(indexPattern);
-
-      if (!match) {
-        (0, _util.warn)("XFA - Invalid index in SOM expression");
-        return null;
-      }
+  defaultFont(fontFinder) {
+    const font = fontFinder.find("Helvetica", false) || fontFinder.find("Myriad Pro", false) || 
fontFinder.find("Arial", false) || fontFinder.getDefault();
 
-      parsed[parsed.length - 1].index = parseIndex(match[0]);
-      pos += match[0].length + 1;
-      continue;
+    if (font && font.regular) {
+      const pdfFont = font.regular;
+      const info = pdfFont.cssFontInfo;
+      const xfaFont = {
+        typeface: info.fontFamily,
+        posture: "normal",
+        weight: "normal",
+        size: 10,
+        letterSpacing: 0
+      };
+      return [pdfFont, xfaFont];
     }
 
-    let operator;
-
-    switch (expr.charAt(pos)) {
-      case ".":
-        if (!dotDotAllowed) {
-          return null;
-        }
+    const xfaFont = {
+      typeface: "Courier",
+      posture: "normal",
+      weight: "normal",
+      size: 10,
+      letterSpacing: 0
+    };
+    return [null, xfaFont];
+  }
 
-        pos++;
-        operator = operators.dotDot;
-        break;
+}
 
-      case "#":
-        pos++;
-        operator = operators.dotHash;
-        break;
+class FontSelector {
+  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {
+    this.fontFinder = fontFinder;
+    this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];
+  }
 
-      case "[":
-        operator = operators.dotBracket;
-        break;
+  pushData(xfaFont, margin, lineHeight) {
+    const lastFont = this.stack[this.stack.length - 1];
 
-      case "(":
-        operator = operators.dotParen;
-        break;
+    for (const name of ["typeface", "posture", "weight", "size", "letterSpacing"]) {
+      if (!xfaFont[name]) {
+        xfaFont[name] = lastFont.xfaFont[name];
+      }
+    }
 
-      default:
-        operator = operators.dot;
-        break;
+    for (const name of ["top", "bottom", "left", "right"]) {
+      if (isNaN(margin[name])) {
+        margin[name] = lastFont.paraMargin[name];
+      }
     }
 
-    match = expr.slice(pos).match(namePattern);
+    const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);
 
-    if (!match) {
-      break;
+    if (!fontInfo.pdfFont) {
+      fontInfo.pdfFont = lastFont.pdfFont;
     }
 
-    [name] = match;
-    pos += name.length;
-    parsed.push({
-      name,
-      cacheName: expr.slice(spos, pos),
-      operator,
-      index: 0,
-      js: null,
-      formCalc: null
-    });
+    this.stack.push(fontInfo);
+  }
+
+  popFont() {
+    this.stack.pop();
+  }
+
+  topFont() {
+    return this.stack[this.stack.length - 1];
   }
 
-  return parsed;
 }
 
-function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {
-  const parsed = parseExpression(expr, dotDotAllowed);
+class TextMeasure {
+  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {
+    this.glyphs = [];
+    this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);
+    this.extraHeight = 0;
+  }
 
-  if (!parsed) {
-    return null;
+  pushData(xfaFont, margin, lineHeight) {
+    this.fontSelector.pushData(xfaFont, margin, lineHeight);
   }
 
-  const fn = shortcuts.get(parsed[0].name);
-  let i = 0;
-  let isQualified;
+  popFont(xfaFont) {
+    return this.fontSelector.popFont();
+  }
 
-  if (fn) {
-    isQualified = true;
-    root = [fn(root, container)];
-    i = 1;
-  } else {
-    isQualified = container === null;
-    root = [container || root];
+  addPara() {
+    const lastFont = this.fontSelector.topFont();
+    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;
   }
 
-  for (let ii = parsed.length; i < ii; i++) {
-    const {
-      name,
-      cacheName,
-      operator,
-      index
-    } = parsed[i];
-    const nodes = [];
+  addString(str) {
+    if (!str) {
+      return;
+    }
 
-    for (const node of root) {
-      if (!(node instanceof _xfa_object.XFAObject)) {
-        continue;
-      }
+    const lastFont = this.fontSelector.topFont();
+    const fontSize = lastFont.xfaFont.size;
 
-      let children, cached;
+    if (lastFont.pdfFont) {
+      const letterSpacing = lastFont.xfaFont.letterSpacing;
+      const pdfFont = lastFont.pdfFont;
+      const lineHeight = lastFont.lineHeight || Math.ceil(Math.max(1.2, pdfFont.lineHeight) * fontSize);
+      const scale = fontSize / 1000;
 
-      if (useCache) {
-        cached = somCache.get(node);
+      for (const line of str.split(/[\u2029\n]/)) {
+        const encodedLine = pdfFont.encodeString(line).join("");
+        const glyphs = pdfFont.charsToGlyphs(encodedLine);
 
-        if (!cached) {
-          cached = new Map();
-          somCache.set(node, cached);
+        for (const glyph of glyphs) {
+          this.glyphs.push([glyph.width * scale + letterSpacing, lineHeight, glyph.unicode === " ", false]);
         }
 
-        children = cached.get(cacheName);
+        this.glyphs.push([0, 0, false, true]);
       }
 
-      if (!children) {
-        switch (operator) {
-          case operators.dot:
-            children = node[_xfa_object.$getChildrenByName](name, false);
-            break;
+      this.glyphs.pop();
+      return;
+    }
 
-          case operators.dotDot:
-            children = node[_xfa_object.$getChildrenByName](name, true);
-            break;
+    for (const line of str.split(/[\u2029\n]/)) {
+      for (const char of line.split("")) {
+        this.glyphs.push([fontSize, fontSize, char === " ", false]);
+      }
 
-          case operators.dotHash:
-            children = node[_xfa_object.$getChildrenByClass](name);
+      this.glyphs.push([0, 0, false, true]);
+    }
 
-            if (children instanceof _xfa_object.XFAObjectArray) {
-              children = children.children;
-            } else {
-              children = [children];
-            }
+    this.glyphs.pop();
+  }
 
-            break;
+  compute(maxWidth) {
+    let lastSpacePos = -1,
+        lastSpaceWidth = 0,
+        width = 0,
+        height = 0,
+        currentLineWidth = 0,
+        currentLineHeight = 0;
+    let isBroken = false;
 
-          default:
-            break;
-        }
+    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {
+      const [glyphWidth, glyphHeight, isSpace, isEOL] = this.glyphs[i];
 
-        if (useCache) {
-          cached.set(cacheName, children);
-        }
+      if (isEOL) {
+        width = Math.max(width, currentLineWidth);
+        currentLineWidth = 0;
+        height += currentLineHeight;
+        currentLineHeight = glyphHeight;
+        lastSpacePos = -1;
+        lastSpaceWidth = 0;
+        continue;
       }
 
-      if (children.length > 0) {
-        nodes.push(children);
+      if (isSpace) {
+        if (currentLineWidth + glyphWidth > maxWidth) {
+          width = Math.max(width, currentLineWidth);
+          currentLineWidth = 0;
+          height += currentLineHeight;
+          currentLineHeight = glyphHeight;
+          lastSpacePos = -1;
+          lastSpaceWidth = 0;
+          isBroken = true;
+        } else {
+          currentLineHeight = Math.max(glyphHeight, currentLineHeight);
+          lastSpaceWidth = currentLineWidth;
+          currentLineWidth += glyphWidth;
+          lastSpacePos = i;
+        }
+
+        continue;
       }
-    }
 
-    if (nodes.length === 0 && !isQualified && i === 0) {
-      const parent = container[_xfa_object.$getParent]();
+      if (currentLineWidth + glyphWidth > maxWidth) {
+        height += currentLineHeight;
+        currentLineHeight = glyphHeight;
 
-      container = parent;
+        if (lastSpacePos !== -1) {
+          i = lastSpacePos;
+          width = Math.max(width, lastSpaceWidth);
+          currentLineWidth = 0;
+          lastSpacePos = -1;
+          lastSpaceWidth = 0;
+        } else {
+          width = Math.max(width, currentLineWidth);
+          currentLineWidth = glyphWidth;
+        }
 
-      if (!container) {
-        return null;
+        isBroken = true;
+        continue;
       }
 
-      i = -1;
-      root = [container];
-      continue;
+      currentLineWidth += glyphWidth;
+      currentLineHeight = Math.max(glyphHeight, currentLineHeight);
     }
 
-    if (isFinite(index)) {
-      root = nodes.filter(node => index < node.length).map(node => node[index]);
-    } else {
-      root = nodes.reduce((acc, node) => acc.concat(node), []);
-    }
-  }
-
-  if (root.length === 0) {
-    return null;
+    width = Math.max(width, currentLineWidth);
+    height += currentLineHeight + this.extraHeight;
+    return {
+      width: WIDTH_FACTOR * width,
+      height,
+      isBroken
+    };
   }
 
-  return root;
 }
 
-function createNodes(root, path) {
-  let node = null;
-
-  for (const {
-    name,
-    index
-  } of path) {
-    for (let i = 0; i <= index; i++) {
-      node = new _xfa_object.XmlObject(root[_xfa_object.$namespaceId], name);
+exports.TextMeasure = TextMeasure;
 
-      root[_xfa_object.$appendChild](node);
-    }
+/***/ }),
+/* 85 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-    root = node;
-  }
 
-  return node;
-}
 
-function createDataNode(root, container, expr) {
-  const parsed = parseExpression(expr);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.DataHandler = void 0;
 
-  if (!parsed) {
-    return null;
-  }
+var _xfa_object = __w_pdfjs_require__(75);
 
-  if (parsed.some(x => x.operator === operators.dotDot)) {
-    return null;
+class DataHandler {
+  constructor(root, data) {
+    this.data = data;
+    this.dataset = root.datasets || null;
   }
 
-  const fn = shortcuts.get(parsed[0].name);
-  let i = 0;
-
-  if (fn) {
-    root = fn(root, container);
-    i = 1;
-  } else {
-    root = container || root;
-  }
+  serialize(storage) {
+    const stack = [[-1, this.data[_xfa_object.$getChildren]()]];
 
-  for (let ii = parsed.length; i < ii; i++) {
-    const {
-      name,
-      operator,
-      index
-    } = parsed[i];
+    while (stack.length > 0) {
+      const last = stack[stack.length - 1];
+      const [i, children] = last;
 
-    if (!isFinite(index)) {
-      parsed[i].index = 0;
-      return createNodes(root, parsed.slice(i));
-    }
+      if (i + 1 === children.length) {
+        stack.pop();
+        continue;
+      }
 
-    let children;
+      const child = children[++last[0]];
+      const storageEntry = storage.get(child[_xfa_object.$uid]);
 
-    switch (operator) {
-      case operators.dot:
-        children = root[_xfa_object.$getChildrenByName](name, false);
-        break;
+      if (storageEntry) {
+        child[_xfa_object.$setValue](storageEntry);
+      } else {
+        const attributes = child[_xfa_object.$getAttributes]();
 
-      case operators.dotDot:
-        children = root[_xfa_object.$getChildrenByName](name, true);
-        break;
+        for (const value of attributes.values()) {
+          const entry = storage.get(value[_xfa_object.$uid]);
 
-      case operators.dotHash:
-        children = root[_xfa_object.$getChildrenByClass](name);
+          if (entry) {
+            value[_xfa_object.$setValue](entry);
 
-        if (children instanceof _xfa_object.XFAObjectArray) {
-          children = children.children;
-        } else {
-          children = [children];
+            break;
+          }
         }
+      }
 
-        break;
-
-      default:
-        break;
-    }
+      const nodes = child[_xfa_object.$getChildren]();
 
-    if (children.length === 0) {
-      return createNodes(root, parsed.slice(i));
+      if (nodes.length > 0) {
+        stack.push([-1, nodes]);
+      }
     }
 
-    if (index < children.length) {
-      const child = children[index];
+    const buf = [`<xfa:datasets xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/";>`];
 
-      if (!(child instanceof _xfa_object.XFAObject)) {
-        (0, _util.warn)(`XFA - Cannot create a node.`);
-        return null;
+    if (this.dataset) {
+      for (const child of this.dataset[_xfa_object.$getChildren]()) {
+        if (child[_xfa_object.$nodeName] !== "data") {
+          child[_xfa_object.$toString](buf);
+        }
       }
-
-      root = child;
-    } else {
-      parsed[i].index = children.length - index;
-      return createNodes(root, parsed.slice(i));
     }
+
+    this.data[_xfa_object.$toString](buf);
+
+    buf.push("</xfa:datasets>");
+    return buf.join("");
   }
 
-  return null;
 }
 
+exports.DataHandler = DataHandler;
+
 /***/ }),
-/* 76 */
+/* 86 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63370,11 +66693,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XFAParser = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _xml_parser = __w_pdfjs_require__(61);
+var _xml_parser = __w_pdfjs_require__(68);
 
-var _builder = __w_pdfjs_require__(77);
+var _builder = __w_pdfjs_require__(87);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -63383,6 +66706,9 @@ class XFAParser extends _xml_parser.XMLParserBase {
     super();
     this._builder = new _builder.Builder();
     this._stack = [];
+    this._globalData = {
+      usedTypefaces: new Set()
+    };
     this._ids = new Map();
     this._current = this._builder.buildRoot(this._ids);
     this._errorCode = _xml_parser.XMLParserErrorCode.NoError;
@@ -63475,20 +66801,20 @@ class XFAParser extends _xml_parser.XMLParserBase {
     return [namespace, prefixes, attributeObj];
   }
 
-  _getNameAndPrefix(name) {
+  _getNameAndPrefix(name, nsAgnostic) {
     const i = name.indexOf(":");
 
     if (i === -1) {
       return [name, null];
     }
 
-    return [name.substring(i + 1), name.substring(0, i)];
+    return [name.substring(i + 1), nsAgnostic ? "" : name.substring(0, i)];
   }
 
   onBeginElement(tagName, attributes, isEmpty) {
     const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);
 
-    const [name, nsPrefix] = this._getNameAndPrefix(tagName);
+    const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());
 
     const node = this._builder.build({
       nsPrefix,
@@ -63498,6 +66824,8 @@ class XFAParser extends _xml_parser.XMLParserBase {
       prefixes
     });
 
+    node[_xfa_object.$globalData] = this._globalData;
+
     if (isEmpty) {
       node[_xfa_object.$finalize]();
 
@@ -63518,6 +66846,15 @@ class XFAParser extends _xml_parser.XMLParserBase {
   onEndElement(name) {
     const node = this._current;
 
+    if (node[_xfa_object.$isCDATAXml]() && typeof node[_xfa_object.$content] === "string") {
+      const parser = new XFAParser();
+      parser._globalData = this._globalData;
+      const root = parser.parse(node[_xfa_object.$content]);
+      node[_xfa_object.$content] = null;
+
+      node[_xfa_object.$onChild](root);
+    }
+
     node[_xfa_object.$finalize]();
 
     this._current = this._stack.pop();
@@ -63538,7 +66875,7 @@ class XFAParser extends _xml_parser.XMLParserBase {
 exports.XFAParser = XFAParser;
 
 /***/ }),
-/* 77 */
+/* 87 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63548,15 +66885,15 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Builder = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _setup = __w_pdfjs_require__(78);
+var _setup = __w_pdfjs_require__(88);
 
-var _template = __w_pdfjs_require__(72);
+var _template = __w_pdfjs_require__(80);
 
-var _unknown = __w_pdfjs_require__(87);
+var _unknown = __w_pdfjs_require__(97);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -63576,6 +66913,8 @@ class Root extends _xfa_object.XFAObject {
     super[_xfa_object.$finalize]();
 
     if (this.element.template instanceof _template.Template) {
+      this[_xfa_object.$ids].set(_xfa_object.$root, this.element);
+
       this.element.template[_xfa_object.$resolvePrototypes](this[_xfa_object.$ids]);
 
       this.element.template[_xfa_object.$ids] = this[_xfa_object.$ids];
@@ -63598,6 +66937,7 @@ class Empty extends _xfa_object.XFAObject {
 class Builder {
   constructor() {
     this._namespaceStack = [];
+    this._nsAgnosticLevel = 0;
     this._namespacePrefixes = new Map();
     this._namespaces = new Map();
     this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(({
@@ -63656,16 +66996,25 @@ class Builder {
 
     const node = namespaceToUse && namespaceToUse[_namespaces.$buildXFAObject](name, attributes) || new 
Empty();
 
-    if (hasNamespaceDef || prefixes) {
+    if (node[_xfa_object.$isNsAgnostic]()) {
+      this._nsAgnosticLevel++;
+    }
+
+    if (hasNamespaceDef || prefixes || node[_xfa_object.$isNsAgnostic]()) {
       node[_xfa_object.$cleanup] = {
         hasNamespace: hasNamespaceDef,
-        prefixes
+        prefixes,
+        nsAgnostic: node[_xfa_object.$isNsAgnostic]()
       };
     }
 
     return node;
   }
 
+  isNsAgnostic() {
+    return this._nsAgnosticLevel > 0;
+  }
+
   _searchNamespace(nsName) {
     let ns = this._namespaces.get(nsName);
 
@@ -63733,7 +67082,8 @@ class Builder {
   clean(data) {
     const {
       hasNamespace,
-      prefixes
+      prefixes,
+      nsAgnostic
     } = data;
 
     if (hasNamespace) {
@@ -63747,6 +67097,10 @@ class Builder {
         this._namespacePrefixes.get(prefix).pop();
       });
     }
+
+    if (nsAgnostic) {
+      this._nsAgnosticLevel--;
+    }
   }
 
 }
@@ -63754,7 +67108,7 @@ class Builder {
 exports.Builder = Builder;
 
 /***/ }),
-/* 78 */
+/* 88 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63764,23 +67118,23 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.NamespaceSetUp = void 0;
 
-var _config = __w_pdfjs_require__(79);
+var _config = __w_pdfjs_require__(89);
 
-var _connection_set = __w_pdfjs_require__(80);
+var _connection_set = __w_pdfjs_require__(90);
 
-var _datasets = __w_pdfjs_require__(81);
+var _datasets = __w_pdfjs_require__(91);
 
-var _locale_set = __w_pdfjs_require__(82);
+var _locale_set = __w_pdfjs_require__(92);
 
-var _signature = __w_pdfjs_require__(83);
+var _signature = __w_pdfjs_require__(93);
 
-var _stylesheet = __w_pdfjs_require__(84);
+var _stylesheet = __w_pdfjs_require__(94);
 
-var _template = __w_pdfjs_require__(72);
+var _template = __w_pdfjs_require__(80);
 
-var _xdp = __w_pdfjs_require__(85);
+var _xdp = __w_pdfjs_require__(95);
 
-var _xhtml = __w_pdfjs_require__(86);
+var _xhtml = __w_pdfjs_require__(96);
 
 const NamespaceSetUp = {
   config: _config.ConfigNamespace,
@@ -63796,7 +67150,7 @@ const NamespaceSetUp = {
 exports.NamespaceSetUp = NamespaceSetUp;
 
 /***/ }),
-/* 79 */
+/* 89 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63806,11 +67160,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.ConfigNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
 var _util = __w_pdfjs_require__(2);
 
@@ -63950,7 +67304,7 @@ class BehaviorOverride extends _xfa_object.ContentObject {
   }
 
   [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\s+/).filter(x => !!x && 
x.include(":")).map(x => x.split(":", 2)));
+    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\s+/).filter(x => 
x.includes(":")).map(x => x.split(":", 2)));
   }
 
 }
@@ -65685,7 +69039,7 @@ class ConfigNamespace {
 exports.ConfigNamespace = ConfigNamespace;
 
 /***/ }),
-/* 80 */
+/* 90 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -65695,9 +69049,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.ConnectionSetNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
 const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id;
 
@@ -65899,7 +69253,7 @@ class ConnectionSetNamespace {
 exports.ConnectionSetNamespace = ConnectionSetNamespace;
 
 /***/ }),
-/* 81 */
+/* 91 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -65909,9 +69263,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.DatasetsNamespace = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
 const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id;
 
@@ -65920,6 +69274,10 @@ class Data extends _xfa_object.XmlObject {
     super(DATASETS_NS_ID, "data", attributes);
   }
 
+  [_xfa_object.$isNsAgnostic]() {
+    return true;
+  }
+
 }
 
 class Datasets extends _xfa_object.XFAObject {
@@ -65934,8 +69292,6 @@ class Datasets extends _xfa_object.XFAObject {
 
     if (name === "data" && child[_xfa_object.$namespaceId] === DATASETS_NS_ID || name === "Signature" && 
child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.signature.id) {
       this[name] = child;
-    } else {
-      child[_xfa_object.$global] = true;
     }
 
     this[_xfa_object.$appendChild](child);
@@ -65965,7 +69321,7 @@ class DatasetsNamespace {
 exports.DatasetsNamespace = DatasetsNamespace;
 
 /***/ }),
-/* 82 */
+/* 92 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -65975,11 +69331,11 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.LocaleSetNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
 const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id;
 
@@ -66303,7 +69659,7 @@ class LocaleSetNamespace {
 exports.LocaleSetNamespace = LocaleSetNamespace;
 
 /***/ }),
-/* 83 */
+/* 93 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66313,9 +69669,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.SignatureNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
 const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id;
 
@@ -66344,7 +69700,7 @@ class SignatureNamespace {
 exports.SignatureNamespace = SignatureNamespace;
 
 /***/ }),
-/* 84 */
+/* 94 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66354,9 +69710,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.StylesheetNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
 const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id;
 
@@ -66385,7 +69741,7 @@ class StylesheetNamespace {
 exports.StylesheetNamespace = StylesheetNamespace;
 
 /***/ }),
-/* 85 */
+/* 95 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66395,9 +69751,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XdpNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
 const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id;
 
@@ -66439,7 +69795,7 @@ class XdpNamespace {
 exports.XdpNamespace = XdpNamespace;
 
 /***/ }),
-/* 86 */
+/* 96 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66449,27 +69805,32 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.XhtmlNamespace = void 0;
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _html_utils = __w_pdfjs_require__(73);
+var _html_utils = __w_pdfjs_require__(82);
 
-var _utils = __w_pdfjs_require__(69);
+var _utils = __w_pdfjs_require__(76);
 
 const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id;
 const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", 
"font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", 
"line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", 
"tab-stop", "text-align", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", 
"xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-spacerun", "xfa-tab-stops"]);
-const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], 
["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], 
["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], 
["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], 
["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", value => (0, _html_utils.measureToString)(1 * (0, 
_utils.getMeasurement)(value))], ["letter-spacing", value => (0, _html_utils.measureToString)((0, 
_utils.getMeasurement)(value))], ["line-height", value => (0, _html_utils.measureToString)(0.99 * (0, 
_utils.getMeasurement)(value))], ["margin", value => (0, _html_utils.measureToString)((0, 
_utils.getMeasurement)(value))], ["margin-bottom", value => (0, _html_utils.measureToString)((0, 
_utils.getMeasurement)(value))], ["margin-left", value => (0, _html_utils.me
 asureToString)((0, _utils.getMeasurement)(value))], ["margin-right", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-top", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["text-indent", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["font-family", value => (0, 
_html_utils.getFonts)(value)]]);
+const StyleMapping = new Map([["page-break-after", "breakAfter"], ["page-break-before", "breakBefore"], 
["page-break-inside", "breakInside"], ["kerning-mode", value => value === "none" ? "none" : "normal"], 
["xfa-font-horizontal-scale", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], 
["xfa-font-vertical-scale", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], 
["xfa-spacerun", ""], ["xfa-tab-stops", ""], ["font-size", (value, original) => {
+  value = original.fontSize = (0, _utils.getMeasurement)(value);
+  return (0, _html_utils.measureToString)(0.99 * value);
+}], ["letter-spacing", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], 
["line-height", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin", 
value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-bottom", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-left", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-right", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["margin-top", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["text-indent", value => (0, 
_html_utils.measureToString)((0, _utils.getMeasurement)(value))], ["font-family", value => value]]);
 const spacesRegExp = /\s+/g;
 const crlfRegExp = /[\r\n]+/g;
 
-function mapStyle(styleStr) {
+function mapStyle(styleStr, fontFinder) {
   const style = Object.create(null);
 
   if (!styleStr) {
     return style;
   }
 
+  const original = Object.create(null);
+
   for (const [key, value] of styleStr.split(";").map(s => s.split(":", 2))) {
     const mapping = StyleMapping.get(key);
 
@@ -66483,7 +69844,7 @@ function mapStyle(styleStr) {
       if (typeof mapping === "string") {
         newValue = mapping;
       } else {
-        newValue = mapping(value);
+        newValue = mapping(value, original);
       }
     }
 
@@ -66498,16 +69859,31 @@ function mapStyle(styleStr) {
     }
   }
 
+  if (style.fontFamily) {
+    (0, _html_utils.setFontFamily)({
+      typeface: style.fontFamily,
+      weight: style.fontWeight || "normal",
+      posture: style.fontStyle || "normal",
+      size: original.fontSize || 0
+    }, fontFinder, style);
+  }
+
   (0, _html_utils.fixTextIndent)(style);
   return style;
 }
 
-function checkStyle(style) {
-  if (!style) {
+function checkStyle(node) {
+  if (!node.style) {
     return "";
   }
 
-  return style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(([key]) => 
VALID_STYLES.has(key)).map(kv => kv.join(":")).join(";");
+  return node.style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(([key, 
value]) => {
+    if (key === "font-family") {
+      node[_xfa_object.$globalData].usedTypefaces.add(value);
+    }
+
+    return VALID_STYLES.has(key);
+  }).map(kv => kv.join(":")).join(";");
 }
 
 const NoWhites = new Set(["body", "html"]);
@@ -66515,7 +69891,13 @@ const NoWhites = new Set(["body", "html"]);
 class XhtmlObject extends _xfa_object.XmlObject {
   constructor(attributes, name) {
     super(XHTML_NS_ID, name);
-    this.style = checkStyle(attributes.style);
+    this.style = attributes.style || "";
+  }
+
+  [_xfa_object.$clean](builder) {
+    super[_xfa_object.$clean](builder);
+
+    this.style = checkStyle(this);
   }
 
   [_xfa_object.$acceptWhitespace]() {
@@ -66534,6 +69916,109 @@ class XhtmlObject extends _xfa_object.XmlObject {
     }
   }
 
+  [_xfa_object.$pushGlyphs](measure, mustPop = true) {
+    const xfaFont = Object.create(null);
+    const margin = {
+      top: NaN,
+      bottom: NaN,
+      left: NaN,
+      right: NaN
+    };
+    let lineHeight = null;
+
+    for (const [key, value] of this.style.split(";").map(s => s.split(":", 2))) {
+      switch (key) {
+        case "font-family":
+          xfaFont.typeface = (0, _utils.stripQuotes)(value);
+          break;
+
+        case "font-size":
+          xfaFont.size = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "font-weight":
+          xfaFont.weight = value;
+          break;
+
+        case "font-style":
+          xfaFont.posture = value;
+          break;
+
+        case "letter-spacing":
+          xfaFont.letterSpacing = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "margin":
+          const values = value.split(/ \t/).map(x => (0, _utils.getMeasurement)(x));
+
+          switch (values.length) {
+            case 1:
+              margin.top = margin.bottom = margin.left = margin.right = values[0];
+              break;
+
+            case 2:
+              margin.top = margin.bottom = values[0];
+              margin.left = margin.right = values[1];
+              break;
+
+            case 3:
+              margin.top = values[0];
+              margin.bottom = values[2];
+              margin.left = margin.right = values[1];
+              break;
+
+            case 4:
+              margin.top = values[0];
+              margin.left = values[1];
+              margin.bottom = values[2];
+              margin.right = values[3];
+              break;
+          }
+
+          break;
+
+        case "margin-top":
+          margin.top = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "margin-bottom":
+          margin.bottom = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "margin-left":
+          margin.left = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "margin-right":
+          margin.right = (0, _utils.getMeasurement)(value);
+          break;
+
+        case "line-height":
+          lineHeight = (0, _utils.getMeasurement)(value);
+          break;
+      }
+    }
+
+    measure.pushData(xfaFont, margin, lineHeight);
+
+    if (this[_xfa_object.$content]) {
+      measure.addString(this[_xfa_object.$content]);
+    } else {
+      for (const child of this[_xfa_object.$getChildren]()) {
+        if (child[_xfa_object.$nodeName] === "#text") {
+          measure.addString(child[_xfa_object.$content]);
+          continue;
+        }
+
+        child[_xfa_object.$pushGlyphs](measure);
+      }
+    }
+
+    if (mustPop) {
+      measure.popFont();
+    }
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     const children = [];
     this[_xfa_object.$extra] = {
@@ -66550,7 +70035,7 @@ class XhtmlObject extends _xfa_object.XmlObject {
       name: this[_xfa_object.$nodeName],
       attributes: {
         href: this.href,
-        style: mapStyle(this.style)
+        style: mapStyle(this.style, this[_xfa_object.$globalData].fontFinder)
       },
       children,
       value: this[_xfa_object.$content] || ""
@@ -66572,6 +70057,16 @@ class B extends XhtmlObject {
     super(attributes, "b");
   }
 
+  [_xfa_object.$pushGlyphs](measure) {
+    measure.pushFont({
+      weight: "bold"
+    });
+
+    super[_xfa_object.$pushGlyphs](measure);
+
+    measure.popFont();
+  }
+
 }
 
 class Body extends XhtmlObject {
@@ -66591,7 +70086,7 @@ class Body extends XhtmlObject {
     }
 
     html.name = "div";
-    html.attributes.class = "xfaRich";
+    html.attributes.class = ["xfaRich"];
     return res;
   }
 
@@ -66606,6 +70101,10 @@ class Br extends XhtmlObject {
     return "\n";
   }
 
+  [_xfa_object.$pushGlyphs](measure) {
+    measure.addString("\n");
+  }
+
   [_xfa_object.$toHTML](availableSpace) {
     return _utils.HTMLResult.success({
       name: "br"
@@ -66631,7 +70130,7 @@ class Html extends XhtmlObject {
       return _utils.HTMLResult.success({
         name: "div",
         attributes: {
-          class: "xfaRich",
+          class: ["xfaRich"],
           style: {}
         },
         value: this[_xfa_object.$content] || ""
@@ -66641,7 +70140,7 @@ class Html extends XhtmlObject {
     if (children.length === 1) {
       const child = children[0];
 
-      if (child.attributes && child.attributes.class === "xfaRich") {
+      if (child.attributes && child.attributes.class.includes("xfaRich")) {
         return _utils.HTMLResult.success(child);
       }
     }
@@ -66649,7 +70148,7 @@ class Html extends XhtmlObject {
     return _utils.HTMLResult.success({
       name: "div",
       attributes: {
-        class: "xfaRich",
+        class: ["xfaRich"],
         style: {}
       },
       children
@@ -66663,6 +70162,16 @@ class I extends XhtmlObject {
     super(attributes, "i");
   }
 
+  [_xfa_object.$pushGlyphs](measure) {
+    measure.pushFont({
+      posture: "italic"
+    });
+
+    super[_xfa_object.$pushGlyphs](measure);
+
+    measure.popFont();
+  }
+
 }
 
 class Li extends XhtmlObject {
@@ -66684,6 +70193,14 @@ class P extends XhtmlObject {
     super(attributes, "p");
   }
 
+  [_xfa_object.$pushGlyphs](measure) {
+    super[_xfa_object.$pushGlyphs](measure, false);
+
+    measure.addString("\n");
+    measure.addPara();
+    measure.popFont();
+  }
+
   [_xfa_object.$text]() {
     return super[_xfa_object.$text]() + "\n";
   }
@@ -66784,7 +70301,7 @@ class XhtmlNamespace {
 exports.XhtmlNamespace = XhtmlNamespace;
 
 /***/ }),
-/* 87 */
+/* 97 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66794,9 +70311,9 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.UnknownNamespace = void 0;
 
-var _namespaces = __w_pdfjs_require__(70);
+var _namespaces = __w_pdfjs_require__(77);
 
-var _xfa_object = __w_pdfjs_require__(68);
+var _xfa_object = __w_pdfjs_require__(75);
 
 class UnknownNamespace {
   constructor(nsId) {
@@ -66812,7 +70329,7 @@ class UnknownNamespace {
 exports.UnknownNamespace = UnknownNamespace;
 
 /***/ }),
-/* 88 */
+/* 98 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -66830,7 +70347,7 @@ var _parser = __w_pdfjs_require__(17);
 
 var _core_utils = __w_pdfjs_require__(9);
 
-var _crypto = __w_pdfjs_require__(65);
+var _crypto = __w_pdfjs_require__(72);
 
 class XRef {
   constructor(stream, pdfManager) {
@@ -67216,8 +70733,29 @@ class XRef {
       } else if (m = objRegExp.exec(token)) {
         const num = m[1] | 0,
               gen = m[2] | 0;
+        let contentLength,
+            startPos = position + token.length,
+            updateEntries = false;
 
-        if (!this.entries[num] || this.entries[num].gen === gen) {
+        if (!this.entries[num]) {
+          updateEntries = true;
+        } else if (this.entries[num].gen === gen) {
+          try {
+            const parser = new _parser.Parser({
+              lexer: new _parser.Lexer(stream.makeSubStream(startPos))
+            });
+            parser.getObj();
+            updateEntries = true;
+          } catch (ex) {
+            if (ex instanceof _core_utils.ParserEOFException) {
+              (0, _util.warn)(`indexObjects -- checking object (${token}): "${ex}".`);
+            } else {
+              updateEntries = true;
+            }
+          }
+        }
+
+        if (updateEntries) {
           this.entries[num] = {
             offset: position - stream.start,
             gen,
@@ -67225,9 +70763,6 @@ class XRef {
           };
         }
 
-        let contentLength,
-            startPos = position + token.length;
-
         while (startPos < buffer.length) {
           const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;
           contentLength = endPos - position;
@@ -67629,7 +71164,7 @@ class XRef {
 exports.XRef = XRef;
 
 /***/ }),
-/* 89 */
+/* 99 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -68129,7 +71664,7 @@ class MessageHandler {
 exports.MessageHandler = MessageHandler;
 
 /***/ }),
-/* 90 */
+/* 100 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -68353,8 +71888,8 @@ Object.defineProperty(exports, "WorkerMessageHandler", ({
 
 var _worker = __w_pdfjs_require__(1);
 
-const pdfjsVersion = '2.9.359';
-const pdfjsBuild = 'e667c8cbc';
+const pdfjsVersion = '2.10.377';
+const pdfjsBuild = '156762c48';
 })();
 
 /******/       return __webpack_exports__;
diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
index 69f488516..dd5b52518 100644
--- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
+++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
@@ -1,13 +1,162 @@
-diff -urN web2/viewer.css web/viewer.css
---- web2/viewer.css    2020-09-03 23:18:08.000000000 +0200
-+++ web/viewer.css     2021-04-05 11:25:24.181448360 +0200
+diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
+index 69f488516..e69de29bb 100644
+--- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
++++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
+@@ -1,143 +0,0 @@
+-diff -urN web2/viewer.css web/viewer.css
+---- web2/viewer.css   2020-09-03 23:18:08.000000000 +0200
+-+++ web/viewer.css    2021-04-05 11:25:24.181448360 +0200
+-@@ -1,4 +1,5 @@
+- /* Copyright 2014 Mozilla Foundation
+-+ * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
+-  *
+-  * Licensed under the Apache License, Version 2.0 (the "License");
+-  * you may not use this file except in compliance with the License.
+-@@ -2361,6 +2362,7 @@
+- }
+- 
+- .dropdownToolbarButton > select {
+-+  -webkit-appearance: none;
+-   width: 162px;
+-   height: 28px;
+-   font-size: 12px;
+-@@ -3132,6 +3134,7 @@
+- }
+- 
+- .toolbarField.pageNumber {
+-+  -webkit-appearance: none;
+-   -moz-appearance: textfield; /* hides the spinner in moz */
+-   min-width: 16px;
+-   text-align: right;
+-diff -urN web2/viewer.html web/viewer.html
+---- web2/viewer.html  2020-09-03 23:18:08.000000000 +0200
+-+++ web/viewer.html   2021-04-05 11:25:24.181448360 +0200
+-@@ -1,6 +1,7 @@
+- <!DOCTYPE html>
+- <!--
+- Copyright 2012 Mozilla Foundation
+-+Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
+- 
+- Licensed under the Apache License, Version 2.0 (the "License");
+- you may not use this file except in compliance with the License.
+-@@ -21,14 +22,14 @@
+- See https://github.com/adobe-type-tools/cmap-resources
+- -->
+- <html dir="ltr" mozdisallowselectionprint>
+--  <head>
+-+  <head pdf_data="%s" pdf_name="%s">
+-     <meta charset="utf-8">
+-     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+-     <meta name="google" content="notranslate">
+-     <meta http-equiv="X-UA-Compatible" content="IE=edge">
+-     <title>PDF.js viewer</title>
+- 
+--
+-+    <base href="ephy-resource:///org/gnome/epiphany/pdfjs/web/">
+-     <link rel="stylesheet" href="viewer.css">
+- 
+- 
+-@@ -124,7 +125,7 @@
+-               <span data-l10n-id="download_label">Download</span>
+-             </button>
+- 
+--            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark 
visibleSmallView" title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
+-+            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark hidden" 
title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
+-               <span data-l10n-id="bookmark_label">Current View</span>
+-             </a>
+- 
+-@@ -226,7 +227,7 @@
+-                 <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
+-                   <span data-l10n-id="download_label">Download</span>
+-                 </button>
+--                <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" 
title="Current view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
+-+                <a href="#" id="viewBookmark" class="toolbarButton bookmark hidden" title="Current view 
(copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
+-                   <span data-l10n-id="bookmark_label">Current View</span>
+-                 </a>
+- 
+-diff -urN web2/viewer.js web/viewer.js
+---- web2/viewer.js    2020-09-03 23:18:20.000000000 +0200
+-+++ web/viewer.js     2021-04-05 11:25:24.184448405 +0200
+-@@ -3,6 +3,7 @@
+-  * Javascript code in this page
+-  *
+-  * Copyright 2020 Mozilla Foundation
+-+ * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
+-  *
+-  * Licensed under the Apache License, Version 2.0 (the "License");
+-  * you may not use this file except in compliance with the License.
+-@@ -1973,8 +1974,7 @@
+-   let file;
+-   const queryString = document.location.search.substring(1);
+-   const params = (0, _ui_utils.parseQueryString)(queryString);
+--  file = "file" in params ? params.file : _app_options.AppOptions.get("defaultUrl");
+--  validateFileURL(file);
+-+  file = '';
+-   const fileInput = document.createElement("input");
+-   fileInput.id = appConfig.openFileInputName;
+-   fileInput.className = "fileInput";
+-@@ -1982,12 +1982,8 @@
+-   fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
+-   document.body.appendChild(fileInput);
+- 
+--  if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
+--    appConfig.toolbar.openFile.setAttribute("hidden", "true");
+--    appConfig.secondaryToolbar.openFileButton.setAttribute("hidden", "true");
+--  } else {
+--    fileInput.value = null;
+--  }
+-+  appConfig.toolbar.openFile.setAttribute('hidden', 'true');
+-+  appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');
+- 
+-   fileInput.addEventListener("change", function (evt) {
+-     const files = evt.target.files;
+-@@ -2049,8 +2045,18 @@
+-     }
+-   }, true);
+- 
+-+  var file_name = document.head.getAttribute('pdf_name')
+-+  var raw = atob(document.head.getAttribute('pdf_data'));
+-+  var raw_length = raw.length;
+-+  var array = new Uint8Array(new ArrayBuffer(raw_length));
+-+
+-+  for(var i = 0; i < raw_length; i++) {
+-+    array[i] = raw.charCodeAt(i);
+-+  }
+-+
+-   try {
+--    webViewerOpenFileViaURL(file);
+-+    PDFViewerApplication.open(array);
+-+    PDFViewerApplication.setTitleUsingUrl(file_name);
+-   } catch (reason) {
+-     PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
+-       PDFViewerApplication.error(msg, reason);
+-@@ -6877,6 +6883,8 @@
+-       }
+-     }
+- 
+-+    // FIXME: This currently breaks Epiphany due to rewriting history with baseUrl
+-+    return;
+-     if (shouldReplace) {
+-       window.history.replaceState(newState, "", newUrl);
+-     } else {
+-@@ -13897,4 +13905,4 @@
+- 
+- /***/ })
+- /******/ ]);
+--//# sourceMappingURL=viewer.js.map
+-\ Kein Zeilenumbruch am Dateiende.
+-+//# sourceMappingURL=viewer.js.map
+diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
+index e35bdda4b..5261568a8 100644
+--- a/third-party/pdfjs/web/viewer.css
++++ b/third-party/pdfjs/web/viewer.css
 @@ -1,4 +1,5 @@
  /* Copyright 2014 Mozilla Foundation
 + * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -2361,6 +2362,7 @@
+@@ -1613,6 +1614,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
  }
  
  .dropdownToolbarButton > select {
@@ -15,7 +164,7 @@ diff -urN web2/viewer.css web/viewer.css
    width: 162px;
    height: 28px;
    font-size: 12px;
-@@ -3132,6 +3134,7 @@
+@@ -1986,6 +1988,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
  }
  
  .toolbarField.pageNumber {
@@ -23,9 +172,10 @@ diff -urN web2/viewer.css web/viewer.css
    -moz-appearance: textfield; /* hides the spinner in moz */
    min-width: 16px;
    text-align: right;
-diff -urN web2/viewer.html web/viewer.html
---- web2/viewer.html   2020-09-03 23:18:08.000000000 +0200
-+++ web/viewer.html    2021-04-05 11:25:24.181448360 +0200
+diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
+index 503b810ba..db9b7427a 100644
+--- a/third-party/pdfjs/web/viewer.html
++++ b/third-party/pdfjs/web/viewer.html
 @@ -1,6 +1,7 @@
  <!DOCTYPE html>
  <!--
@@ -34,7 +184,7 @@ diff -urN web2/viewer.html web/viewer.html
  
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
-@@ -21,14 +22,14 @@
+@@ -21,13 +22,13 @@ Adobe CMap resources are covered by their own copyright but the same license:
  See https://github.com/adobe-type-tools/cmap-resources
  -->
  <html dir="ltr" mozdisallowselectionprint>
@@ -43,7 +193,6 @@ diff -urN web2/viewer.html web/viewer.html
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
      <meta name="google" content="notranslate">
-     <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>PDF.js viewer</title>
  
 -
@@ -51,7 +200,7 @@ diff -urN web2/viewer.html web/viewer.html
      <link rel="stylesheet" href="viewer.css">
  
  
-@@ -124,7 +125,7 @@
+@@ -135,7 +136,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                <span data-l10n-id="download_label">Download</span>
              </button>
  
@@ -60,7 +209,7 @@ diff -urN web2/viewer.html web/viewer.html
                <span data-l10n-id="bookmark_label">Current View</span>
              </a>
  
-@@ -226,7 +227,7 @@
+@@ -237,7 +238,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                  <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
                    <span data-l10n-id="download_label">Download</span>
                  </button>
@@ -69,18 +218,19 @@ diff -urN web2/viewer.html web/viewer.html
                    <span data-l10n-id="bookmark_label">Current View</span>
                  </a>
  
-diff -urN web2/viewer.js web/viewer.js
---- web2/viewer.js     2020-09-03 23:18:20.000000000 +0200
-+++ web/viewer.js      2021-04-05 11:25:24.184448405 +0200
+diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
+index 1d013ebfe..d0064cf18 100644
+--- a/third-party/pdfjs/web/viewer.js
++++ b/third-party/pdfjs/web/viewer.js
 @@ -3,6 +3,7 @@
   * Javascript code in this page
   *
-  * Copyright 2020 Mozilla Foundation
+  * Copyright 2021 Mozilla Foundation
 + * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -1973,8 +1974,7 @@
+@@ -2244,8 +2245,7 @@ function webViewerInitialized() {
    let file;
    const queryString = document.location.search.substring(1);
    const params = (0, _ui_utils.parseQueryString)(queryString);
@@ -90,13 +240,13 @@ diff -urN web2/viewer.js web/viewer.js
    const fileInput = document.createElement("input");
    fileInput.id = appConfig.openFileInputName;
    fileInput.className = "fileInput";
-@@ -1982,12 +1982,8 @@
+@@ -2253,12 +2253,8 @@ function webViewerInitialized() {
    fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
    document.body.appendChild(fileInput);
  
 -  if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
--    appConfig.toolbar.openFile.setAttribute("hidden", "true");
--    appConfig.secondaryToolbar.openFileButton.setAttribute("hidden", "true");
+-    appConfig.toolbar.openFile.hidden = true;
+-    appConfig.secondaryToolbar.openFileButton.hidden = true;
 -  } else {
 -    fileInput.value = null;
 -  }
@@ -105,7 +255,7 @@ diff -urN web2/viewer.js web/viewer.js
  
    fileInput.addEventListener("change", function (evt) {
      const files = evt.target.files;
-@@ -2049,8 +2045,18 @@
+@@ -2320,8 +2316,18 @@ function webViewerInitialized() {
      }
    }, true);
  
@@ -123,9 +273,9 @@ diff -urN web2/viewer.js web/viewer.js
 +    PDFViewerApplication.open(array);
 +    PDFViewerApplication.setTitleUsingUrl(file_name);
    } catch (reason) {
-     PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
-       PDFViewerApplication.error(msg, reason);
-@@ -6877,6 +6883,8 @@
+     PDFViewerApplication.l10n.get("loading_error").then(msg => {
+       PDFViewerApplication._documentError(msg, reason);
+@@ -6381,6 +6387,8 @@ class PDFHistory {
        }
      }
  
@@ -134,10 +284,10 @@ diff -urN web2/viewer.js web/viewer.js
      if (shouldReplace) {
        window.history.replaceState(newState, "", newUrl);
      } else {
-@@ -13897,4 +13905,4 @@
+@@ -15403,4 +15411,4 @@ if (document.readyState === "interactive" || document.readyState === "complete")
  
- /***/ })
- /******/ ]);
+ /******/ })()
+ ;
 -//# sourceMappingURL=viewer.js.map
-\ Kein Zeilenumbruch am Dateiende.
+\ No newline at end of file
 +//# sourceMappingURL=viewer.js.map
diff --git a/third-party/pdfjs/pdfjs.gresource.xml b/third-party/pdfjs/pdfjs.gresource.xml
index 628505f53..1769fb55c 100644
--- a/third-party/pdfjs/pdfjs.gresource.xml
+++ b/third-party/pdfjs/pdfjs.gresource.xml
@@ -6,9 +6,9 @@
                <file compressed="true">build/pdf.worker.js</file>
                <file compressed="true">web/compressed.tracemonkey-pldi-09.pdf</file>
                <file compressed="true">web/debugger.js</file>
-               <file compressed="true">web/viewer.js</file>
                <file compressed="true">web/viewer.css</file>
                <file compressed="true">web/viewer.html</file>
+               <file compressed="true">web/viewer.js</file>
                <file compressed="true">web/cmaps/78-EUC-H.bcmap</file>
                <file compressed="true">web/cmaps/78-EUC-V.bcmap</file>
                <file compressed="true">web/cmaps/78-H.bcmap</file>
@@ -336,5 +336,25 @@
                <file compressed="true">web/locale/xh/viewer.properties</file>
                <file compressed="true">web/locale/zh-CN/viewer.properties</file>
                <file compressed="true">web/locale/zh-TW/viewer.properties</file>
+               <file compressed="true">web/standard_fonts/FoxitDingbats.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitFixed.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitFixedBold.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitFixedBoldItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitFixedItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSans.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSansBold.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSansBoldItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSansItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSerif.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSerifBold.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSerifBoldItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSerifItalic.pfb</file>
+               <file compressed="true">web/standard_fonts/FoxitSymbol.pfb</file>
+               <file compressed="true">web/standard_fonts/LICENSE_FOXIT</file>
+               <file compressed="true">web/standard_fonts/LICENSE_LIBERATION</file>
+               <file compressed="true">web/standard_fonts/LiberationSans-Bold.ttf</file>
+               <file compressed="true">web/standard_fonts/LiberationSans-BoldItalic.ttf</file>
+               <file compressed="true">web/standard_fonts/LiberationSans-Italic.ttf</file>
+               <file compressed="true">web/standard_fonts/LiberationSans-Regular.ttf</file>
        </gresource>
 </gresources>
diff --git a/third-party/pdfjs/web/debugger.js b/third-party/pdfjs/web/debugger.js
index 6f8b4a9f0..cdf095440 100644
--- a/third-party/pdfjs/web/debugger.js
+++ b/third-party/pdfjs/web/debugger.js
@@ -220,7 +220,7 @@ var StepperManager = (function StepperManagerClosure() {
     },
     selectStepper: function selectStepper(pageIndex, selectPanel) {
       let i;
-      pageIndex = pageIndex | 0;
+      pageIndex |= 0;
       if (selectPanel) {
         this.manager.selectPanel(this);
       }
@@ -357,27 +357,38 @@ const Stepper = (function StepperClosure() {
         let decArgs = args;
         if (fn === "showText") {
           const glyphs = args[0];
-          const newArgs = [];
-          let str = [];
+          const charCodeRow = c("tr");
+          const fontCharRow = c("tr");
+          const unicodeRow = c("tr");
           for (let j = 0; j < glyphs.length; j++) {
             const glyph = glyphs[j];
             if (typeof glyph === "object" && glyph !== null) {
-              str.push(glyph.fontChar);
+              charCodeRow.appendChild(c("td", glyph.originalCharCode));
+              fontCharRow.appendChild(c("td", glyph.fontChar));
+              unicodeRow.appendChild(c("td", glyph.unicode));
             } else {
-              if (str.length > 0) {
-                newArgs.push(str.join(""));
-                str = [];
-              }
-              newArgs.push(glyph); // null or number
+              // null or number
+              const advanceEl = c("td", glyph);
+              advanceEl.classList.add("advance");
+              charCodeRow.appendChild(advanceEl);
+              fontCharRow.appendChild(c("td"));
+              unicodeRow.appendChild(c("td"));
             }
           }
-          if (str.length > 0) {
-            newArgs.push(str.join(""));
-          }
-          decArgs = [newArgs];
+          decArgs = c("td");
+          const table = c("table");
+          table.classList.add("showText");
+          decArgs.appendChild(table);
+          table.appendChild(charCodeRow);
+          table.appendChild(fontCharRow);
+          table.appendChild(unicodeRow);
         }
         line.appendChild(c("td", fn));
-        line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
+        if (decArgs instanceof HTMLElement) {
+          line.appendChild(decArgs);
+        } else {
+          line.appendChild(c("td", JSON.stringify(simplifyArgs(decArgs))));
+        }
       }
       if (operatorsToDisplay < operatorList.fnArray.length) {
         const lastCell = c("td", "...");
diff --git a/third-party/pdfjs/web/locale/ach/viewer.properties 
b/third-party/pdfjs/web/locale/ach/viewer.properties
index 46e36fb7e..947228b76 100644
--- a/third-party/pdfjs/web/locale/ach/viewer.properties
+++ b/third-party/pdfjs/web/locale/ach/viewer.properties
@@ -186,6 +186,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Bal
+
 loading_error=Bal otime kun cano PDF.
 invalid_file_error=Pwail me PDF ma pe atir onyo obale woko.
 missing_file_error=Pwail me PDF tye ka rem.
diff --git a/third-party/pdfjs/web/locale/af/viewer.properties 
b/third-party/pdfjs/web/locale/af/viewer.properties
index c7d6c42b4..787c2727c 100644
--- a/third-party/pdfjs/web/locale/af/viewer.properties
+++ b/third-party/pdfjs/web/locale/af/viewer.properties
@@ -163,6 +163,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Fout
+
 loading_error='n Fout het voorgekom met die laai van die PDF.
 invalid_file_error=Ongeldige of korrupte PDF-lêer.
 missing_file_error=PDF-lêer is weg.
diff --git a/third-party/pdfjs/web/locale/an/viewer.properties 
b/third-party/pdfjs/web/locale/an/viewer.properties
index e33936cde..4086a0a6e 100644
--- a/third-party/pdfjs/web/locale/an/viewer.properties
+++ b/third-party/pdfjs/web/locale/an/viewer.properties
@@ -151,9 +151,10 @@ thumbs_label=Miniaturas
 findbar.title=Trobar en o documento
 findbar_label=Trobar
 
-additional_layers=Capas adicionals
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pachina {{page}}
+
+additional_layers=Capas adicionals
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -227,6 +228,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
+
 loading_error=S'ha produciu una error en cargar o PDF.
 invalid_file_error=O PDF no ye valido u ye estorbau.
 missing_file_error=No i ha fichero PDF.
diff --git a/third-party/pdfjs/web/locale/ar/viewer.properties 
b/third-party/pdfjs/web/locale/ar/viewer.properties
index 7f2af551b..d37c3e12a 100644
--- a/third-party/pdfjs/web/locale/ar/viewer.properties
+++ b/third-party/pdfjs/web/locale/ar/viewer.properties
@@ -151,9 +151,10 @@ thumbs_label=مُصغّرات
 findbar.title=ابحث في المستند
 findbar_label=ابحث
 
-additional_layers=الطبقات الإضافية
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=صفحة {{page}}
+
+additional_layers=الطبقات الإضافية
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=صفحة {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/ast/viewer.properties 
b/third-party/pdfjs/web/locale/ast/viewer.properties
index 2bfda6d5c..6e02489da 100644
--- a/third-party/pdfjs/web/locale/ast/viewer.properties
+++ b/third-party/pdfjs/web/locale/ast/viewer.properties
@@ -127,9 +127,10 @@ thumbs.title=Amosar les miniatures
 thumbs_label=Miniatures
 findbar_label=Atopar
 
-additional_layers=Capes adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Páxina {{page}}
+
+additional_layers=Capes adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Páxina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -209,3 +210,4 @@ password_cancel=Encaboxar
 
 # LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
 # exact string as in the `chrome.properties` file.
+
diff --git a/third-party/pdfjs/web/locale/az/viewer.properties 
b/third-party/pdfjs/web/locale/az/viewer.properties
index 99b94a31c..667dc9fbd 100644
--- a/third-party/pdfjs/web/locale/az/viewer.properties
+++ b/third-party/pdfjs/web/locale/az/viewer.properties
@@ -151,9 +151,10 @@ thumbs_label=Kiçik şəkillər
 findbar.title=Sənəddə Tap
 findbar_label=Tap
 
-additional_layers=Əlavə laylar
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Səhifə {{page}}
+
+additional_layers=Əlavə laylar
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -227,6 +228,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Səhv
+
 loading_error=PDF yüklenərkən bir səhv yarandı.
 invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.
 missing_file_error=PDF fayl yoxdur.
diff --git a/third-party/pdfjs/web/locale/be/viewer.properties 
b/third-party/pdfjs/web/locale/be/viewer.properties
index d3d447974..8728b93b5 100644
--- a/third-party/pdfjs/web/locale/be/viewer.properties
+++ b/third-party/pdfjs/web/locale/be/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Бягучы элемент структуры
 findbar.title=Пошук у дакуменце
 findbar_label=Знайсці
 
-additional_layers=Дадатковыя пласты
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Старонка {{page}}
+
+additional_layers=Дадатковыя пласты
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Старонка {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Скасаваць
 printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам.
 printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання.
 web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Гэты дакумент PDF змяшчае лічбавыя подпісы. Праверка подпісаў не 
падтрымліваецца.
diff --git a/third-party/pdfjs/web/locale/bg/viewer.properties 
b/third-party/pdfjs/web/locale/bg/viewer.properties
index b93e3d1e4..6981eac67 100644
--- a/third-party/pdfjs/web/locale/bg/viewer.properties
+++ b/third-party/pdfjs/web/locale/bg/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Грешка
+
 loading_error=Получи се грешка при зареждане на PDF-а.
 invalid_file_error=Невалиден или повреден PDF файл.
 missing_file_error=Липсващ PDF файл.
diff --git a/third-party/pdfjs/web/locale/bn/viewer.properties 
b/third-party/pdfjs/web/locale/bn/viewer.properties
index c106df10c..ffc5465fc 100644
--- a/third-party/pdfjs/web/locale/bn/viewer.properties
+++ b/third-party/pdfjs/web/locale/bn/viewer.properties
@@ -148,6 +148,7 @@ findbar_label=খুঁজুন
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=পাতা {{page}}
+
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -221,6 +222,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=ত্রুটি
+
 loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
 invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
 missing_file_error=নিখোঁজ PDF ফাইল।
diff --git a/third-party/pdfjs/web/locale/bo/viewer.properties 
b/third-party/pdfjs/web/locale/bo/viewer.properties
index 3ffa84819..981addc28 100644
--- a/third-party/pdfjs/web/locale/bo/viewer.properties
+++ b/third-party/pdfjs/web/locale/bo/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
+
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/br/viewer.properties 
b/third-party/pdfjs/web/locale/br/viewer.properties
index d46d82f4b..043931a72 100644
--- a/third-party/pdfjs/web/locale/br/viewer.properties
+++ b/third-party/pdfjs/web/locale/br/viewer.properties
@@ -144,6 +144,7 @@ document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaa
 document_outline_label=Sinedoù an teuliad
 attachments.title=Diskouez ar c'henstagadurioù
 attachments_label=Kenstagadurioù
+layers.title=Diskouez ar gwiskadoù (daou-glikañ evit adderaouekaat an holl gwiskadoù d'o stad dre ziouer)
 layers_label=Gwiskadoù
 thumbs.title=Diskouez ar melvennoù
 thumbs_label=Melvennoù
@@ -152,6 +153,10 @@ findbar_label=Klask
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pajenn {{page}}
+
+additional_layers=Gwiskadoù ouzhpenn
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Pajenn {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -225,6 +230,9 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Fazi
+
+# Loading indicator messages
+loading=O kargañ…
 loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.
 invalid_file_error=Restr PDF didalvoudek pe kontronet.
 missing_file_error=Restr PDF o vankout.
diff --git a/third-party/pdfjs/web/locale/brx/viewer.properties 
b/third-party/pdfjs/web/locale/brx/viewer.properties
index cd3656380..6af751aa0 100644
--- a/third-party/pdfjs/web/locale/brx/viewer.properties
+++ b/third-party/pdfjs/web/locale/brx/viewer.properties
@@ -186,6 +186,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=गोरोन्थि
+
 loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय।
 invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल
 missing_file_error=गोमानाय PDF फाइल
diff --git a/third-party/pdfjs/web/locale/bs/viewer.properties 
b/third-party/pdfjs/web/locale/bs/viewer.properties
index e5346cb0c..eb4ee3ce9 100644
--- a/third-party/pdfjs/web/locale/bs/viewer.properties
+++ b/third-party/pdfjs/web/locale/bs/viewer.properties
@@ -180,6 +180,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Greška
+
 loading_error=Došlo je do greške prilikom učitavanja PDF-a.
 invalid_file_error=Neispravan ili oštećen PDF fajl.
 missing_file_error=Nedostaje PDF fajl.
diff --git a/third-party/pdfjs/web/locale/ca/viewer.properties 
b/third-party/pdfjs/web/locale/ca/viewer.properties
index 250298c44..3b3189ef7 100644
--- a/third-party/pdfjs/web/locale/ca/viewer.properties
+++ b/third-party/pdfjs/web/locale/ca/viewer.properties
@@ -153,9 +153,12 @@ current_outline_item_label=Element d'esquema actual
 findbar.title=Cerca al document
 findbar_label=Cerca
 
-additional_layers=Capes addicionals
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pàgina {{page}}
+
+additional_layers=Capes addicionals
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Pàgina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -229,6 +232,9 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
+
+# Loading indicator messages
+loading=S'està carregant…
 loading_error=S'ha produït un error en carregar el PDF.
 invalid_file_error=El fitxer PDF no és vàlid o està malmès.
 missing_file_error=Falta el fitxer PDF.
@@ -251,3 +257,5 @@ password_cancel=Cancel·la
 printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador.
 printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo.
 web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra 
incrustats al PDF.
+# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
+# exact string as in the `chrome.properties` file.
diff --git a/third-party/pdfjs/web/locale/cak/viewer.properties 
b/third-party/pdfjs/web/locale/cak/viewer.properties
index 68fecb486..764ccf81f 100644
--- a/third-party/pdfjs/web/locale/cak/viewer.properties
+++ b/third-party/pdfjs/web/locale/cak/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl
 findbar.title=Tikanöx chupam ri wuj
 findbar_label=Tikanöx
 
-additional_layers=Tz'aqat ta Kuchuj
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Ruxaq {{page}}
+
+additional_layers=Tz'aqat ta Kuchuj
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Ruxaq {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Tiq'at
 printing_not_supported=Rutzijol k'ayewal: Ri rutz'ajb'axik man koch'el ta ronojel pa re okik'amaya'l re'.
 printing_not_ready=Rutzijol k'ayewal: Ri PDF man xusamajij ta ronojel richin nitz'ajb'äx.
 web_fonts_disabled=E chupül ri taq ajk'amaya'l tz'ib': man tikirel ta nokisäx ri taq tz'ib' PDF pa ch'ikenïk
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Re PDF ruk'wan tijital taq jux. Man nuköch' ta ri kijikib'axik taq jux.
diff --git a/third-party/pdfjs/web/locale/ckb/viewer.properties 
b/third-party/pdfjs/web/locale/ckb/viewer.properties
index f70a6a6f3..7be9dd5a2 100644
--- a/third-party/pdfjs/web/locale/ckb/viewer.properties
+++ b/third-party/pdfjs/web/locale/ckb/viewer.properties
@@ -141,9 +141,10 @@ thumbs_label=وێنۆچکە
 findbar.title=لە بەڵگەنامە بگەرێ
 findbar_label=دۆزینەوە
 
-additional_layers=چینی زیاتر
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=پەڕەی {{page}}
+
+additional_layers=چینی زیاتر
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -217,6 +218,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=هەڵە
+
 loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی  PDF.
 invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە.
 missing_file_error=پەڕگەی pdf بوونی نیە.
diff --git a/third-party/pdfjs/web/locale/cs/viewer.properties 
b/third-party/pdfjs/web/locale/cs/viewer.properties
index 7edc3337c..8829097e8 100644
--- a/third-party/pdfjs/web/locale/cs/viewer.properties
+++ b/third-party/pdfjs/web/locale/cs/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktuální položka v osnově
 findbar.title=Najde v dokumentu
 findbar_label=Najít
 
-additional_layers=Další vrstvy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strana {{page}}
+
+additional_layers=Další vrstvy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strana {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Zrušit
 printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován.
 printing_not_ready=Upozornění: Dokument PDF není kompletně načten.
 web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tento dokument typu PDF obsahuje digitální podpisy. Ověřování podpisů není 
podporováno.
diff --git a/third-party/pdfjs/web/locale/cy/viewer.properties 
b/third-party/pdfjs/web/locale/cy/viewer.properties
index 22e97c1fd..e7123fe0b 100644
--- a/third-party/pdfjs/web/locale/cy/viewer.properties
+++ b/third-party/pdfjs/web/locale/cy/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Yr Eitem Amlinellol Gyfredol
 findbar.title=Canfod yn y Ddogfen
 findbar_label=Canfod
 
-additional_layers=Haenau Ychwanegol
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Tudalen {{page}}
+
+additional_layers=Haenau Ychwanegol
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Tudalen {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Diddymu
 printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr.
 printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu.
 web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Mae'r ddogfen PDF hon yn cynnwys llofnodion digidol. Nid yw gwirio llofnodion 
yn cael ei gynnal.
diff --git a/third-party/pdfjs/web/locale/da/viewer.properties 
b/third-party/pdfjs/web/locale/da/viewer.properties
index 85a2c64e7..149a027b4 100644
--- a/third-party/pdfjs/web/locale/da/viewer.properties
+++ b/third-party/pdfjs/web/locale/da/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktuelt dispositions-element
 findbar.title=Find i dokument
 findbar_label=Find
 
-additional_layers=Yderligere lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
+
+additional_layers=Yderligere lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Fortryd
 printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren.
 printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning.
 web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dette PDF-dokument indeholder digitale signaturer. Validering af signaturer 
er ikke understøttet.
diff --git a/third-party/pdfjs/web/locale/de/viewer.properties 
b/third-party/pdfjs/web/locale/de/viewer.properties
index f67a71ec8..89645f482 100644
--- a/third-party/pdfjs/web/locale/de/viewer.properties
+++ b/third-party/pdfjs/web/locale/de/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktuelles Struktur-Element
 findbar.title=Dokument durchsuchen
 findbar_label=Suchen
 
-additional_layers=Zusätzliche Ebenen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Seite {{page}}
+
+additional_layers=Zusätzliche Ebenen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Seite {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Abbrechen
 printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt.
 printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber 
empfohlen.
 web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen 
werden.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dieses PDF-Dokument enthält digitale Unterschriften. Das Überprüfen von 
Unterschriften wird nicht unterstützt.
diff --git a/third-party/pdfjs/web/locale/dsb/viewer.properties 
b/third-party/pdfjs/web/locale/dsb/viewer.properties
index a5e88fd8a..dd131bc6a 100644
--- a/third-party/pdfjs/web/locale/dsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/dsb/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktualny rozrědowański zapisk
 findbar.title=W dokumenśe pytaś
 findbar_label=Pytaś
 
-additional_layers=Dalšne warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Bok {{page}}
+
+additional_layers=Dalšne warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Bok {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Pśetergnuś
 printing_not_supported=Warnowanje: Śišćanje njepódpěra se połnje pśez toś ten wobglědowak.
 printing_not_ready=Warnowanje: PDF njejo se za śišćanje dopołnje zacytał.
 web_fonts_disabled=Webpisma su znjemóžnjone: njejo móžno, zasajźone PDF-pisma wužywaś.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Toś ten PDF-dokument digitalne signatury wopśimujo. Pśeglědowanje signaturow 
se njepódpěra.
diff --git a/third-party/pdfjs/web/locale/el/viewer.properties 
b/third-party/pdfjs/web/locale/el/viewer.properties
index 6766a61c0..3b1b6e201 100644
--- a/third-party/pdfjs/web/locale/el/viewer.properties
+++ b/third-party/pdfjs/web/locale/el/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Τρέχον στοιχείο διάρθρωσης
 findbar.title=Εύρεση στο έγγραφο
 findbar_label=Εύρεση
 
-additional_layers=Επιπρόσθετα επίπεδα
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Σελίδα {{page}}
+
+additional_layers=Επιπρόσθετα επίπεδα
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Σελίδα {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -207,7 +208,7 @@ error_less_info=Λιγότερες πληροφορίες
 error_close=Κλείσιμο
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
+error_version_info=PDF.js v{{version}} (έκδοση: {{build}})
 # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
 # english string describing the error.
 error_message=Μήνυμα: {{message}}
@@ -256,6 +257,3 @@ password_cancel=Ακύρωση
 printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από το πρόγραμμα περιήγησης.
 printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση.
 web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών 
PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Αυτό το έγγραφο PDF περιέχει ψηφιακές υπογραφές. Δεν υποστηρίζεται η 
επαλήθευση υπογραφών.
diff --git a/third-party/pdfjs/web/locale/en-CA/viewer.properties 
b/third-party/pdfjs/web/locale/en-CA/viewer.properties
index 83174ef95..49e5d90c9 100644
--- a/third-party/pdfjs/web/locale/en-CA/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-CA/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
-additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
+
+additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancel
 printing_not_supported=Warning: Printing is not fully supported by this browser.
 printing_not_ready=Warning: The PDF is not fully loaded for printing.
 web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=This PDF document contains digital signatures. Validation of signatures is 
not supported.
diff --git a/third-party/pdfjs/web/locale/en-GB/viewer.properties 
b/third-party/pdfjs/web/locale/en-GB/viewer.properties
index 89dd504e5..1b50cb379 100644
--- a/third-party/pdfjs/web/locale/en-GB/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-GB/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
-additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
+
+additional_layers=Additional Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancel
 printing_not_supported=Warning: Printing is not fully supported by this browser.
 printing_not_ready=Warning: The PDF is not fully loaded for printing.
 web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=This PDF document contains digital signatures. Validation of signatures is 
not supported.
diff --git a/third-party/pdfjs/web/locale/eo/viewer.properties 
b/third-party/pdfjs/web/locale/eo/viewer.properties
index e8a207978..9500e8270 100644
--- a/third-party/pdfjs/web/locale/eo/viewer.properties
+++ b/third-party/pdfjs/web/locale/eo/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Nuna kontura elemento
 findbar.title=Serĉi en dokumento
 findbar_label=Serĉi
 
-additional_layers=Aldonaj tavoloj
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Paĝo {{page}}
+
+additional_layers=Aldonaj tavoloj
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Paĝo {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Nuligi
 printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon.
 printing_not_ready=Averto: la PDF dosiero ne estas plene ŝargita por presado.
 web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tiu ĉi dosiero PDF enhavas ciferecajn subskribojn. La validigo de tiuj 
subskriboj ne estas subtenata.
diff --git a/third-party/pdfjs/web/locale/es-AR/viewer.properties 
b/third-party/pdfjs/web/locale/es-AR/viewer.properties
index 34736c2c9..5e97d6ebc 100644
--- a/third-party/pdfjs/web/locale/es-AR/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-AR/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en documento
 findbar_label=Buscar
 
-additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador.
 printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión.
 web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF tiene firmas digitales. La validación de firmas no está 
soportada.
diff --git a/third-party/pdfjs/web/locale/es-CL/viewer.properties 
b/third-party/pdfjs/web/locale/es-CL/viewer.properties
index 6acbe876c..23669e68d 100644
--- a/third-party/pdfjs/web/locale/es-CL/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-CL/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador.
 printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso.
 web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF contiene firmas digitales. La validación de las firmas no 
es soportada.
diff --git a/third-party/pdfjs/web/locale/es-ES/viewer.properties 
b/third-party/pdfjs/web/locale/es-ES/viewer.properties
index 6345db715..ef8c135ce 100644
--- a/third-party/pdfjs/web/locale/es-ES/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-ES/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Advertencia: Imprimir no está totalmente soportado por este navegador.
 printing_not_ready=Advertencia: Este PDF no se ha cargado completamente para poder imprimirse.
 web_fonts_disabled=Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF contiene firmas digitales. No se admite la validación de 
firmas.
diff --git a/third-party/pdfjs/web/locale/es-MX/viewer.properties 
b/third-party/pdfjs/web/locale/es-MX/viewer.properties
index c39823d36..217b2bfb1 100644
--- a/third-party/pdfjs/web/locale/es-MX/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-MX/viewer.properties
@@ -148,12 +148,17 @@ layers.title=Mostrar capas (doble clic para restablecer todas las capas al estad
 layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
+current_outline_item.title=Buscar elemento de esquema actual
+current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
-additional_layers=Capas adicionales
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Capas adicionales
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -227,6 +232,9 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
+
+# Loading indicator messages
+loading=Cargando…
 loading_error=Un error ocurrió al cargar el PDF.
 invalid_file_error=Archivo PDF invalido o dañado.
 missing_file_error=Archivo PDF no encontrado.
diff --git a/third-party/pdfjs/web/locale/et/viewer.properties 
b/third-party/pdfjs/web/locale/et/viewer.properties
index 97f2c9bd7..cab1ad4ba 100644
--- a/third-party/pdfjs/web/locale/et/viewer.properties
+++ b/third-party/pdfjs/web/locale/et/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Viga
+
 loading_error=PDFi laadimisel esines viga.
 invalid_file_error=Vigane või rikutud PDF-fail.
 missing_file_error=PDF-fail puudub.
diff --git a/third-party/pdfjs/web/locale/eu/viewer.properties 
b/third-party/pdfjs/web/locale/eu/viewer.properties
index f4617a77b..7d73e3ede 100644
--- a/third-party/pdfjs/web/locale/eu/viewer.properties
+++ b/third-party/pdfjs/web/locale/eu/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Uneko eskemaren elementua
 findbar.title=Bilatu dokumentuan
 findbar_label=Bilatu
 
-additional_layers=Geruza gehigarriak
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. orria
+
+additional_layers=Geruza gehigarriak
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. orria
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Utzi
 printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan.
 printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko.
 web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=PDF dokumentu honek sinadura digitalak ditu. Ez dago euskarririk sinaduren 
balidazioa egiteko.
diff --git a/third-party/pdfjs/web/locale/fa/viewer.properties 
b/third-party/pdfjs/web/locale/fa/viewer.properties
index 9886b39d2..00eb8b6e4 100644
--- a/third-party/pdfjs/web/locale/fa/viewer.properties
+++ b/third-party/pdfjs/web/locale/fa/viewer.properties
@@ -202,6 +202,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=خطا
+
 loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد.
 invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد.
 missing_file_error=پرونده PDF یافت نشد.
diff --git a/third-party/pdfjs/web/locale/ff/viewer.properties 
b/third-party/pdfjs/web/locale/ff/viewer.properties
index 0a081021b..eb5ca99be 100644
--- a/third-party/pdfjs/web/locale/ff/viewer.properties
+++ b/third-party/pdfjs/web/locale/ff/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Juumre
+
 loading_error=Juumre waɗii tuma nde loowata PDF oo.
 invalid_file_error=Fiilde PDF moƴƴaani walla jiibii.
 missing_file_error=Fiilde PDF ena ŋakki.
diff --git a/third-party/pdfjs/web/locale/fi/viewer.properties 
b/third-party/pdfjs/web/locale/fi/viewer.properties
index 51d42d6bf..a6d46e1bd 100644
--- a/third-party/pdfjs/web/locale/fi/viewer.properties
+++ b/third-party/pdfjs/web/locale/fi/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Nykyinen sisällyksen kohta
 findbar.title=Etsi dokumentista
 findbar_label=Etsi
 
-additional_layers=Lisätasot
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Sivu {{page}}
+
+additional_layers=Lisätasot
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sivu {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Peruuta
 printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja.
 printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa.
 web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja 
PDF-kirjasinlajeja.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tämä PDF-dokumentti sisältää digitaalisia allekirjoituksia. Digitaalisten 
allekirjoitusten vahvistamista ei tueta.
diff --git a/third-party/pdfjs/web/locale/fr/viewer.properties 
b/third-party/pdfjs/web/locale/fr/viewer.properties
index ed92f3014..addb629ef 100644
--- a/third-party/pdfjs/web/locale/fr/viewer.properties
+++ b/third-party/pdfjs/web/locale/fr/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Élément de plan actuel
 findbar.title=Rechercher dans le document
 findbar_label=Rechercher
 
-additional_layers=Calques additionnels
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
+
+additional_layers=Calques additionnels
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Annuler
 printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur.
 printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer.
 web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ce document PDF contient des signatures numériques. La validation des 
signatures n’est pas prise en charge.
diff --git a/third-party/pdfjs/web/locale/fy-NL/viewer.properties 
b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
index 208ada2df..5fe493450 100644
--- a/third-party/pdfjs/web/locale/fy-NL/viewer.properties
+++ b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktueel item yn ynhâldsopjefte
 findbar.title=Sykje yn dokumint
 findbar_label=Sykje
 
-additional_layers=Oanfoljende lagen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
+
+additional_layers=Oanfoljende lagen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Annulearje
 printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser.
 printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken.
 web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dit PDF-dokumint befettet digitale hantekeningen. Falidaasje fan 
hantekeningen wurdt net stipe.
diff --git a/third-party/pdfjs/web/locale/ga-IE/viewer.properties 
b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
index f606e81b0..07ae1f933 100644
--- a/third-party/pdfjs/web/locale/ga-IE/viewer.properties
+++ b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
@@ -163,6 +163,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Earráid
+
 loading_error=Tharla earráid agus an cháipéis PDF á lódáil.
 invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
 missing_file_error=Comhad PDF ar iarraidh.
diff --git a/third-party/pdfjs/web/locale/gd/viewer.properties 
b/third-party/pdfjs/web/locale/gd/viewer.properties
index bce4dee36..d1e54caa6 100644
--- a/third-party/pdfjs/web/locale/gd/viewer.properties
+++ b/third-party/pdfjs/web/locale/gd/viewer.properties
@@ -138,17 +138,27 @@ print_progress_close=Sguir dheth
 # tooltips)
 toggle_sidebar.title=Toglaich am bàr-taoibh
 toggle_sidebar_notification.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain aig an sgrìobhainn)
+toggle_sidebar_notification2.title=Toglaich am bàr-taoibh (tha oir-loidhne/ceanglachain/breathan aig an 
sgrìobhainn)
 toggle_sidebar_label=Toglaich am bàr-taoibh
 document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a 
leudachadh/a cho-theannadh)
 document_outline_label=Oir-loidhne na sgrìobhainne
 attachments.title=Seall na ceanglachain
 attachments_label=Ceanglachain
+layers.title=Seall na breathan (dèan briogadh dùbailte airson a h-uile breath ath-shuidheachadh dhan staid 
thùsail)
+layers_label=Breathan
 thumbs.title=Seall na dealbhagan
 thumbs_label=Dealbhagan
+current_outline_item.title=Lorg nì làithreach na h-oir-loidhne
+current_outline_item_label=Nì làithreach na h-oir-loidhne
 findbar.title=Lorg san sgrìobhainn
 findbar_label=Lorg
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=Duilleag {{page}}
+
+additional_layers=Barrachd breathan
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=Duilleag {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -222,6 +232,9 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Mearachd
+
+# Loading indicator messages
+loading=’Ga luchdadh…
 loading_error=Thachair mearachd rè luchdadh a' PDF.
 invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte.
 missing_file_error=Faidhle PDF a tha a dhìth.
@@ -229,6 +242,7 @@ unexpected_response_error=Freagairt on fhrithealaiche ris nach robh dùil.
 
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
+annotation_date_string={{date}}, {{time}}
 
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
diff --git a/third-party/pdfjs/web/locale/gl/viewer.properties 
b/third-party/pdfjs/web/locale/gl/viewer.properties
index 2b05ce412..efbabc0da 100644
--- a/third-party/pdfjs/web/locale/gl/viewer.properties
+++ b/third-party/pdfjs/web/locale/gl/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Elemento delimitado actualmente
 findbar.title=Atopar no documento
 findbar_label=Atopar
 
-additional_layers=Capas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Páxina {{page}}
+
+additional_layers=Capas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Páxina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador.
 printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse.
 web_fonts_disabled=Desactiváronse as fontes web:  foi imposíbel usar as fontes incrustadas no PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF contén sinaturas dixitais. Non é posíbel validar as 
sinaturas.
diff --git a/third-party/pdfjs/web/locale/gn/viewer.properties 
b/third-party/pdfjs/web/locale/gn/viewer.properties
index afd6d7030..301698028 100644
--- a/third-party/pdfjs/web/locale/gn/viewer.properties
+++ b/third-party/pdfjs/web/locale/gn/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Mba’epuru ag̃aguaitéva
 findbar.title=Kuatiápe jeheka
 findbar_label=Juhu
 
-additional_layers=Ñuãha moirũguáva
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Kuatiarogue {{page}}
+
+additional_layers=Ñuãha moirũguáva
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Kuatiarogue {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Heja
 printing_not_supported=Kyhyjerã: Ñembokuatia ndojokupytypái ko kundahára ndive.
 printing_not_ready=Kyhyjerã: Ko PDF nahenyhẽmbái oñembokuatia hag̃uáicha.
 web_fonts_disabled=Ñanduti taity oñemongéma: ndaikatumo’ãi eipuru PDF jehai’íva taity.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ko PDF kuatiaite oreko mboheraguapy ñandutigua. Noñemoneĩri ñemboheraguapy.
diff --git a/third-party/pdfjs/web/locale/gu-IN/viewer.properties 
b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
index 579c068d9..d1b7040be 100644
--- a/third-party/pdfjs/web/locale/gu-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=ભૂલ
+
 loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.
 invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.
 missing_file_error=ગુમ થયેલ PDF ફાઇલ.
diff --git a/third-party/pdfjs/web/locale/he/viewer.properties 
b/third-party/pdfjs/web/locale/he/viewer.properties
index 070cf37ee..0ed86b7cf 100644
--- a/third-party/pdfjs/web/locale/he/viewer.properties
+++ b/third-party/pdfjs/web/locale/he/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=פריט תוכן העניינים הנוכחי
 findbar.title=חיפוש במסמך
 findbar_label=חיפוש
 
-additional_layers=שכבות נוספות
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=עמוד {{page}}
+
+additional_layers=שכבות נוספות
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=עמוד {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=ביטול
 printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה.
 printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה.
 web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=מסמך PDF זה מכיל חתימות דיגיטליות. אימות חתימות אינו נתמך.
diff --git a/third-party/pdfjs/web/locale/hi-IN/viewer.properties 
b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
index 6a49a9a98..e69c9df69 100644
--- a/third-party/pdfjs/web/locale/hi-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
@@ -146,6 +146,7 @@ findbar_label=ढूँढें
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=पृष्ठ {{page}}
+
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -219,6 +220,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=त्रुटि
+
 loading_error=PDF लोड करते समय एक त्रुटि हुई.
 invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.
 missing_file_error=\u0020अनुपस्थित PDF फ़ाइल.
diff --git a/third-party/pdfjs/web/locale/hr/viewer.properties 
b/third-party/pdfjs/web/locale/hr/viewer.properties
index 881f37f83..53f1edfbf 100644
--- a/third-party/pdfjs/web/locale/hr/viewer.properties
+++ b/third-party/pdfjs/web/locale/hr/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Trenutačni element strukture
 findbar.title=Pronađi u dokumentu
 findbar_label=Pronađi
 
-additional_layers=Dodatni slojevi
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Stranica br. {{page}}
+
+additional_layers=Dodatni slojevi
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Stranica {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Odustani
 printing_not_supported=Upozorenje: Ovaj preglednik ne podržava u potpunosti ispisivanje.
 printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis.
 web_fonts_disabled=Web fontovi su deaktivirani: nije moguće koristiti ugrađene PDF fontove.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ovaj PDF dokument sadrži digitalne potpise. Provjera potpisa nije podržana.
diff --git a/third-party/pdfjs/web/locale/hsb/viewer.properties 
b/third-party/pdfjs/web/locale/hsb/viewer.properties
index 3ff8057be..3c692f690 100644
--- a/third-party/pdfjs/web/locale/hsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/hsb/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktualny rozrjadowy zapisk
 findbar.title=W dokumenće pytać
 findbar_label=Pytać
 
-additional_layers=Dalše woršty
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strona {{page}}
+
+additional_layers=Dalše woršty
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strona {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Přetorhnyć
 printing_not_supported=Warnowanje: Ćišćenje so přez tutón wobhladowak połnje njepodpěruje.
 printing_not_ready=Warnowanje: PDF njeje so za ćišćenje dospołnje začitał.
 web_fonts_disabled=Webpisma su znjemóžnjene: njeje móžno, zasadźene PDF-pisma wužiwać.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tutón PDF-dokument digitalne signatury wobsahuje. Přepruwowanje signaturow so 
njepodpěruje.
diff --git a/third-party/pdfjs/web/locale/hu/viewer.properties 
b/third-party/pdfjs/web/locale/hu/viewer.properties
index f6ed69f9f..99cd45755 100644
--- a/third-party/pdfjs/web/locale/hu/viewer.properties
+++ b/third-party/pdfjs/web/locale/hu/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Jelenlegi vázlatelem
 findbar.title=Keresés a dokumentumban
 findbar_label=Keresés
 
-additional_layers=További rétegek
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. oldal
+
+additional_layers=További rétegek
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. oldal
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Mégse
 printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást.
 printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz.
 web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ez a PDF-dokumentum digitális aláírásokat tartalmaz. Az aláírások ellenőrzése 
nem támogatott.
diff --git a/third-party/pdfjs/web/locale/hy-AM/viewer.properties 
b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
index 09394f7d8..2b3f0356d 100644
--- a/third-party/pdfjs/web/locale/hy-AM/viewer.properties
+++ b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
@@ -150,6 +150,7 @@ findbar_label=Որոնում
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Էջ {{page}}
+
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -223,6 +224,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Սխալ
+
 loading_error=Սխալ՝ PDF ֆայլը բացելիս։
 invalid_file_error=Սխալ կամ վնասված PDF ֆայլ:
 missing_file_error=PDF ֆայլը բացակայում է:
diff --git a/third-party/pdfjs/web/locale/hye/viewer.properties 
b/third-party/pdfjs/web/locale/hye/viewer.properties
index 738b124f3..7bbfe1422 100644
--- a/third-party/pdfjs/web/locale/hye/viewer.properties
+++ b/third-party/pdfjs/web/locale/hye/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Ընթացիկ գծագրման տարր
 findbar.title=Գտնել փաստաթղթում
 findbar_label=Որոնում
 
-additional_layers=Լրացուցիչ շերտեր
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Էջ {{page}}
+
+additional_layers=Լրացուցիչ շերտեր
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -229,6 +230,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Սխալ
+
 loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։
 invalid_file_error=Սխալ կամ վնասուած PDF նիշք։
 missing_file_error=PDF նիշքը բացակաիւմ է։
diff --git a/third-party/pdfjs/web/locale/ia/viewer.properties 
b/third-party/pdfjs/web/locale/ia/viewer.properties
index 04318fdb9..4ae9850e6 100644
--- a/third-party/pdfjs/web/locale/ia/viewer.properties
+++ b/third-party/pdfjs/web/locale/ia/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Elemento de structura actual
 findbar.title=Cercar in le documento
 findbar_label=Cercar
 
-additional_layers=Altere stratos
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
+
+additional_layers=Altere stratos
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancellar
 printing_not_supported=Attention : le impression non es totalmente supportate per ce navigator.
 printing_not_ready=Attention: le file PDF non es integremente cargate pro lo poter imprimer.
 web_fonts_disabled=Le typos de litteras web es disactivate: impossibile usar le typos de litteras PDF 
incorporate.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Iste documento PDF contine signaturas digital. Le validation de signaturas 
non es supportate.
diff --git a/third-party/pdfjs/web/locale/id/viewer.properties 
b/third-party/pdfjs/web/locale/id/viewer.properties
index 3d3c7b086..2bdc8d566 100644
--- a/third-party/pdfjs/web/locale/id/viewer.properties
+++ b/third-party/pdfjs/web/locale/id/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Butir Ikhtisar Saat Ini
 findbar.title=Temukan di Dokumen
 findbar_label=Temukan
 
-additional_layers=Lapisan Tambahan
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Laman {{page}}
+
+additional_layers=Lapisan Tambahan
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Halaman {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Batal
 printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini.
 printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak.
 web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dokumen PDF ini mengandung tanda tangan digital. Validasi tanda tangan tidak 
didukung.
diff --git a/third-party/pdfjs/web/locale/is/viewer.properties 
b/third-party/pdfjs/web/locale/is/viewer.properties
index 72dc8acd6..5fb4b0196 100644
--- a/third-party/pdfjs/web/locale/is/viewer.properties
+++ b/third-party/pdfjs/web/locale/is/viewer.properties
@@ -218,6 +218,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Villa
+
 loading_error=Villa kom upp við að hlaða inn PDF.
 invalid_file_error=Ógild eða skemmd PDF skrá.
 missing_file_error=Vantar PDF skrá.
diff --git a/third-party/pdfjs/web/locale/it/viewer.properties 
b/third-party/pdfjs/web/locale/it/viewer.properties
index cd1296720..325f697c9 100644
--- a/third-party/pdfjs/web/locale/it/viewer.properties
+++ b/third-party/pdfjs/web/locale/it/viewer.properties
@@ -129,8 +129,9 @@ current_outline_item_label = Elemento struttura corrente
 findbar.title = Trova nel documento
 findbar_label = Trova
 
-additional_layers = Livelli aggiuntivi
 page_canvas = Pagina {{page}}
+
+additional_layers = Livelli aggiuntivi
 page_landmark = Pagina {{page}}
 thumb_page_title = Pagina {{page}}
 thumb_page_canvas = Miniatura della pagina {{page}}
@@ -178,6 +179,7 @@ page_scale_actual = Dimensioni effettive
 page_scale_percent = {{scale}}%
 
 loading_error_indicator = Errore
+
 loading = Caricamento in corso…
 loading_error = Si è verificato un errore durante il caricamento del PDF.
 invalid_file_error = File PDF non valido o danneggiato.
@@ -195,4 +197,3 @@ password_cancel = Annulla
 printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser.
 printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa.
 web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel 
PDF.
-unsupported_feature_signatures = Questo documento PDF include firme digitali. La convalida delle firme non è 
supportata.
diff --git a/third-party/pdfjs/web/locale/ja/viewer.properties 
b/third-party/pdfjs/web/locale/ja/viewer.properties
index b335aac9e..ac51fa7e7 100644
--- a/third-party/pdfjs/web/locale/ja/viewer.properties
+++ b/third-party/pdfjs/web/locale/ja/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=現在のアウトライン項目
 findbar.title=文書内を検索します
 findbar_label=検索
 
-additional_layers=追加レイヤー
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} ページ
+
+additional_layers=追加レイヤー
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}} ページ
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/ka/viewer.properties 
b/third-party/pdfjs/web/locale/ka/viewer.properties
index 023f5ec86..d6c32e8c2 100644
--- a/third-party/pdfjs/web/locale/ka/viewer.properties
+++ b/third-party/pdfjs/web/locale/ka/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=მიმდინარე გვერდი სა
 findbar.title=პოვნა დოკუმენტში
 findbar_label=ძიება
 
-additional_layers=დამატებითი ფენები
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=გვერდი {{page}}
+
+additional_layers=დამატებითი ფენები
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=გვერდი {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=გაუქმება
 printing_not_supported=გაფრთხილება: ამობეჭდვა ამ ბრაუზერში არაა სრულად მხარდაჭერილი.
 printing_not_ready=გაფრთხილება: PDF სრულად ჩატვირთული არაა, ამობეჭდვის დასაწყებად.
 web_fonts_disabled=ვებშრიფტები გამორთულია: ჩაშენებული PDF-შრიფტების გამოყენება ვერ ხერხდება.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=ეს PDF შეიცავს ციფრულ ხელმოწერებს. ხელმოწერების დამოწმება არაა მხარდაჭერილი.
diff --git a/third-party/pdfjs/web/locale/kab/viewer.properties 
b/third-party/pdfjs/web/locale/kab/viewer.properties
index 10632bad6..a145dae07 100644
--- a/third-party/pdfjs/web/locale/kab/viewer.properties
+++ b/third-party/pdfjs/web/locale/kab/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aferdis n uɣawas amiran
 findbar.title=Nadi deg isemli
 findbar_label=Nadi
 
-additional_layers=Tissiwin-nniḍen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Asebter {{page}}
+
+additional_layers=Tissiwin-nniḍen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Asebter {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/kk/viewer.properties 
b/third-party/pdfjs/web/locale/kk/viewer.properties
index 10f130fe1..de41d9d4f 100644
--- a/third-party/pdfjs/web/locale/kk/viewer.properties
+++ b/third-party/pdfjs/web/locale/kk/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Құрылымның ағымдағы элемент
 findbar.title=Құжаттан табу
 findbar_label=Табу
 
-additional_layers=Қосымша қабаттар
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Бет {{page}}
+
+additional_layers=Қосымша қабаттар
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Бет {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Бас тарту
 printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды.
 printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады.
 web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Бұл PDF құжатында цифрлық қолтаңбалар бар. Қолтаңбаларды растауға әлі қолдау 
жоқ.
diff --git a/third-party/pdfjs/web/locale/km/viewer.properties 
b/third-party/pdfjs/web/locale/km/viewer.properties
index 109de4b16..cce6a81ae 100644
--- a/third-party/pdfjs/web/locale/km/viewer.properties
+++ b/third-party/pdfjs/web/locale/km/viewer.properties
@@ -193,6 +193,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=កំហុស
+
 loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។
 invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។
 missing_file_error=បាត់​ឯកសារ PDF
diff --git a/third-party/pdfjs/web/locale/kn/viewer.properties 
b/third-party/pdfjs/web/locale/kn/viewer.properties
index b37a71c2e..19f23b5b8 100644
--- a/third-party/pdfjs/web/locale/kn/viewer.properties
+++ b/third-party/pdfjs/web/locale/kn/viewer.properties
@@ -172,6 +172,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=ದೋಷ
+
 loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.
 invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ.
 missing_file_error=PDF ಕಡತ ಇಲ್ಲ.
diff --git a/third-party/pdfjs/web/locale/ko/viewer.properties 
b/third-party/pdfjs/web/locale/ko/viewer.properties
index 9fcfbd411..33172673a 100644
--- a/third-party/pdfjs/web/locale/ko/viewer.properties
+++ b/third-party/pdfjs/web/locale/ko/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=현재 아웃라인 항목
 findbar.title=검색
 findbar_label=검색
 
-additional_layers=추가 레이어
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} 페이지
+
+additional_layers=추가 레이어
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}} 페이지
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=취소
 printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다.
 printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다.
 web_fonts_disabled=웹 폰트가 비활성화됨: 내장된 PDF 글꼴을 사용할 수 없습니다.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=이 PDF 문서에는 디지털 서명이 포함되어 있습니다. 서명 유효성 검사는 지원되지 않습니다.
diff --git a/third-party/pdfjs/web/locale/lij/viewer.properties 
b/third-party/pdfjs/web/locale/lij/viewer.properties
index 0cfa7d27f..c1d8757a8 100644
--- a/third-party/pdfjs/web/locale/lij/viewer.properties
+++ b/third-party/pdfjs/web/locale/lij/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Erô
+
 loading_error=S'é verificou 'n'erô itno caregamento do PDF.
 invalid_file_error=O schedaio PDF o l'é no valido ò aroinou.
 missing_file_error=O schedaio PDF o no gh'é.
diff --git a/third-party/pdfjs/web/locale/lo/viewer.properties 
b/third-party/pdfjs/web/locale/lo/viewer.properties
index 00d3309c0..d21a687fa 100644
--- a/third-party/pdfjs/web/locale/lo/viewer.properties
+++ b/third-party/pdfjs/web/locale/lo/viewer.properties
@@ -140,6 +140,7 @@ rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະ
 
 # Loading indicator messages
 loading_error_indicator=ຂໍ້ຜິດພາດ
+
 loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF.
 invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ.
 
diff --git a/third-party/pdfjs/web/locale/lt/viewer.properties 
b/third-party/pdfjs/web/locale/lt/viewer.properties
index 9a7b15ae7..78158fd3a 100644
--- a/third-party/pdfjs/web/locale/lt/viewer.properties
+++ b/third-party/pdfjs/web/locale/lt/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Dabartinis struktūros elementas
 findbar.title=Ieškoti dokumente
 findbar_label=Rasti
 
-additional_layers=Papildomi sluoksniai
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}} puslapis
+
+additional_layers=Papildomi sluoksniai
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}} puslapis
 # Thumbnails panel item (tooltip and alt text for images)
diff --git a/third-party/pdfjs/web/locale/ltg/viewer.properties 
b/third-party/pdfjs/web/locale/ltg/viewer.properties
index 4fffa864d..277aab56c 100644
--- a/third-party/pdfjs/web/locale/ltg/viewer.properties
+++ b/third-party/pdfjs/web/locale/ltg/viewer.properties
@@ -199,6 +199,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Klaida
+
 loading_error=Īluodejūt PDF nūtyka klaida.
 invalid_file_error=Nadereigs voi būjuots PDF fails.
 missing_file_error=PDF fails nav atrosts.
diff --git a/third-party/pdfjs/web/locale/lv/viewer.properties 
b/third-party/pdfjs/web/locale/lv/viewer.properties
index b6d6ad38f..d6f89984d 100644
--- a/third-party/pdfjs/web/locale/lv/viewer.properties
+++ b/third-party/pdfjs/web/locale/lv/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Kļūda
+
 loading_error=Ielādējot PDF notika kļūda.
 invalid_file_error=Nederīgs vai bojāts PDF fails.
 missing_file_error=PDF fails nav atrasts.
diff --git a/third-party/pdfjs/web/locale/mk/viewer.properties 
b/third-party/pdfjs/web/locale/mk/viewer.properties
index c1b091ed6..b6bb2f11b 100644
--- a/third-party/pdfjs/web/locale/mk/viewer.properties
+++ b/third-party/pdfjs/web/locale/mk/viewer.properties
@@ -129,6 +129,7 @@ page_scale_actual=Вистинска големина
 
 # Loading indicator messages
 loading_error_indicator=Грешка
+
 loading_error=Настана грешка при вчитувањето на PDF-от.
 invalid_file_error=Невалидна или корумпирана PDF датотека.
 missing_file_error=Недостасува PDF документ.
diff --git a/third-party/pdfjs/web/locale/mr/viewer.properties 
b/third-party/pdfjs/web/locale/mr/viewer.properties
index b33646f51..0b2bd93bc 100644
--- a/third-party/pdfjs/web/locale/mr/viewer.properties
+++ b/third-party/pdfjs/web/locale/mr/viewer.properties
@@ -213,6 +213,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=त्रुटी
+
 loading_error=PDF लोड करतेवेळी त्रुटी आढळली.
 invalid_file_error=अवैध किंवा दोषीत PDF फाइल.
 missing_file_error=न आढळणारी PDF फाइल.
diff --git a/third-party/pdfjs/web/locale/ms/viewer.properties 
b/third-party/pdfjs/web/locale/ms/viewer.properties
index 61f155397..6ca482beb 100644
--- a/third-party/pdfjs/web/locale/ms/viewer.properties
+++ b/third-party/pdfjs/web/locale/ms/viewer.properties
@@ -221,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Ralat
+
 loading_error=Masalah berlaku semasa menuatkan sebuah PDF.
 invalid_file_error=Tidak sah atau fail PDF rosak.
 missing_file_error=Fail PDF Hilang.
diff --git a/third-party/pdfjs/web/locale/my/viewer.properties 
b/third-party/pdfjs/web/locale/my/viewer.properties
index 3e6f2c305..7fc26092f 100644
--- a/third-party/pdfjs/web/locale/my/viewer.properties
+++ b/third-party/pdfjs/web/locale/my/viewer.properties
@@ -177,6 +177,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=အမှား
+
 loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။
 invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင်
 missing_file_error=PDF ပျောက်ဆုံး
diff --git a/third-party/pdfjs/web/locale/nb-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
index 8fca292e5..3555c04b6 100644
--- a/third-party/pdfjs/web/locale/nb-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Gjeldende disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
-additional_layers=Ytterligere lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
+
+additional_layers=Ytterligere lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Avbryt
 printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren.
 printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift.
 web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dette PDF-dokumentet inneholder digitale signaturer. Validering av signaturer 
støttes ikke.
diff --git a/third-party/pdfjs/web/locale/ne-NP/viewer.properties 
b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
index 3bf8ed8f3..4232c56a6 100644
--- a/third-party/pdfjs/web/locale/ne-NP/viewer.properties
+++ b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
@@ -163,6 +163,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=त्रुटि
+
 loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो।
 invalid_file_error=अवैध वा दुषित PDF फाइल।
 missing_file_error=हराईरहेको PDF फाइल।
diff --git a/third-party/pdfjs/web/locale/nl/viewer.properties 
b/third-party/pdfjs/web/locale/nl/viewer.properties
index 93813b75c..fd19d6c81 100644
--- a/third-party/pdfjs/web/locale/nl/viewer.properties
+++ b/third-party/pdfjs/web/locale/nl/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Huidig item in inhoudsopgave
 findbar.title=Zoeken in document
 findbar_label=Zoeken
 
-additional_layers=Aanvullende lagen
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
+
+additional_layers=Aanvullende lagen
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Annuleren
 printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser.
 printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken.
 web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dit pdf-document bevat digitale handtekeningen. Validatie van handtekeningen 
wordt niet ondersteund.
diff --git a/third-party/pdfjs/web/locale/nn-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
index d940050be..0e228c31c 100644
--- a/third-party/pdfjs/web/locale/nn-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Gjeldande disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
-additional_layers=Ytterlegare lag
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Side {{page}}
+
+additional_layers=Ytterlegare lag
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Side {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Avbryt
 printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren.
 printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift.
 web_fonts_disabled=Web-skrifter er slått av: Kan ikkje bruke innbundne PDF-skrifter.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Dette PDF-dokumentet inneheld digitale signaturar. Validering av signaturar 
er ikkje støtta.
diff --git a/third-party/pdfjs/web/locale/oc/viewer.properties 
b/third-party/pdfjs/web/locale/oc/viewer.properties
index 377ee9b98..80348ab8d 100644
--- a/third-party/pdfjs/web/locale/oc/viewer.properties
+++ b/third-party/pdfjs/web/locale/oc/viewer.properties
@@ -185,21 +185,21 @@ find_reached_bottom=Bas de la pagina atench, perseguida al començament
 # index of the currently active find result, respectively a number representing
 # the total number of matches in the document.
 find_match_count={[ plural(total) ]}
-find_match_count[one]=Occuréncia {{current}} sus {{total}}
-find_match_count[two]=Occuréncia {{current}} sus {{total}}
-find_match_count[few]=Occuréncia {{current}} sus {{total}}
-find_match_count[many]=Occuréncia {{current}} sus {{total}}
-find_match_count[other]=Occuréncia {{current}} sus {{total}}
+find_match_count[one]=Ocuréncia {{current}} sus {{total}}
+find_match_count[two]=Ocuréncia {{current}} sus {{total}}
+find_match_count[few]=Ocuréncia {{current}} sus {{total}}
+find_match_count[many]=Ocuréncia {{current}} sus {{total}}
+find_match_count[other]=Ocuréncia {{current}} sus {{total}}
 # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
 # [zero|one|two|few|many|other], with [other] as the default value.
 # "{{limit}}" will be replaced by a numerical value.
 find_match_count_limit={[ plural(limit) ]}
-find_match_count_limit[zero]=Mai de {{limit}} occuréncias
-find_match_count_limit[one]=Mai de {{limit}} occuréncia
-find_match_count_limit[two]=Mai de {{limit}} occuréncias
-find_match_count_limit[few]=Mai de {{limit}} occuréncias
-find_match_count_limit[many]=Mai de {{limit}} occuréncias
-find_match_count_limit[other]=Mai de {{limit}} occuréncias
+find_match_count_limit[zero]=Mai de {{limit}} ocuréncias
+find_match_count_limit[one]=Mai de {{limit}} ocuréncia
+find_match_count_limit[two]=Mai de {{limit}} ocuréncias
+find_match_count_limit[few]=Mai de {{limit}} ocuréncias
+find_match_count_limit[many]=Mai de {{limit}} ocuréncias
+find_match_count_limit[other]=Mai de {{limit}} ocuréncias
 find_not_found=Frasa pas trobada
 
 # Error panel labels
@@ -257,6 +257,3 @@ password_cancel=Anullar
 printing_not_supported=Atencion : l'impression es pas completament gerida per aqueste navegador.
 printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir.
 web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Aqueste document PDF conten de signaturas numericas. La validacion de 
signaturas es pas presa en carga.
diff --git a/third-party/pdfjs/web/locale/pa-IN/viewer.properties 
b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
index de8080146..010db9942 100644
--- a/third-party/pdfjs/web/locale/pa-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼
 findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
 findbar_label=ਲੱਭੋ
 
-additional_layers=ਵਾਧੂ ਪਰਤਾਂ
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=ਸਫ਼ਾ {{page}}
+
+additional_layers=ਵਾਧੂ ਪਰਤਾਂ
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=ਸਫ਼ਾ {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=ਰੱਦ ਕਰੋ
 printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।
 printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ।
 web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=ਇਹ PDF ਦਸਤਾਵੇਜ਼ ਡਿਜ਼ਿਟਲ ਦਸਤਖਤ ਰੱਖਦਾ ਹੈ। ਦਸਤਖਤਾਂ ਦੀ ਪ੍ਰਮਾਣਕਿਤਾ ਸਹਾਇਕ ਨਹੀ ਹੈ।
diff --git a/third-party/pdfjs/web/locale/pl/viewer.properties 
b/third-party/pdfjs/web/locale/pl/viewer.properties
index 457df1b09..83be380af 100644
--- a/third-party/pdfjs/web/locale/pl/viewer.properties
+++ b/third-party/pdfjs/web/locale/pl/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Bieżący element konspektu
 findbar.title=Znajdź w dokumencie
 findbar_label=Znajdź
 
-additional_layers=Dodatkowe warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas={{page}}. strona
+
+additional_layers=Dodatkowe warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark={{page}}. strona
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Anuluj
 printing_not_supported=Ostrzeżenie: drukowanie nie jest w pełni obsługiwane przez tę przeglądarkę.
 printing_not_ready=Ostrzeżenie: dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować.
 web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ten dokument PDF zawiera podpisy cyfrowe. Weryfikacja podpisów nie jest 
obsługiwana.
diff --git a/third-party/pdfjs/web/locale/pt-BR/viewer.properties 
b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
index 788ed3f0d..8a0884da8 100644
--- a/third-party/pdfjs/web/locale/pt-BR/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Item atual da estrutura
 findbar.title=Procurar no documento
 findbar_label=Procurar
 
-additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador.
 printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão.
 web_fonts_disabled=As fontes web estão desativadas: não foi possível usar fontes incorporadas do PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF contém assinaturas digitais. A validação de assinaturas 
não é suportada.
diff --git a/third-party/pdfjs/web/locale/pt-PT/viewer.properties 
b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
index b5122ce8a..1a5e60df9 100644
--- a/third-party/pdfjs/web/locale/pt-PT/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Item atualmente destacado
 findbar.title=Localizar em documento
 findbar_label=Localizar
 
-additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Página {{page}}
+
+additional_layers=Camadas adicionais
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Página {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Cancelar
 printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador.
 printing_not_ready=Aviso: o PDF ainda não está totalmente carregado.
 web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF 
embutidos.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Este documento PDF contém assinaturas digitais. A validação de assinaturas 
não é suportada.
diff --git a/third-party/pdfjs/web/locale/rm/viewer.properties 
b/third-party/pdfjs/web/locale/rm/viewer.properties
index 246511751..fc4a9e112 100644
--- a/third-party/pdfjs/web/locale/rm/viewer.properties
+++ b/third-party/pdfjs/web/locale/rm/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Element da structura actual
 findbar.title=Tschertgar en il document
 findbar_label=Tschertgar
 
-additional_layers=Nivels supplementars
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
+
+additional_layers=Nivels supplementars
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Pagina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Interrumper
 printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur.
 printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar.
 web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en 
il PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Quest document PDF cuntegna signaturas digitalas. La validaziun da signaturas 
na vegn betg sustegnida.
diff --git a/third-party/pdfjs/web/locale/ro/viewer.properties 
b/third-party/pdfjs/web/locale/ro/viewer.properties
index 0e4fbf70e..2e580f0d3 100644
--- a/third-party/pdfjs/web/locale/ro/viewer.properties
+++ b/third-party/pdfjs/web/locale/ro/viewer.properties
@@ -150,6 +150,7 @@ findbar_label=Caută
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pagina {{page}}
+
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -223,6 +224,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Eroare
+
 loading_error=A intervenit o eroare la încărcarea PDF-ului.
 invalid_file_error=Fișier PDF nevalid sau corupt.
 missing_file_error=Fișier PDF lipsă.
diff --git a/third-party/pdfjs/web/locale/ru/viewer.properties 
b/third-party/pdfjs/web/locale/ru/viewer.properties
index f929897ec..402e0e5c3 100644
--- a/third-party/pdfjs/web/locale/ru/viewer.properties
+++ b/third-party/pdfjs/web/locale/ru/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Текущий элемент структуры
 findbar.title=Найти в документе
 findbar_label=Найти
 
-additional_layers=Дополнительные слои
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Страница {{page}}
+
+additional_layers=Дополнительные слои
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Страница {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Отмена
 printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать.
 printing_not_ready=Предупреждение: PDF не полностью загружен для печати.
 web_fonts_disabled=Веб-шрифты отключены: не удалось задействовать встроенные PDF-шрифты.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Этот документ PDF содержит цифровые подписи. Проверка подписей не 
поддерживается.
diff --git a/third-party/pdfjs/web/locale/sco/viewer.properties 
b/third-party/pdfjs/web/locale/sco/viewer.properties
index ef73c90f4..d101f28fb 100644
--- a/third-party/pdfjs/web/locale/sco/viewer.properties
+++ b/third-party/pdfjs/web/locale/sco/viewer.properties
@@ -14,7 +14,9 @@
 
 # Main toolbar buttons (tooltips and alt text for images)
 previous.title=Page Afore
+previous_label=Previous
 next.title=Page Efter
+next_label=Neist
 
 # LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
 page.title=Page
@@ -31,20 +33,56 @@ zoom_out_label=Zoom Oot
 zoom_in.title=Zoom In
 zoom_in_label=Zoom In
 zoom.title=Zoom
+presentation_mode.title=Flit tae Presentation Mode
+presentation_mode_label=Presentation Mode
 open_file.title=Open File
 open_file_label=Open
 print.title=Prent
 print_label=Prent
 download.title=Doonload
 download_label=Doonload
+bookmark.title=View the noo (copy or open in new windae)
+bookmark_label=View The Noo
 
 # Secondary toolbar and context menu
 tools.title=Tools
+tools_label=Tools
+first_page.title=Gang tae First Page
+first_page.label=Gang tae First Page
+first_page_label=Gang tae First Page
+last_page.title=Gang tae Lest Page
+last_page.label=Gang tae Lest Page
+last_page_label=Gang tae Lest Page
+page_rotate_cw.title=Rotate Clockwise
+page_rotate_cw.label=Rotate Clockwise
+page_rotate_cw_label=Rotate Clockwise
+page_rotate_ccw.title=Rotate Coonterclockwise
+page_rotate_ccw.label=Rotate Coonterclockwise
+page_rotate_ccw_label=Rotate Coonterclockwise
 
+cursor_text_select_tool.title=Enable Text Walin Tool
+cursor_text_select_tool_label=Text Walin Tool
+cursor_hand_tool.title=Enable Haun Tool
+cursor_hand_tool_label=Haun Tool
 
+scroll_vertical.title=Yaise Vertical Scrollin
+scroll_vertical_label=Vertical Scrollin
+scroll_horizontal.title=Yaise Horizontal Scrollin
+scroll_horizontal_label=Horizontal Scrollin
+scroll_wrapped.title=Yaise Wrapped Scrollin
+scroll_wrapped_label=Wrapped Scrollin
 
+spread_none.title=Dinnae jyn page spreids
+spread_none_label=Nae Spreids
+spread_odd.title=Jyn page spreids stertin wi odd-numbered pages
+spread_odd_label=Odd Spreids
+spread_even.title=Jyn page spreids stertin wi even-numbered pages
+spread_even_label=Even Spreids
 
 # Document properties dialog box
+document_properties.title=Document Properties…
+document_properties_label=Document Properties…
+document_properties_file_name=File nemme:
 document_properties_file_size=File size:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in kilobytes, respectively in bytes.
@@ -52,11 +90,19 @@ document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
 # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
 document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Title:
+document_properties_author=Author:
+document_properties_subject=Subjeck:
 document_properties_keywords=Keywirds:
+document_properties_creation_date=Date o Makkin:
+document_properties_modification_date=Date o Chynges:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
 document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Makker:
+document_properties_producer=PDF Producer:
 document_properties_version=PDF Version:
+document_properties_page_count=Page Coont:
 document_properties_page_size=Page Size:
 document_properties_page_size_unit_inches=in
 document_properties_page_size_unit_millimeters=mm
@@ -76,10 +122,12 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
 document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})
 # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
 # the document; usually called "Fast Web View" in English locales of Adobe software.
+document_properties_linearized=Fast Wab View:
 document_properties_linearized_yes=Aye
 document_properties_linearized_no=Naw
 document_properties_close=Sneck
 
+print_progress_message=Reddin document fur prentin…
 # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
 # a numerical per cent value.
 print_progress_percent={{progress}}%
@@ -88,9 +136,27 @@ print_progress_close=Stap
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
+toggle_sidebar.title=Toggle Sidebaur
+toggle_sidebar_notification.title=Toggle Sidebaur (document conteens ootline/attachments)
+toggle_sidebar_notification2.title=Toggle Sidebaur (document conteens ootline/attachments/layers)
+toggle_sidebar_label=Toggle Sidebaur
+document_outline.title=Kythe Document Ootline (double-click fur tae oot-fauld/in-fauld aw items)
+document_outline_label=Document Ootline
+attachments.title=Kythe Attachments
+attachments_label=Attachments
+layers.title=Kythe Layers (double-click fur tae reset aw layers tae the staunart state)
+layers_label=Layers
+thumbs.title=Kythe Thumbnails
+thumbs_label=Thumbnails
+current_outline_item.title=Find Current Ootline Item
+current_outline_item_label=Current Ootline Item
+findbar.title=Find in Document
+findbar_label=Find
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Page {{page}}
+
+additional_layers=Mair Layers
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -99,34 +165,66 @@ page_landmark=Page {{page}}
 thumb_page_title=Page {{page}}
 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
 # number.
+thumb_page_canvas=Thumbnail o Page {{page}}
 
 # Find panel button title and messages
+find_input.title=Find
+find_input.placeholder=Find in document…
+find_previous.title=Airt oot the last time this phrase occurred
+find_previous_label=Previous
+find_next.title=Airt oot the neist time this phrase occurs
+find_next_label=Neist
+find_highlight=Highlicht aw
+find_match_case_label=Match case
 find_entire_word_label=Hale Wirds
+find_reached_top=Raxed tap o document, went on fae the dowp end
+find_reached_bottom=Raxed end o document, went on fae the tap
 # LOCALIZATION NOTE (find_match_count): The supported plural forms are
 # [one|two|few|many|other], with [other] as the default value.
 # "{{current}}" and "{{total}}" will be replaced by a number representing the
 # index of the currently active find result, respectively a number representing
 # the total number of matches in the document.
 find_match_count={[ plural(total) ]}
+find_match_count[one]={{current}} o {{total}} match
+find_match_count[two]={{current}} o {{total}} matches
+find_match_count[few]={{current}} o {{total}} matches
+find_match_count[many]={{current}} o {{total}} matches
+find_match_count[other]={{current}} o {{total}} matches
 # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
 # [zero|one|two|few|many|other], with [other] as the default value.
 # "{{limit}}" will be replaced by a numerical value.
 find_match_count_limit={[ plural(limit) ]}
+find_match_count_limit[zero]=Mair nor {{limit}} matches
+find_match_count_limit[one]=Mair nor {{limit}} match
+find_match_count_limit[two]=Mair nor {{limit}} matches
+find_match_count_limit[few]=Mair nor {{limit}} matches
+find_match_count_limit[many]=Mair nor {{limit}} matches
+find_match_count_limit[other]=Mair nor {{limit}} matches
+find_not_found=Phrase no fund
 
 # Error panel labels
 error_more_info=Mair Information
+error_less_info=Less Information
 error_close=Sneck
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
 error_version_info=PDF.js v{{version}} (build: {{build}})
 # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
 # english string describing the error.
+error_message=Message: {{message}}
 # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
 # trace.
+error_stack=Stack: {{stack}}
 # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=File: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Line: {{line}}
+rendering_error=A mishanter tuik place while renderin the page.
 
 # Predefined zoom values
+page_scale_width=Page Width
+page_scale_fit=Page Fit
+page_scale_auto=Automatic Zoom
 page_scale_actual=Actual Size
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
@@ -136,6 +234,11 @@ page_scale_percent={{scale}}%
 loading_error_indicator=Mishanter
 
 # Loading indicator messages
+loading=Loadin…
+loading_error=An mishanter tuik place while loadin the PDF.
+invalid_file_error=No suithfest or camshauchlet PDF file.
+missing_file_error=PDF file tint.
+unexpected_response_error=Unexpectit server repone.
 
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
@@ -145,7 +248,12 @@ annotation_date_string={{date}}, {{time}}
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
 # Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Inpit the passwird fur tae open this PDF file.
+password_invalid=Passwird no suithfest. Gonnae gie it anither shot.
+password_ok=OK
 password_cancel=Stap
 
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
+printing_not_supported=Tak tent: Prentin isnae richt supportit by this stravaiger.
+printing_not_ready=Tak tent: The PDF isnae richt loadit fur prentin.
+web_fonts_disabled=Wab fonts are disabled: cannae yaise embeddit PDF fonts.
diff --git a/third-party/pdfjs/web/locale/si/viewer.properties 
b/third-party/pdfjs/web/locale/si/viewer.properties
index 9a1d1e8bc..9ab24bb51 100644
--- a/third-party/pdfjs/web/locale/si/viewer.properties
+++ b/third-party/pdfjs/web/locale/si/viewer.properties
@@ -187,6 +187,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=දෝෂය
+
 loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි.
 invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව.
 missing_file_error=නැතිවූ PDF ගොනුව.
diff --git a/third-party/pdfjs/web/locale/sk/viewer.properties 
b/third-party/pdfjs/web/locale/sk/viewer.properties
index 1626bf3f8..b58f4c42c 100644
--- a/third-party/pdfjs/web/locale/sk/viewer.properties
+++ b/third-party/pdfjs/web/locale/sk/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktuálna položka v osnove
 findbar.title=Hľadať v dokumente
 findbar_label=Hľadať
 
-additional_layers=Ďalšie vrstvy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strana {{page}}
+
+additional_layers=Ďalšie vrstvy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Strana {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Zrušiť
 printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná.
 printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač.
 web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tento dokument PDF obsahuje digitálne podpisy. Overenie podpisov nie je 
podporované.
diff --git a/third-party/pdfjs/web/locale/sl/viewer.properties 
b/third-party/pdfjs/web/locale/sl/viewer.properties
index 4ce629d66..aacf99554 100644
--- a/third-party/pdfjs/web/locale/sl/viewer.properties
+++ b/third-party/pdfjs/web/locale/sl/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Trenutni predmet orisa
 findbar.title=Iskanje po dokumentu
 findbar_label=Najdi
 
-additional_layers=Dodatne plasti
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Stran {{page}}
+
+additional_layers=Dodatne plasti
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Stran {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Prekliči
 printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja.
 printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje.
 web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Ta dokument PDF vsebuje digitalne podpise. Preverjanje veljavnosti podpisov 
ni podprto.
diff --git a/third-party/pdfjs/web/locale/son/viewer.properties 
b/third-party/pdfjs/web/locale/son/viewer.properties
index 683ed14d4..4f16cd96c 100644
--- a/third-party/pdfjs/web/locale/son/viewer.properties
+++ b/third-party/pdfjs/web/locale/son/viewer.properties
@@ -159,6 +159,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Firka
+
 loading_error=Firka bangay kaŋ PDF goo ma zumandi.
 invalid_file_error=PDF tuku laala wala laybante.
 missing_file_error=PDF tuku kumante.
diff --git a/third-party/pdfjs/web/locale/sq/viewer.properties 
b/third-party/pdfjs/web/locale/sq/viewer.properties
index 516cb96c5..62fb33ccd 100644
--- a/third-party/pdfjs/web/locale/sq/viewer.properties
+++ b/third-party/pdfjs/web/locale/sq/viewer.properties
@@ -144,9 +144,10 @@ thumbs_label=Miniatura
 findbar.title=Gjeni në Dokument
 findbar_label=Gjej
 
-additional_layers=Shtresa Shtesë
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Faqja {{page}}
+
+additional_layers=Shtresa Shtesë
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -220,6 +221,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Gabim
+
 loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.
 invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
 missing_file_error=Kartelë PDF që mungon.
diff --git a/third-party/pdfjs/web/locale/sr/viewer.properties 
b/third-party/pdfjs/web/locale/sr/viewer.properties
index dc36ea911..ea18b4031 100644
--- a/third-party/pdfjs/web/locale/sr/viewer.properties
+++ b/third-party/pdfjs/web/locale/sr/viewer.properties
@@ -41,7 +41,7 @@ print.title=Штампај
 print_label=Штампај
 download.title=Преузми
 download_label=Преузми
-bookmark.title=Тренутни приказ (копирај или отвори нови прозор)
+bookmark.title=Тренутни приказ (копирај или отвори у новом прозору)
 bookmark_label=Тренутни приказ
 
 # Secondary toolbar and context menu
@@ -153,9 +153,10 @@ current_outline_item_label=Тренутна контура
 findbar.title=Пронађи у документу
 findbar_label=Пронађи
 
-additional_layers=Додатни слојеви
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Страница {{page}}
+
+additional_layers=Додатни слојеви
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Страница {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -169,9 +170,9 @@ thumb_page_canvas=Сличица од странице {{page}}
 # Find panel button title and messages
 find_input.title=Пронађи
 find_input.placeholder=Пронађи у документу…
-find_previous.title=Пронађи претходну појаву фразе
+find_previous.title=Пронађи претходно појављивање фразе
 find_previous_label=Претходна
-find_next.title=Пронађи следећу појаву фразе
+find_next.title=Пронађи следеће појављивање фразе
 find_next_label=Следећа
 find_highlight=Истакнути све
 find_match_case_label=Подударања
@@ -256,3 +257,5 @@ password_cancel=Откажи
 printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу.
 printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу.
 web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове.
+# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
+# exact string as in the `chrome.properties` file.
diff --git a/third-party/pdfjs/web/locale/sv-SE/viewer.properties 
b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
index f79e43cf3..60299d14b 100644
--- a/third-party/pdfjs/web/locale/sv-SE/viewer.properties
+++ b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Aktuellt dispositionsobjekt
 findbar.title=Sök i dokument
 findbar_label=Sök
 
-additional_layers=Ytterligare lager
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Sida {{page}}
+
+additional_layers=Ytterligare lager
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sida {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Avbryt
 printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren.
 printing_not_ready=Varning: PDF:en är inte klar för utskrift.
 web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Detta PDF-dokument innehåller digitala signaturer. Validering av signaturer 
stöds inte.
diff --git a/third-party/pdfjs/web/locale/szl/viewer.properties 
b/third-party/pdfjs/web/locale/szl/viewer.properties
index a7b8a9044..ed4bbd4e8 100644
--- a/third-party/pdfjs/web/locale/szl/viewer.properties
+++ b/third-party/pdfjs/web/locale/szl/viewer.properties
@@ -151,9 +151,10 @@ thumbs_label=Miniatury
 findbar.title=Znojdź w dokumyncie
 findbar_label=Znojdź
 
-additional_layers=Nadbytnie warstwy
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Strōna {{page}}
+
+additional_layers=Nadbytnie warstwy
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
diff --git a/third-party/pdfjs/web/locale/ta/viewer.properties 
b/third-party/pdfjs/web/locale/ta/viewer.properties
index 669ba0c56..cade21bc7 100644
--- a/third-party/pdfjs/web/locale/ta/viewer.properties
+++ b/third-party/pdfjs/web/locale/ta/viewer.properties
@@ -180,6 +180,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=பிழை
+
 loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது.
 invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு.
 missing_file_error=PDF கோப்பு காணவில்லை.
diff --git a/third-party/pdfjs/web/locale/te/viewer.properties 
b/third-party/pdfjs/web/locale/te/viewer.properties
index 6839138b1..517509324 100644
--- a/third-party/pdfjs/web/locale/te/viewer.properties
+++ b/third-party/pdfjs/web/locale/te/viewer.properties
@@ -136,9 +136,10 @@ thumbs_label=థంబ్‌నైల్స్
 findbar.title=పత్రములో కనుగొనుము
 findbar_label=కనుగొను
 
-additional_layers=అదనపు పొరలు
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=పేజి {{page}}
+
+additional_layers=అదనపు పొరలు
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -201,6 +202,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=దోషం
+
 loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది.
 invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.
 missing_file_error=దొరకని PDF ఫైలు.
diff --git a/third-party/pdfjs/web/locale/tg/viewer.properties 
b/third-party/pdfjs/web/locale/tg/viewer.properties
index bb1a894c2..95967e32f 100644
--- a/third-party/pdfjs/web/locale/tg/viewer.properties
+++ b/third-party/pdfjs/web/locale/tg/viewer.properties
@@ -139,3 +139,4 @@ password_cancel=Бекор кардан
 
 # LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
 # exact string as in the `chrome.properties` file.
+
diff --git a/third-party/pdfjs/web/locale/th/viewer.properties 
b/third-party/pdfjs/web/locale/th/viewer.properties
index 6b51c795a..4ce6147d0 100644
--- a/third-party/pdfjs/web/locale/th/viewer.properties
+++ b/third-party/pdfjs/web/locale/th/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=รายการเค้าร่างปัจ
 findbar.title=ค้นหาในเอกสาร
 findbar_label=ค้นหา
 
-additional_layers=เลเยอร์เพิ่มเติม
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=หน้า {{page}}
+
+additional_layers=เลเยอร์เพิ่มเติม
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=หน้า {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=ยกเลิก
 printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่
 printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์
 web_fonts_disabled=แบบอักษรเว็บถูกปิดใช้งาน: ไม่สามารถใช้แบบอักษร PDF ฝังตัว
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=เอกสาร PDF นี้มีลายเซ็นดิจิทัล ไม่รองรับการตรวจสอบลายเซ็น
diff --git a/third-party/pdfjs/web/locale/tl/viewer.properties 
b/third-party/pdfjs/web/locale/tl/viewer.properties
index d3cce44e9..6a9fd03b1 100644
--- a/third-party/pdfjs/web/locale/tl/viewer.properties
+++ b/third-party/pdfjs/web/locale/tl/viewer.properties
@@ -151,9 +151,10 @@ thumbs_label=Mga thumbnail
 findbar.title=Hanapin sa Dokumento
 findbar_label=Hanapin
 
-additional_layers=Mga Karagdagang Layer
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pahina {{page}}
+
+additional_layers=Mga Karagdagang Layer
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -227,6 +228,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Error
+
 loading_error=Nagkaproblema habang niloload ang PDF.
 invalid_file_error=Di-wasto o sira ang PDF file.
 missing_file_error=Nawawalang PDF file.
diff --git a/third-party/pdfjs/web/locale/tr/viewer.properties 
b/third-party/pdfjs/web/locale/tr/viewer.properties
index b4bde4187..7e14fbba2 100644
--- a/third-party/pdfjs/web/locale/tr/viewer.properties
+++ b/third-party/pdfjs/web/locale/tr/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Mevcut ana hat öğesi
 findbar.title=Belgede bul
 findbar_label=Bul
 
-additional_layers=Ek katmanlar
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Sayfa {{page}}
+
+additional_layers=Ek katmanlar
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Sayfa {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=İptal
 printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir.
 printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil.
 web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Bu PDF belgesi dijital imzalar içermektedir. İmzaların doğrulanması 
desteklenmiyor.
diff --git a/third-party/pdfjs/web/locale/uk/viewer.properties 
b/third-party/pdfjs/web/locale/uk/viewer.properties
index 99c5415b5..87d407c99 100644
--- a/third-party/pdfjs/web/locale/uk/viewer.properties
+++ b/third-party/pdfjs/web/locale/uk/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Поточний елемент змісту
 findbar.title=Знайти в документі
 findbar_label=Знайти
 
-additional_layers=Додаткові шари
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Сторінка {{page}}
+
+additional_layers=Додаткові шари
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Сторінка {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Скасувати
 printing_not_supported=Попередження: Цей браузер не повністю підтримує друк.
 printing_not_ready=Попередження: PDF не повністю завантажений для друку.
 web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Цей PDF-документ містить цифрові підписи. Перевірка підписів не підтримується.
diff --git a/third-party/pdfjs/web/locale/ur/viewer.properties 
b/third-party/pdfjs/web/locale/ur/viewer.properties
index 162ca1475..beaa4cfbf 100644
--- a/third-party/pdfjs/web/locale/ur/viewer.properties
+++ b/third-party/pdfjs/web/locale/ur/viewer.properties
@@ -145,6 +145,9 @@ findbar_label=ڈھونڈیں
 
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=صفحہ {{page}}
+
+# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
+page_landmark=صفحہ {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -217,6 +220,8 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=نقص
+
+# Loading indicator messages
 loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔
 invalid_file_error=ناجائز یا خراب PDF مسل
 missing_file_error=PDF مسل غائب ہے۔
@@ -239,3 +244,5 @@ password_cancel=منسوخ کریں
 printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔
 printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔
 web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔
+# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
+# exact string as in the `chrome.properties` file.
diff --git a/third-party/pdfjs/web/locale/uz/viewer.properties 
b/third-party/pdfjs/web/locale/uz/viewer.properties
index 6ad24319e..638fde579 100644
--- a/third-party/pdfjs/web/locale/uz/viewer.properties
+++ b/third-party/pdfjs/web/locale/uz/viewer.properties
@@ -149,6 +149,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Xato
+
 loading_error=PDF yuklanayotganda xato yuz berdi.
 invalid_file_error=Xato yoki buzuq PDF fayli.
 missing_file_error=PDF fayl kerak.
diff --git a/third-party/pdfjs/web/locale/vi/viewer.properties 
b/third-party/pdfjs/web/locale/vi/viewer.properties
index 0116a1b2f..a8aa396da 100644
--- a/third-party/pdfjs/web/locale/vi/viewer.properties
+++ b/third-party/pdfjs/web/locale/vi/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=Mục phác thảo hiện tại
 findbar.title=Tìm trong tài liệu
 findbar_label=Tìm
 
-additional_layers=Các lớp bổ sung
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Trang {{page}}
+
+additional_layers=Các lớp bổ sung
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=Trang {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=Hủy bỏ
 printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này.
 printing_not_ready=Cảnh báo: PDF chưa được tải hết để in.
 web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng.
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=Tài liệu PDF này có chứa chữ ký điện tử. Xác thực chữ ký không được hỗ trợ.
diff --git a/third-party/pdfjs/web/locale/wo/viewer.properties 
b/third-party/pdfjs/web/locale/wo/viewer.properties
index 38c7bc184..3c7b89942 100644
--- a/third-party/pdfjs/web/locale/wo/viewer.properties
+++ b/third-party/pdfjs/web/locale/wo/viewer.properties
@@ -110,6 +110,7 @@ page_scale_actual=Dayo bi am
 
 # Loading indicator messages
 loading_error_indicator=Njumte
+
 loading_error=Am na njumte ci yebum dencukaay PDF bi.
 invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar.
 
diff --git a/third-party/pdfjs/web/locale/xh/viewer.properties 
b/third-party/pdfjs/web/locale/xh/viewer.properties
index 52cd75e5b..6f76c4523 100644
--- a/third-party/pdfjs/web/locale/xh/viewer.properties
+++ b/third-party/pdfjs/web/locale/xh/viewer.properties
@@ -163,6 +163,7 @@ page_scale_percent={{scale}}%
 
 # Loading indicator messages
 loading_error_indicator=Imposiso
+
 loading_error=Imposiso yenzekile xa kulayishwa i-PDF.
 invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo.
 missing_file_error=Ifayile ye-PDF edukileyo.
diff --git a/third-party/pdfjs/web/locale/zh-CN/viewer.properties 
b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
index 27ef370fb..0648ee277 100644
--- a/third-party/pdfjs/web/locale/zh-CN/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=当前大纲项目
 findbar.title=在文档中查找
 findbar_label=查找
 
-additional_layers=其他图层
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=第 {{page}} 页
+
+additional_layers=其他图层
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=第 {{page}} 页
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=取消
 printing_not_supported=警告:此浏览器尚未完整支持打印功能。
 printing_not_ready=警告:此 PDF 未完成载入,无法打印。
 web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的 PDF 字体。
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=此 PDF 文档包含数字签名。尚不支持签名验证。
diff --git a/third-party/pdfjs/web/locale/zh-TW/viewer.properties 
b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
index 5480dc624..e29bcf428 100644
--- a/third-party/pdfjs/web/locale/zh-TW/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
@@ -153,9 +153,10 @@ current_outline_item_label=目前的大綱項目
 findbar.title=在文件中尋找
 findbar_label=尋找
 
-additional_layers=其他圖層
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=第 {{page}} 頁
+
+additional_layers=其他圖層
 # LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
 page_landmark=第 {{page}} 頁
 # Thumbnails panel item (tooltip and alt text for images)
@@ -256,6 +257,3 @@ password_cancel=取消
 printing_not_supported=警告: 此瀏覽器未完整支援列印功能。
 printing_not_ready=警告: 此 PDF 未完成下載以供列印。
 web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。
-# LOCALIZATION NOTE (unsupported_feature_signatures): Should contain the same
-# exact string as in the `chrome.properties` file.
-unsupported_feature_signatures=此 PDF 文件包含數位簽章,目前不支援簽章驗證功能。
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitDingbats.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitDingbats.pfb
new file mode 100644
index 000000000..30d52963e
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitDingbats.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitFixed.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitFixed.pfb
new file mode 100644
index 000000000..f12dcbce5
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitFixed.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitFixedBold.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitFixedBold.pfb
new file mode 100644
index 000000000..cf8e24aee
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitFixedBold.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb
new file mode 100644
index 000000000..d2880017c
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb
new file mode 100644
index 000000000..d71697d4b
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSans.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSans.pfb
new file mode 100644
index 000000000..37f244bd9
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSans.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSansBold.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSansBold.pfb
new file mode 100644
index 000000000..affcf316d
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSansBold.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb
new file mode 100644
index 000000000..e1f60b754
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSansItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSansItalic.pfb
new file mode 100644
index 000000000..c04b0a5ae
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSansItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSerif.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSerif.pfb
new file mode 100644
index 000000000..3fa682efb
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSerif.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSerifBold.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSerifBold.pfb
new file mode 100644
index 000000000..ff7c6ddec
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSerifBold.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb
new file mode 100644
index 000000000..460231fb8
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb
new file mode 100644
index 000000000..d03a7c781
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/FoxitSymbol.pfb 
b/third-party/pdfjs/web/standard_fonts/FoxitSymbol.pfb
new file mode 100644
index 000000000..c8f9bca78
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/FoxitSymbol.pfb differ
diff --git a/third-party/pdfjs/web/standard_fonts/LICENSE_FOXIT 
b/third-party/pdfjs/web/standard_fonts/LICENSE_FOXIT
new file mode 100644
index 000000000..8b4ed6ddd
--- /dev/null
+++ b/third-party/pdfjs/web/standard_fonts/LICENSE_FOXIT
@@ -0,0 +1,27 @@
+// Copyright 2014 PDFium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * 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.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// 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/third-party/pdfjs/web/standard_fonts/LICENSE_LIBERATION 
b/third-party/pdfjs/web/standard_fonts/LICENSE_LIBERATION
new file mode 100644
index 000000000..aba73e8a4
--- /dev/null
+++ b/third-party/pdfjs/web/standard_fonts/LICENSE_LIBERATION
@@ -0,0 +1,102 @@
+Digitized data copyright (c) 2010 Google Corporation
+       with Reserved Font Arimo, Tinos and Cousine.
+Copyright (c) 2012 Red Hat, Inc.
+       with Reserved Font Name Liberation.
+
+This Font Software is licensed under the SIL Open Font License,
+Version 1.1.
+
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+
+PREAMBLE The goals of the Open Font License (OFL) are to stimulate
+worldwide development of collaborative font projects, to support the font
+creation efforts of academic and linguistic communities, and to provide
+a free and open framework in which fonts may be shared and improved in
+partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves.
+The fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works.  The fonts and derivatives,
+however, cannot be released under any other type of license.  The
+requirement for fonts to remain under this license does not apply to
+any document created using the fonts or their derivatives.
+
+ 
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such.
+This may include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components
+as distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting ? in part or in whole ?
+any of the components of the Original Version, by changing formats or
+by porting the Font Software to a new environment.
+
+"Author" refers to any designer, engineer, programmer, technical writer
+or other person who contributed to the Font Software.
+
+
+PERMISSION & CONDITIONS
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,in
+   Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+   redistributed and/or sold with any software, provided that each copy
+   contains the above copyright notice and this license. These can be
+   included either as stand-alone text files, human-readable headers or
+   in the appropriate machine-readable metadata fields within text or
+   binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+   Name(s) unless explicit written permission is granted by the
+   corresponding Copyright Holder. This restriction only applies to the
+   primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+   Software shall not be used to promote, endorse or advertise any
+   Modified Version, except to acknowledge the contribution(s) of the
+   Copyright Holder(s) and the Author(s) or with their explicit written
+   permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must
+   be distributed entirely under this license, and must not be distributed
+   under any other license. The requirement for fonts to remain under
+   this license does not apply to any document created using the Font
+   Software.
+
+
+ 
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+ 
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT.  IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
+DEALINGS IN THE FONT SOFTWARE.
+
diff --git a/third-party/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf 
b/third-party/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf
new file mode 100644
index 000000000..ee2371540
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf differ
diff --git a/third-party/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf 
b/third-party/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf
new file mode 100644
index 000000000..42b5717dd
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf differ
diff --git a/third-party/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf 
b/third-party/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf
new file mode 100644
index 000000000..0cf612634
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf differ
diff --git a/third-party/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf 
b/third-party/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf
new file mode 100644
index 000000000..366d1489c
Binary files /dev/null and b/third-party/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf differ
diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
index 723070eb2..5261568a8 100644
--- a/third-party/pdfjs/web/viewer.css
+++ b/third-party/pdfjs/web/viewer.css
@@ -16,6 +16,7 @@
 
 .textLayer {
   position: absolute;
+  text-align: initial;
   left: 0;
   top: 0;
   right: 0;
@@ -35,13 +36,16 @@
 }
 
 .textLayer .highlight {
-  position: relative;
   margin: -1px;
   padding: 1px;
   background-color: rgba(180, 0, 170, 1);
   border-radius: 4px;
 }
 
+.textLayer .highlight.appended {
+  position: initial;
+}
+
 .textLayer .highlight.begin {
   border-radius: 4px 0 0 4px;
 }
@@ -212,7 +216,7 @@
    * area, causing horizontal scrolling. We avoid this by extending the width
    * when the element has focus and revert this when it loses focus.
    */
-  width: 115%;
+  width: 103%;
 }
 
 .annotationLayer .buttonWidgetAnnotation.checkBox input,
@@ -281,12 +285,26 @@
 }
 
 
+.xfaPage {
+  overflow: hidden;
+  position: relative;
+}
+
+.xfaContentarea {
+  position: absolute;
+}
+
+.xfaPrintOnly {
+  display: none;
+}
+
 .xfaLayer {
   position: absolute;
+  text-align: initial;
   top: 0;
   left: 0;
-  z-index: 200;
   transform-origin: 0 0;
+  line-height: 1.2;
 }
 
 .xfaLayer * {
@@ -295,12 +313,26 @@
   font-style: inherit;
   font-weight: inherit;
   font-kerning: inherit;
-  letter-spacing: inherit;
+  letter-spacing: -0.01px;
   text-align: inherit;
   text-decoration: inherit;
-  vertical-align: inherit;
   box-sizing: border-box;
   background: transparent;
+  padding: 0;
+  margin: 0;
+  pointer-events: auto;
+}
+
+.xfaLayer div {
+  pointer-events: none;
+}
+
+.xfaLayer svg {
+  pointer-events: none;
+}
+
+.xfaLayer svg * {
+  pointer-events: none;
 }
 
 .xfaLayer a {
@@ -322,56 +354,52 @@
   vertical-align: 0;
 }
 
-.xfaDraw {
-  z-index: 100;
+.xfaCaption {
+  overflow: hidden;
+  flex: 0 1 auto;
 }
 
-.xfaExclgroup {
-  z-index: 200;
+.xfaCaptionForCheckButton {
+  overflow: hidden;
+  flex: 1 1 auto;
 }
 
-.xfaField {
-  z-index: 300;
+.xfaLabel {
+  height: 100%;
+  width: 100%;
 }
 
-.xfaRich {
-  z-index: 300;
-  line-height: 1.2;
+.xfaLeft {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
 }
 
-.xfaSubform {
-  z-index: 200;
+.xfaLeft > .xfaCaption,
+.xfaLeft > .xfaCaptionForCheckButton {
+  max-height: 100%;
 }
 
-.xfaLabel {
+.xfaTop {
   display: flex;
-  flex-direction: row;
-  align-items: center;
-  width: 100%;
-  height: 100%;
+  flex-direction: column;
+  align-items: flex-start;
 }
 
-.xfaCaption {
-  flex: 1 1 auto;
+.xfaTop > .xfaCaption,
+.xfaTop > .xfaCaptionForCheckButton {
+  width: 100%;
 }
 
-.xfaBorderDiv {
+.xfaBorder {
   background: transparent;
   position: absolute;
   pointer-events: none;
 }
 
-.xfaWrapper {
-  position: relative;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  width: auto;
-  height: auto;
-}
-
-.xfaContentArea {
-  overflow: hidden;
+.xfaWrapped {
+  width: 100%;
+  height: 100%;
 }
 
 .xfaTextfield,
@@ -382,49 +410,18 @@
 .xfaTextfield:focus,
 .xfaSelect:focus {
   background-color: transparent;
+  outline: none;
 }
 
 .xfaTextfield,
 .xfaSelect {
   width: 100%;
   height: 100%;
-  flex: 100 1 0;
+  flex: 1 1 0;
   border: none;
   resize: none;
 }
 
-.xfaLabel > input[type="radio"] {
-  /* Use this trick to make the checkbox invisible but
-       but still focusable. */
-  position: absolute;
-  left: -99999px;
-}
-
-.xfaLabel > input[type="radio"]:focus + .xfaCheckboxMark {
-  box-shadow: 0 0 5px rgba(0, 0, 0, 0.7);
-}
-
-.xfaCheckboxMark {
-  cursor: pointer;
-  flex: 0 0 auto;
-  border-style: solid;
-  border-width: 2px;
-  border-color: #8f8f9d;
-  font-size: 10px;
-  line-height: 10px;
-  width: 10px;
-  height: 10px;
-  text-align: center;
-  vertical-align: middle;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.xfaCheckbox:checked + .xfaCheckboxMark::after {
-  content: attr(mark);
-}
-
 .xfaButton {
   cursor: pointer;
   width: 100%;
@@ -437,22 +434,27 @@
   background: Highlight;
 }
 
-.xfaRich {
-  white-space: pre-wrap;
-}
-
-.xfaImage {
+.xfaCheckbox,
+.xfaRadio {
   width: 100%;
   height: 100%;
+  flex: 0 0 auto;
+  border: none;
 }
 
 .xfaRich {
+  white-space: pre-wrap;
   width: 100%;
-  height: auto;
+  height: 100%;
 }
 
-.xfaPosition {
-  display: block;
+.xfaImage {
+  -o-object-position: left top;
+     object-position: left top;
+  -o-object-fit: contain;
+     object-fit: contain;
+  width: 100%;
+  height: 100%;
 }
 
 .xfaLrTb,
@@ -463,24 +465,20 @@
   align-items: stretch;
 }
 
-.xfaLr,
-.xfaRl,
-.xfaTb > div {
-  flex: 1 1 auto;
-}
-
-.xfaTb > div {
-  justify-content: left;
+.xfaLr {
+  display: flex;
+  flex-direction: row;
+  align-items: stretch;
 }
 
-.xfaLr > div {
-  display: inline;
-  float: left;
+.xfaRl {
+  display: flex;
+  flex-direction: row-reverse;
+  align-items: stretch;
 }
 
-.xfaRl > div {
-  display: inline;
-  float: right;
+.xfaTb > div {
+  justify-content: left;
 }
 
 .xfaPosition {
@@ -496,34 +494,22 @@
   align-items: center;
 }
 
-.xfaLrTb > div {
-  display: inline;
-  float: left;
-}
-
-.xfaRlTb > div {
-  display: inline;
-  float: right;
-}
-
 .xfaTable {
   display: flex;
   flex-direction: column;
+  align-items: stretch;
 }
 
 .xfaTable .xfaRow {
   display: flex;
   flex-direction: row;
-  flex: 1 1 auto;
-}
-
-.xfaTable .xfaRow > div {
-  flex: 1 1 auto;
+  align-items: stretch;
 }
 
 .xfaTable .xfaRlRow {
   display: flex;
   flex-direction: row-reverse;
+  align-items: stretch;
   flex: 1;
 }
 
@@ -531,6 +517,30 @@
   flex: 1;
 }
 
+.xfaNonInteractive input,
+.xfaNonInteractive textarea,
+.xfaDisabled input,
+.xfaDisabled textarea,
+.xfaReadOnly input,
+.xfaReadOnly textarea {
+  background: initial;
+}
+
+@media print {
+  .xfaTextfield,
+  .xfaSelect {
+    background-color: transparent;
+  }
+
+  .xfaSelect {
+    -webkit-appearance: none;
+       -moz-appearance: none;
+            appearance: none;
+    text-indent: 1px;
+    text-overflow: "";
+  }
+}
+
 :root {
   --pdfViewer-padding-bottom: none;
   --page-margin: 1px auto -8px;
@@ -1604,6 +1614,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
 }
 
 .dropdownToolbarButton > select {
+  -webkit-appearance: none;
   width: 162px;
   height: 28px;
   font-size: 12px;
@@ -1977,6 +1988,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
 }
 
 .toolbarField.pageNumber {
+  -webkit-appearance: none;
   -moz-appearance: textfield; /* hides the spinner in moz */
   min-width: 16px;
   text-align: right;
@@ -2404,6 +2416,19 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
 #PDFBug table {
   font-size: 10px;
 }
+#PDFBug table.showText {
+  border-collapse: collapse;
+  text-align: center;
+}
+#PDFBug table.showText,
+#PDFBug table.showText tr,
+#PDFBug table.showText td {
+  border: 1px solid black;
+  padding: 1px;
+}
+#PDFBug table.showText td.advance {
+  color: grey;
+}
 
 #viewer.textLayer-visible .textLayer {
   opacity: 1;
@@ -2479,7 +2504,8 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
   .toolbar,
   #loadingBox,
   #errorWrapper,
-  .textLayer {
+  .textLayer,
+  .canvasWrapper {
     display: none;
   }
   #viewerContainer {
@@ -2523,7 +2549,7 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
     height: 100%;
   }
   /* wrapper around (scaled) print canvas elements */
-  #printContainer > div {
+  #printContainer > .printedPage {
     page-break-after: always;
     page-break-inside: avoid;
 
@@ -2536,8 +2562,21 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
     justify-content: center;
     align-items: center;
   }
-  #printContainer canvas,
-  #printContainer img {
+
+  #printContainer > .xfaPrintedPage .xfaPage {
+    position: initial;
+  }
+
+  #printContainer > .xfaPrintedPage {
+    page-break-after: always;
+    page-break-inside: avoid;
+    width: 100%;
+    height: 100%;
+    position: relative;
+  }
+
+  #printContainer > .printedPage canvas,
+  #printContainer > .printedPage img {
     /* The intrinsic canvas / image size will make sure that we fit the page. */
     max-width: 100%;
     max-height: 100%;
diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
index 74421171a..db9b7427a 100644
--- a/third-party/pdfjs/web/viewer.html
+++ b/third-party/pdfjs/web/viewer.html
@@ -26,7 +26,6 @@ See https://github.com/adobe-type-tools/cmap-resources
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
     <meta name="google" content="notranslate">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <title>PDF.js viewer</title>
 
     <base href="ephy-resource:///org/gnome/epiphany/pdfjs/web/">
diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
index b76e300dd..d0064cf18 100644
--- a/third-party/pdfjs/web/viewer.js
+++ b/third-party/pdfjs/web/viewer.js
@@ -194,6 +194,10 @@ const defaultOptions = {
     value: false,
     kind: OptionKind.API
   },
+  standardFontDataUrl: {
+    value: "../web/standard_fonts/",
+    kind: OptionKind.API
+  },
   verbosity: {
     value: 1,
     kind: OptionKind.API
@@ -960,6 +964,7 @@ const PDFViewerApplication = {
     }
 
     webViewerResetPermissions();
+    this.pdfLinkService.externalLinkEnabled = true;
     this._fellback = false;
     this.store = null;
     this.isInitialViewSet = false;
@@ -1303,7 +1308,7 @@ const PDFViewerApplication = {
     } = pdfViewer;
     const pdfThumbnailViewer = this.pdfThumbnailViewer;
     pdfThumbnailViewer.setDocument(pdfDocument);
-    const storedPromise = (this.store = new _view_history.ViewHistory(pdfDocument.fingerprint)).getMultiple({
+    const storedPromise = (this.store = new 
_view_history.ViewHistory(pdfDocument.fingerprints[0])).getMultiple({
       page: null,
       zoom: _ui_utils.DEFAULT_SCALE_VALUE,
       scrollLeft: "0",
@@ -1324,7 +1329,7 @@ const PDFViewerApplication = {
         const viewOnLoad = _app_options.AppOptions.get("viewOnLoad");
 
         this._initializePdfHistory({
-          fingerprint: pdfDocument.fingerprint,
+          fingerprint: pdfDocument.fingerprints[0],
           viewOnLoad,
           initialDest: openAction?.dest
         });
@@ -1563,7 +1568,7 @@ const PDFViewerApplication = {
     this.metadata = metadata;
     this._contentDispositionFilename ?? (this._contentDispositionFilename = contentDispositionFilename);
     this._contentLength ?? (this._contentLength = contentLength);
-    console.log(`PDF ${pdfDocument.fingerprint} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`);
+    console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"})`);
     let pdfTitle = info?.Title;
     const metadataTitle = metadata?.get("dc:title");
 
@@ -1580,7 +1585,7 @@ const PDFViewerApplication = {
     }
 
     if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) {
-      console.warn("Warning: XFA is not enabled");
+      console.warn("Warning: XFA support is not enabled");
       this.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
     } else if ((info.IsAcroFormPresent || info.IsXFAPresent) && !this.pdfViewer.renderInteractiveForms) {
       console.warn("Warning: Interactive form support is not enabled");
@@ -3253,7 +3258,7 @@ function getOutputScale(ctx) {
   };
 }
 
-function scrollIntoView(element, spot, skipOverflowHiddenElements = false) {
+function scrollIntoView(element, spot, scrollMatches = false) {
   let parent = element.offsetParent;
 
   if (!parent) {
@@ -3264,12 +3269,7 @@ function scrollIntoView(element, spot, skipOverflowHiddenElements = false) {
   let offsetY = element.offsetTop + element.clientTop;
   let offsetX = element.offsetLeft + element.clientLeft;
 
-  while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || 
skipOverflowHiddenElements && getComputedStyle(parent).overflow === "hidden") {
-    if (parent.dataset._scaleY) {
-      offsetY /= parent.dataset._scaleY;
-      offsetX /= parent.dataset._scaleX;
-    }
-
+  while (parent.clientHeight === parent.scrollHeight && parent.clientWidth === parent.scrollWidth || 
scrollMatches && (parent.classList.contains("markedContent") || getComputedStyle(parent).overflow === 
"hidden")) {
     offsetY += parent.offsetTop;
     offsetX += parent.offsetLeft;
     parent = parent.offsetParent;
@@ -5298,6 +5298,7 @@ const FIND_TIMEOUT = 250;
 const MATCH_SCROLL_OFFSET_TOP = -50;
 const MATCH_SCROLL_OFFSET_LEFT = -400;
 const CHARACTERS_TO_NORMALIZE = {
+  "\u2010": "-",
   "\u2018": "'",
   "\u2019": "'",
   "\u201A": "'",
@@ -5466,6 +5467,7 @@ class PDFFindController {
 
   scrollMatchIntoView({
     element = null,
+    selectedLeft = 0,
     pageIndex = -1,
     matchIndex = -1
   }) {
@@ -5480,7 +5482,7 @@ class PDFFindController {
     this._scrollMatches = false;
     const spot = {
       top: MATCH_SCROLL_OFFSET_TOP,
-      left: MATCH_SCROLL_OFFSET_LEFT
+      left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT
     };
     (0, _ui_utils.scrollIntoView)(element, spot, true);
   }
@@ -6910,13 +6912,12 @@ class PDFLinkService {
     eventBus,
     externalLinkTarget = null,
     externalLinkRel = null,
-    externalLinkEnabled = true,
     ignoreDestinationZoom = false
   } = {}) {
     this.eventBus = eventBus;
     this.externalLinkTarget = externalLinkTarget;
     this.externalLinkRel = externalLinkRel;
-    this.externalLinkEnabled = externalLinkEnabled;
+    this.externalLinkEnabled = true;
     this._ignoreDestinationZoom = ignoreDestinationZoom;
     this.baseUrl = null;
     this.pdfDocument = null;
@@ -6963,7 +6964,7 @@ class PDFLinkService {
     const destRef = explicitDest[0];
     let pageNumber;
 
-    if (destRef instanceof Object) {
+    if (typeof destRef === "object" && destRef !== null) {
       pageNumber = this._cachedPageNumber(destRef);
 
       if (pageNumber === null) {
@@ -7652,7 +7653,7 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
         if (Array.isArray(explicitDest)) {
           const [destRef] = explicitDest;
 
-          if (destRef instanceof Object) {
+          if (typeof destRef === "object" && destRef !== null) {
             pageNumber = this.linkService._cachedPageNumber(destRef);
 
             if (!pageNumber) {
@@ -8084,7 +8085,6 @@ class PDFScriptingManager {
     this._destroyCapability = null;
     this._scripting = null;
     this._mouseState = Object.create(null);
-    this._pageEventsReady = false;
     this._ready = false;
     this._eventBus = eventBus;
     this._sandboxBundleSrc = sandboxBundleSrc;
@@ -8118,7 +8118,13 @@ class PDFScriptingManager {
       return;
     }
 
-    this._scripting = this._createScripting();
+    try {
+      this._scripting = this._createScripting();
+    } catch (error) {
+      console.error(`PDFScriptingManager.setDocument: "${error?.message}".`);
+      await this._destroyScripting();
+      return;
+    }
 
     this._internalEvents.set("updatefromsandbox", event => {
       if (event?.source !== window) {
@@ -8361,10 +8367,9 @@ class PDFScriptingManager {
 
     if (initialize) {
       this._closeCapability = (0, _pdfjsLib.createPromiseCapability)();
-      this._pageEventsReady = true;
     }
 
-    if (!this._pageEventsReady) {
+    if (!this._closeCapability) {
       return;
     }
 
@@ -8400,7 +8405,7 @@ class PDFScriptingManager {
     const pdfDocument = this._pdfDocument,
           visitedPages = this._visitedPages;
 
-    if (!this._pageEventsReady) {
+    if (!this._closeCapability) {
       return;
     }
 
@@ -8490,7 +8495,6 @@ class PDFScriptingManager {
 
     this._scripting = null;
     delete this._mouseState.isDown;
-    this._pageEventsReady = false;
     this._ready = false;
     this._destroyCapability?.resolve();
   }
@@ -9854,7 +9858,7 @@ class BaseViewer {
       throw new Error("Cannot initialize BaseViewer.");
     }
 
-    const viewerVersion = '2.9.359';
+    const viewerVersion = '2.10.377';
 
     if (_pdfjsLib.version !== viewerVersion) {
       throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version 
"${viewerVersion}".`);
@@ -11328,6 +11332,7 @@ exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
+exports.fixupLangCode = fixupLangCode;
 exports.getL10nFallback = getL10nFallback;
 exports.NullL10n = void 0;
 const DEFAULT_L10N_STRINGS = {
@@ -11397,6 +11402,27 @@ function getL10nFallback(key, args) {
   return DEFAULT_L10N_STRINGS[key] || "";
 }
 
+const PARTIAL_LANG_CODES = {
+  en: "en-US",
+  es: "es-ES",
+  fy: "fy-NL",
+  ga: "ga-IE",
+  gu: "gu-IN",
+  hi: "hi-IN",
+  hy: "hy-AM",
+  nb: "nb-NO",
+  ne: "ne-NP",
+  nn: "nn-NO",
+  pa: "pa-IN",
+  pt: "pt-PT",
+  sv: "sv-SE",
+  zh: "zh-CN"
+};
+
+function fixupLangCode(langCode) {
+  return PARTIAL_LANG_CODES[langCode?.toLowerCase()] || langCode;
+}
+
 function formatL10nValue(text, args) {
   if (!args) {
     return text;
@@ -11568,22 +11594,32 @@ class PDFPageView {
     this.zoomLayer = null;
   }
 
-  reset(keepZoomLayer = false, keepAnnotations = false) {
-    this.cancelRendering(keepAnnotations);
+  reset({
+    keepZoomLayer = false,
+    keepAnnotationLayer = false,
+    keepXfaLayer = false
+  } = {}) {
+    this.cancelRendering({
+      keepAnnotationLayer,
+      keepXfaLayer
+    });
     this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
     const div = this.div;
     div.style.width = Math.floor(this.viewport.width) + "px";
     div.style.height = Math.floor(this.viewport.height) + "px";
-    const childNodes = div.childNodes;
-    const currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;
-    const currentAnnotationNode = keepAnnotations && this.annotationLayer?.div || null;
-    const currentXfaLayerNode = this.xfaLayer?.div || null;
+    const childNodes = div.childNodes,
+          zoomLayerNode = keepZoomLayer && this.zoomLayer || null,
+          annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null,
+          xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null;
 
     for (let i = childNodes.length - 1; i >= 0; i--) {
       const node = childNodes[i];
 
-      if (currentZoomLayerNode === node || currentAnnotationNode === node || currentXfaLayerNode === node) {
-        continue;
+      switch (node) {
+        case zoomLayerNode:
+        case annotationLayerNode:
+        case xfaLayerNode:
+          continue;
       }
 
       div.removeChild(node);
@@ -11591,14 +11627,15 @@ class PDFPageView {
 
     div.removeAttribute("data-loaded");
 
-    if (currentAnnotationNode) {
+    if (annotationLayerNode) {
       this.annotationLayer.hide();
-    } else if (this.annotationLayer) {
-      this.annotationLayer.cancel();
-      this.annotationLayer = null;
     }
 
-    if (!currentZoomLayerNode) {
+    if (xfaLayerNode) {
+      this.xfaLayer.hide();
+    }
+
+    if (!zoomLayerNode) {
       if (this.canvas) {
         this.paintedViewportMap.delete(this.canvas);
         this.canvas.width = 0;
@@ -11641,7 +11678,11 @@ class PDFPageView {
     });
 
     if (this.svg) {
-      this.cssTransform(this.svg, true);
+      this.cssTransform({
+        target: this.svg,
+        redrawAnnotationLayer: true,
+        redrawXfaLayer: true
+      });
       this.eventBus.dispatch("pagerendered", {
         source: this,
         pageNumber: this.id,
@@ -11664,7 +11705,11 @@ class PDFPageView {
 
     if (this.canvas) {
       if (this.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) {
-        this.cssTransform(this.canvas, true);
+        this.cssTransform({
+          target: this.canvas,
+          redrawAnnotationLayer: true,
+          redrawXfaLayer: true
+        });
         this.eventBus.dispatch("pagerendered", {
           source: this,
           pageNumber: this.id,
@@ -11682,13 +11727,22 @@ class PDFPageView {
     }
 
     if (this.zoomLayer) {
-      this.cssTransform(this.zoomLayer.firstChild);
+      this.cssTransform({
+        target: this.zoomLayer.firstChild
+      });
     }
 
-    this.reset(true, true);
+    this.reset({
+      keepZoomLayer: true,
+      keepAnnotationLayer: true,
+      keepXfaLayer: true
+    });
   }
 
-  cancelRendering(keepAnnotations = false) {
+  cancelRendering({
+    keepAnnotationLayer = false,
+    keepXfaLayer = false
+  } = {}) {
     if (this.paintTask) {
       this.paintTask.cancel();
       this.paintTask = null;
@@ -11701,11 +11755,16 @@ class PDFPageView {
       this.textLayer = null;
     }
 
-    if (!keepAnnotations && this.annotationLayer) {
+    if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) {
       this.annotationLayer.cancel();
       this.annotationLayer = null;
     }
 
+    if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {
+      this.xfaLayer.cancel();
+      this.xfaLayer = null;
+    }
+
     if (this._onTextLayerRendered) {
       this.eventBus._off("textlayerrendered", this._onTextLayerRendered);
 
@@ -11713,7 +11772,11 @@ class PDFPageView {
     }
   }
 
-  cssTransform(target, redrawAnnotations = false) {
+  cssTransform({
+    target,
+    redrawAnnotationLayer = false,
+    redrawXfaLayer = false
+  }) {
     const width = this.viewport.width;
     const height = this.viewport.height;
     const div = this.div;
@@ -11773,11 +11836,11 @@ class PDFPageView {
       textLayerDiv.style.transformOrigin = "0% 0%";
     }
 
-    if (redrawAnnotations && this.annotationLayer) {
+    if (redrawAnnotationLayer && this.annotationLayer) {
       this._renderAnnotationLayer();
     }
 
-    if (this.xfaLayer) {
+    if (redrawXfaLayer && this.xfaLayer) {
       this._renderXfaLayer();
     }
   }
@@ -11846,6 +11909,11 @@ class PDFPageView {
     }
 
     this.textLayer = textLayer;
+
+    if (this.xfaLayer?.div) {
+      div.appendChild(this.xfaLayer.div);
+    }
+
     let renderContinueCallback = null;
 
     if (this.renderingQueue) {
@@ -12439,7 +12507,7 @@ class TextLayerBuilder {
     function beginText(begin, className) {
       const divIdx = begin.divIdx;
       textDivs[divIdx].textContent = "";
-      appendTextToDiv(divIdx, 0, begin.offset, className);
+      return appendTextToDiv(divIdx, 0, begin.offset, className);
     }
 
     function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
@@ -12449,13 +12517,14 @@ class TextLayerBuilder {
 
       if (className) {
         const span = document.createElement("span");
-        span.className = className;
+        span.className = `${className} appended`;
         span.appendChild(node);
         div.appendChild(span);
-        return;
+        return className.includes("selected") ? span.offsetLeft : 0;
       }
 
       div.appendChild(node);
+      return 0;
     }
 
     let i0 = selectedMatchIdx,
@@ -12474,14 +12543,7 @@ class TextLayerBuilder {
       const end = match.end;
       const isSelected = isSelectedPage && i === selectedMatchIdx;
       const highlightSuffix = isSelected ? " selected" : "";
-
-      if (isSelected) {
-        findController.scrollMatchIntoView({
-          element: textDivs[begin.divIdx],
-          pageIndex: pageIdx,
-          matchIndex: selectedMatchIdx
-        });
-      }
+      let selectedLeft = 0;
 
       if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
         if (prevEnd !== null) {
@@ -12494,9 +12556,9 @@ class TextLayerBuilder {
       }
 
       if (begin.divIdx === end.divIdx) {
-        appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + highlightSuffix);
+        selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, end.offset, "highlight" + 
highlightSuffix);
       } else {
-        appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + highlightSuffix);
+        selectedLeft = appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, "highlight begin" + 
highlightSuffix);
 
         for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
           textDivs[n0].className = "highlight middle" + highlightSuffix;
@@ -12506,6 +12568,15 @@ class TextLayerBuilder {
       }
 
       prevEnd = end;
+
+      if (isSelected) {
+        findController.scrollMatchIntoView({
+          element: textDivs[begin.divIdx],
+          selectedLeft,
+          pageIndex: pageIdx,
+          matchIndex: selectedMatchIdx
+        });
+      }
     }
 
     if (prevEnd) {
@@ -12642,16 +12713,38 @@ class XfaLayerBuilder {
   constructor({
     pageDiv,
     pdfPage,
+    xfaHtml,
     annotationStorage
   }) {
     this.pageDiv = pageDiv;
     this.pdfPage = pdfPage;
+    this.xfaHtml = xfaHtml;
     this.annotationStorage = annotationStorage;
     this.div = null;
     this._cancelled = false;
   }
 
   render(viewport, intent = "display") {
+    if (intent === "print") {
+      const parameters = {
+        viewport: viewport.clone({
+          dontFlip: true
+        }),
+        div: this.div,
+        xfa: this.xfaHtml,
+        page: null,
+        annotationStorage: this.annotationStorage,
+        intent
+      };
+      const div = document.createElement("div");
+      this.pageDiv.appendChild(div);
+      parameters.div = div;
+
+      _pdfjsLib.XfaLayer.render(parameters);
+
+      return Promise.resolve();
+    }
+
     return this.pdfPage.getXfa().then(xfa => {
       if (this._cancelled) {
         return;
@@ -12664,7 +12757,8 @@ class XfaLayerBuilder {
         div: this.div,
         xfa,
         page: this.pdfPage,
-        annotationStorage: this.annotationStorage
+        annotationStorage: this.annotationStorage,
+        intent
       };
 
       if (this.div) {
@@ -12698,11 +12792,12 @@ class XfaLayerBuilder {
 exports.XfaLayerBuilder = XfaLayerBuilder;
 
 class DefaultXfaLayerFactory {
-  createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null) {
+  createXfaLayerBuilder(pageDiv, pdfPage, annotationStorage = null, xfaHtml = null) {
     return new XfaLayerBuilder({
       pageDiv,
       pdfPage,
-      annotationStorage
+      annotationStorage,
+      xfaHtml
     });
   }
 
@@ -13844,7 +13939,7 @@ class GenericL10n {
   constructor(lang) {
     this._lang = lang;
     this._ready = new Promise((resolve, reject) => {
-      webL10n.setLanguage(lang, () => {
+      webL10n.setLanguage((0, _l10n_utils.fixupLangCode)(lang), () => {
         resolve(webL10n);
       });
     });
@@ -14777,6 +14872,8 @@ exports.PDFPrintService = PDFPrintService;
 
 var _app = __webpack_require__(3);
 
+var _print_utils = __webpack_require__(46);
+
 var _viewer_compatibility = __webpack_require__(2);
 
 let activeService = null;
@@ -14865,6 +14962,11 @@ PDFPrintService.prototype = {
   },
 
   renderPages() {
+    if (this.pdfDocument.isPureXfa) {
+      (0, _print_utils.getXfaHtmlForPrinting)(this.printContainer, this.pdfDocument);
+      return Promise.resolve();
+    }
+
     const pageCount = this.pagesOverview.length;
 
     const renderNextPage = (resolve, reject) => {
@@ -14900,6 +15002,7 @@ PDFPrintService.prototype = {
     }
 
     const wrapper = document.createElement("div");
+    wrapper.className = "printedPage";
     wrapper.appendChild(img);
     this.printContainer.appendChild(wrapper);
     return new Promise(function (resolve, reject) {
@@ -15053,6 +15156,40 @@ _app.PDFPrintServiceFactory.instance = {
 
 };
 
+/***/ }),
+/* 46 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.getXfaHtmlForPrinting = getXfaHtmlForPrinting;
+
+var _ui_utils = __webpack_require__(4);
+
+var _xfa_layer_builder = __webpack_require__(34);
+
+var _pdfjsLib = __webpack_require__(5);
+
+function getXfaHtmlForPrinting(printContainer, pdfDocument) {
+  const xfaHtml = pdfDocument.allXfaHtml;
+  const factory = new _xfa_layer_builder.DefaultXfaLayerFactory();
+  const scale = Math.round(_ui_utils.CSS_UNITS * 100) / 100;
+
+  for (const xfaPage of xfaHtml.children) {
+    const page = document.createElement("div");
+    page.className = "xfaPrintedPage";
+    printContainer.appendChild(page);
+    const builder = factory.createXfaLayerBuilder(page, null, pdfDocument.annotationStorage, xfaPage);
+    const viewport = (0, _pdfjsLib.getXfaPageViewport)(xfaPage, {
+      scale
+    });
+    builder.render(viewport, "print");
+  }
+}
+
 /***/ })
 /******/       ]);
 /************************************************************************/
@@ -15107,8 +15244,8 @@ var _app_options = __webpack_require__(1);
 
 var _app = __webpack_require__(3);
 
-const pdfjsVersion = '2.9.359';
-const pdfjsBuild = 'e667c8cbc';
+const pdfjsVersion = '2.10.377';
+const pdfjsBuild = '156762c48';
 window.PDFViewerApplication = _app.PDFViewerApplication;
 window.PDFViewerApplicationOptions = _app_options.AppOptions;
 ;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]